ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 7061
Committed: Mon Jan 18 18:56:34 2016 UTC (9 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 221872 byte(s)
Log Message:
- Rebuilt conf_parser.c

File Contents

# User Rev Content
1 michael 5417 /* A Bison parser, made by GNU Bison 3.0.4. */
2 michael 913
3 michael 1133 /* Bison implementation for Yacc-like parsers in C
4 michael 2473
5 michael 5398 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6 michael 2473
7 michael 967 This program is free software: you can redistribute it and/or modify
8 michael 913 it under the terms of the GNU General Public License as published by
9 michael 967 the Free Software Foundation, either version 3 of the License, or
10     (at your option) any later version.
11 michael 2473
12 michael 913 This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     GNU General Public License for more details.
16 michael 2473
17 michael 913 You should have received a copy of the GNU General Public License
18 michael 967 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 michael 913
20     /* As a special exception, you may create a larger work that contains
21     part or all of the Bison parser skeleton and distribute that work
22     under terms of your choice, so long as that work isn't itself a
23     parser generator using the skeleton or a modified version thereof
24     as a parser skeleton. Alternatively, if you modify or redistribute
25     the parser skeleton itself, you may (at your option) remove this
26     special exception, which will cause the skeleton and the resulting
27     Bison output files to be licensed under the GNU General Public
28     License without this special exception.
29 michael 2473
30 michael 913 This special exception was added by the Free Software Foundation in
31     version 2.2 of Bison. */
32    
33     /* C LALR(1) parser skeleton written by Richard Stallman, by
34     simplifying the original so-called "semantic" parser. */
35    
36     /* All symbols defined below should begin with yy or YY, to avoid
37     infringing on user name space. This should be done even for local
38     variables, as they might otherwise be expanded by user macros.
39     There are some unavoidable exceptions within include files to
40     define necessary library symbols; they are noted "INFRINGES ON
41     USER NAME SPACE" below. */
42    
43     /* Identify Bison output. */
44     #define YYBISON 1
45    
46     /* Bison version. */
47 michael 5417 #define YYBISON_VERSION "3.0.4"
48 michael 913
49     /* Skeleton name. */
50     #define YYSKELETON_NAME "yacc.c"
51    
52     /* Pure parsers. */
53     #define YYPURE 0
54    
55 michael 967 /* Push parsers. */
56     #define YYPUSH 0
57    
58     /* Pull parsers. */
59     #define YYPULL 1
60    
61 michael 913
62    
63    
64 michael 967 /* Copy the first part of user declarations. */
65 michael 3229 #line 28 "conf_parser.y" /* yacc.c:339 */
66 michael 967
67    
68     #include <sys/types.h>
69     #include <string.h>
70    
71 michael 1009 #include "config.h"
72 michael 967 #include "stdinc.h"
73     #include "ircd.h"
74     #include "list.h"
75 michael 1309 #include "conf.h"
76 michael 1632 #include "conf_class.h"
77 michael 4545 #include "conf_pseudo.h"
78 michael 967 #include "event.h"
79 michael 6162 #include "id.h"
80 michael 1309 #include "log.h"
81 michael 6319 #include "client.h" /* for UMODE_SERVNOTICE only */
82 michael 967 #include "irc_string.h"
83     #include "memory.h"
84     #include "modules.h"
85 michael 3347 #include "server.h"
86 michael 967 #include "hostmask.h"
87     #include "send.h"
88     #include "listener.h"
89     #include "resv.h"
90     #include "numeric.h"
91 michael 3347 #include "user.h"
92 michael 2150 #include "motd.h"
93 michael 967
94     #ifdef HAVE_LIBCRYPTO
95     #include <openssl/rsa.h>
96     #include <openssl/bio.h>
97     #include <openssl/pem.h>
98 michael 1306 #include <openssl/dh.h>
99 michael 967 #endif
100    
101 michael 1752 #include "rsa.h"
102    
103 michael 1329 int yylex(void);
104    
105 michael 1646 static struct
106 michael 967 {
107 michael 3473 struct
108     {
109 michael 1646 dlink_list list;
110     } mask,
111     leaf,
112     hub;
113 michael 967
114 michael 3473 struct
115     {
116 michael 1646 char buf[IRCD_BUFSIZE];
117     } name,
118 michael 4545 nick,
119 michael 1646 user,
120     host,
121     addr,
122 michael 1647 bind,
123 michael 1646 file,
124 michael 1647 ciph,
125 michael 2228 cert,
126 michael 1647 rpass,
127     spass,
128 michael 5557 whois,
129 michael 4545 class,
130     target,
131     prepend,
132     command;
133 michael 1646
134 michael 3473 struct
135     {
136 michael 1646 unsigned int value;
137     } flags,
138     modes,
139 michael 1647 size,
140     type,
141 michael 1646 port,
142 michael 1647 aftype,
143 michael 1646 ping_freq,
144     max_perip,
145     con_freq,
146 michael 1783 min_idle,
147     max_idle,
148 michael 1646 max_total,
149     max_global,
150     max_local,
151     max_ident,
152     max_sendq,
153     max_recvq,
154 michael 3933 max_channels,
155 michael 1646 cidr_bitlen_ipv4,
156     cidr_bitlen_ipv6,
157     number_per_cidr;
158     } block_state;
159    
160 michael 967 static void
161 michael 1646 reset_block_state(void)
162 michael 967 {
163 michael 4915 dlink_node *node = NULL, *node_next = NULL;
164 michael 1646
165 michael 4915 DLINK_FOREACH_SAFE(node, node_next, block_state.mask.list.head)
166 michael 1646 {
167 michael 7032 xfree(node->data);
168 michael 4915 dlinkDelete(node, &block_state.mask.list);
169     free_dlink_node(node);
170 michael 1646 }
171    
172 michael 4915 DLINK_FOREACH_SAFE(node, node_next, block_state.leaf.list.head)
173 michael 1646 {
174 michael 7032 xfree(node->data);
175 michael 4915 dlinkDelete(node, &block_state.leaf.list);
176     free_dlink_node(node);
177 michael 1646 }
178    
179 michael 4915 DLINK_FOREACH_SAFE(node, node_next, block_state.hub.list.head)
180 michael 1646 {
181 michael 7032 xfree(node->data);
182 michael 4915 dlinkDelete(node, &block_state.hub.list);
183     free_dlink_node(node);
184 michael 1646 }
185    
186     memset(&block_state, 0, sizeof(block_state));
187 michael 967 }
188    
189    
190 michael 6162 #line 191 "conf_parser.c" /* yacc.c:339 */
191 michael 967
192 michael 2570 # ifndef YY_NULLPTR
193 michael 1425 # if defined __cplusplus && 201103L <= __cplusplus
194 michael 2570 # define YY_NULLPTR nullptr
195 michael 1425 # else
196 michael 2570 # define YY_NULLPTR 0
197 michael 1425 # endif
198     # endif
199    
200 michael 967 /* Enabling verbose error messages. */
201     #ifdef YYERROR_VERBOSE
202     # undef YYERROR_VERBOSE
203     # define YYERROR_VERBOSE 1
204     #else
205     # define YYERROR_VERBOSE 0
206     #endif
207    
208 michael 1466 /* In a future release of Bison, this section will be replaced
209     by #include "y.tab.h". */
210 michael 1736 #ifndef YY_YY_CONF_PARSER_H_INCLUDED
211     # define YY_YY_CONF_PARSER_H_INCLUDED
212 michael 2473 /* Debug traces. */
213 michael 1466 #ifndef YYDEBUG
214     # define YYDEBUG 0
215 michael 967 #endif
216 michael 1466 #if YYDEBUG
217     extern int yydebug;
218     #endif
219 michael 967
220 michael 2473 /* Token type. */
221 michael 913 #ifndef YYTOKENTYPE
222     # define YYTOKENTYPE
223 michael 2473 enum yytokentype
224     {
225     ACCEPT_PASSWORD = 258,
226     ADMIN = 259,
227     AFTYPE = 260,
228     ANTI_NICK_FLOOD = 261,
229     ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
230     AUTOCONN = 263,
231 michael 4313 AWAY_COUNT = 264,
232     AWAY_TIME = 265,
233     BYTES = 266,
234     KBYTES = 267,
235     MBYTES = 268,
236     CALLER_ID_WAIT = 269,
237     CAN_FLOOD = 270,
238     CHANNEL = 271,
239     CIDR_BITLEN_IPV4 = 272,
240     CIDR_BITLEN_IPV6 = 273,
241     CLASS = 274,
242 michael 6490 CLOSE = 275,
243     CONNECT = 276,
244     CONNECTFREQ = 277,
245     CYCLE_ON_HOST_CHANGE = 278,
246     DEFAULT_FLOODCOUNT = 279,
247     DEFAULT_JOIN_FLOOD_COUNT = 280,
248     DEFAULT_JOIN_FLOOD_TIME = 281,
249     DEFAULT_MAX_CLIENTS = 282,
250     DENY = 283,
251     DESCRIPTION = 284,
252     DIE = 285,
253     DISABLE_AUTH = 286,
254     DISABLE_FAKE_CHANNELS = 287,
255     DISABLE_REMOTE_COMMANDS = 288,
256     DLINE_MIN_CIDR = 289,
257     DLINE_MIN_CIDR6 = 290,
258     DOTS_IN_IDENT = 291,
259     EMAIL = 292,
260     ENCRYPTED = 293,
261     EXCEED_LIMIT = 294,
262     EXEMPT = 295,
263     FAILED_OPER_NOTICE = 296,
264     FLATTEN_LINKS = 297,
265 michael 6603 FLATTEN_LINKS_DELAY = 298,
266     FLATTEN_LINKS_FILE = 299,
267     GECOS = 300,
268     GENERAL = 301,
269     HIDDEN = 302,
270     HIDDEN_NAME = 303,
271     HIDE_CHANS = 304,
272     HIDE_IDLE = 305,
273     HIDE_IDLE_FROM_OPERS = 306,
274     HIDE_SERVER_IPS = 307,
275     HIDE_SERVERS = 308,
276     HIDE_SERVICES = 309,
277     HOST = 310,
278     HUB = 311,
279     HUB_MASK = 312,
280     IGNORE_BOGUS_TS = 313,
281     INVISIBLE_ON_CONNECT = 314,
282     INVITE_CLIENT_COUNT = 315,
283     INVITE_CLIENT_TIME = 316,
284 michael 6801 INVITE_DELAY_CHANNEL = 317,
285     IP = 318,
286     IRCD_AUTH = 319,
287     IRCD_FLAGS = 320,
288     IRCD_SID = 321,
289     JOIN = 322,
290     KILL = 323,
291     KILL_CHASE_TIME_LIMIT = 324,
292     KLINE = 325,
293     KLINE_EXEMPT = 326,
294     KLINE_MIN_CIDR = 327,
295     KLINE_MIN_CIDR6 = 328,
296     KNOCK_CLIENT_COUNT = 329,
297     KNOCK_CLIENT_TIME = 330,
298     KNOCK_DELAY_CHANNEL = 331,
299     LEAF_MASK = 332,
300     LISTEN = 333,
301     MASK = 334,
302     MAX_ACCEPT = 335,
303     MAX_BANS = 336,
304     MAX_CHANNELS = 337,
305     MAX_GLOBAL = 338,
306     MAX_IDENT = 339,
307     MAX_IDLE = 340,
308     MAX_LOCAL = 341,
309     MAX_NICK_CHANGES = 342,
310     MAX_NICK_LENGTH = 343,
311     MAX_NICK_TIME = 344,
312     MAX_NUMBER = 345,
313     MAX_TARGETS = 346,
314     MAX_TOPIC_LENGTH = 347,
315     MAX_WATCH = 348,
316     MIN_IDLE = 349,
317     MIN_NONWILDCARD = 350,
318     MIN_NONWILDCARD_SIMPLE = 351,
319     MODULE = 352,
320     MODULES = 353,
321     MOTD = 354,
322     NAME = 355,
323     NEED_IDENT = 356,
324     NEED_PASSWORD = 357,
325     NETWORK_DESC = 358,
326     NETWORK_NAME = 359,
327     NICK = 360,
328     NO_OPER_FLOOD = 361,
329     NO_TILDE = 362,
330     NUMBER = 363,
331     NUMBER_PER_CIDR = 364,
332     NUMBER_PER_IP = 365,
333     OPER_ONLY_UMODES = 366,
334     OPER_UMODES = 367,
335     OPERATOR = 368,
336     OPERS_BYPASS_CALLERID = 369,
337     PACE_WAIT = 370,
338     PACE_WAIT_SIMPLE = 371,
339     PASSWORD = 372,
340     PATH = 373,
341     PING_COOKIE = 374,
342     PING_TIME = 375,
343     PORT = 376,
344     QSTRING = 377,
345     RANDOM_IDLE = 378,
346     REASON = 379,
347     REDIRPORT = 380,
348     REDIRSERV = 381,
349     REHASH = 382,
350     REMOTE = 383,
351     REMOTEBAN = 384,
352     RESV = 385,
353     RESV_EXEMPT = 386,
354     RSA_PRIVATE_KEY_FILE = 387,
355     SECONDS = 388,
356     MINUTES = 389,
357     HOURS = 390,
358     DAYS = 391,
359     WEEKS = 392,
360     MONTHS = 393,
361     YEARS = 394,
362     SEND_PASSWORD = 395,
363     SENDQ = 396,
364     SERVERHIDE = 397,
365     SERVERINFO = 398,
366     SHORT_MOTD = 399,
367     SPOOF = 400,
368     SPOOF_NOTICE = 401,
369     SQUIT = 402,
370     SSL_CERTIFICATE_FILE = 403,
371     SSL_CERTIFICATE_FINGERPRINT = 404,
372     SSL_CONNECTION_REQUIRED = 405,
373     SSL_DH_ELLIPTIC_CURVE = 406,
374     SSL_DH_PARAM_FILE = 407,
375     SSL_MESSAGE_DIGEST_ALGORITHM = 408,
376     STATS_E_DISABLED = 409,
377     STATS_I_OPER_ONLY = 410,
378     STATS_K_OPER_ONLY = 411,
379     STATS_M_OPER_ONLY = 412,
380     STATS_O_OPER_ONLY = 413,
381     STATS_P_OPER_ONLY = 414,
382     STATS_U_OPER_ONLY = 415,
383     T_ALL = 416,
384     T_BOTS = 417,
385     T_CALLERID = 418,
386     T_CCONN = 419,
387     T_COMMAND = 420,
388     T_CLUSTER = 421,
389     T_DEAF = 422,
390     T_DEBUG = 423,
391     T_DLINE = 424,
392     T_EXTERNAL = 425,
393     T_FARCONNECT = 426,
394     T_FILE = 427,
395     T_FULL = 428,
396     T_GLOBOPS = 429,
397     T_INVISIBLE = 430,
398     T_IPV4 = 431,
399     T_IPV6 = 432,
400     T_LOCOPS = 433,
401     T_LOG = 434,
402     T_NCHANGE = 435,
403     T_NONONREG = 436,
404     T_OPME = 437,
405     T_PREPEND = 438,
406     T_PSEUDO = 439,
407     T_RECVQ = 440,
408     T_REJ = 441,
409     T_RESTART = 442,
410     T_SERVER = 443,
411     T_SERVICE = 444,
412     T_SERVNOTICE = 445,
413     T_SET = 446,
414     T_SHARED = 447,
415     T_SIZE = 448,
416     T_SKILL = 449,
417     T_SOFTCALLERID = 450,
418     T_SPY = 451,
419     T_SSL = 452,
420     T_SSL_CIPHER_LIST = 453,
421     T_TARGET = 454,
422     T_UMODES = 455,
423     T_UNAUTH = 456,
424     T_UNDLINE = 457,
425     T_UNLIMITED = 458,
426     T_UNRESV = 459,
427     T_UNXLINE = 460,
428     T_WALLOP = 461,
429     T_WALLOPS = 462,
430     T_WEBIRC = 463,
431     TBOOL = 464,
432     THROTTLE_COUNT = 465,
433     THROTTLE_TIME = 466,
434     TKLINE_EXPIRE_NOTICES = 467,
435     TMASKED = 468,
436     TS_MAX_DELTA = 469,
437     TS_WARN_DELTA = 470,
438     TWODOTS = 471,
439     TYPE = 472,
440     UNKLINE = 473,
441     USE_LOGGING = 474,
442     USER = 475,
443     VHOST = 476,
444     VHOST6 = 477,
445     WARN_NO_CONNECT_BLOCK = 478,
446     WHOIS = 479,
447     XLINE = 480,
448     XLINE_EXEMPT = 481
449 michael 2473 };
450 michael 913 #endif
451     /* Tokens. */
452     #define ACCEPT_PASSWORD 258
453 michael 1520 #define ADMIN 259
454     #define AFTYPE 260
455     #define ANTI_NICK_FLOOD 261
456     #define ANTI_SPAM_EXIT_MESSAGE_TIME 262
457     #define AUTOCONN 263
458 michael 4313 #define AWAY_COUNT 264
459     #define AWAY_TIME 265
460     #define BYTES 266
461     #define KBYTES 267
462     #define MBYTES 268
463     #define CALLER_ID_WAIT 269
464     #define CAN_FLOOD 270
465     #define CHANNEL 271
466     #define CIDR_BITLEN_IPV4 272
467     #define CIDR_BITLEN_IPV6 273
468     #define CLASS 274
469 michael 6490 #define CLOSE 275
470     #define CONNECT 276
471     #define CONNECTFREQ 277
472     #define CYCLE_ON_HOST_CHANGE 278
473     #define DEFAULT_FLOODCOUNT 279
474     #define DEFAULT_JOIN_FLOOD_COUNT 280
475     #define DEFAULT_JOIN_FLOOD_TIME 281
476     #define DEFAULT_MAX_CLIENTS 282
477     #define DENY 283
478     #define DESCRIPTION 284
479     #define DIE 285
480     #define DISABLE_AUTH 286
481     #define DISABLE_FAKE_CHANNELS 287
482     #define DISABLE_REMOTE_COMMANDS 288
483     #define DLINE_MIN_CIDR 289
484     #define DLINE_MIN_CIDR6 290
485     #define DOTS_IN_IDENT 291
486     #define EMAIL 292
487     #define ENCRYPTED 293
488     #define EXCEED_LIMIT 294
489     #define EXEMPT 295
490     #define FAILED_OPER_NOTICE 296
491     #define FLATTEN_LINKS 297
492 michael 6603 #define FLATTEN_LINKS_DELAY 298
493     #define FLATTEN_LINKS_FILE 299
494     #define GECOS 300
495     #define GENERAL 301
496     #define HIDDEN 302
497     #define HIDDEN_NAME 303
498     #define HIDE_CHANS 304
499     #define HIDE_IDLE 305
500     #define HIDE_IDLE_FROM_OPERS 306
501     #define HIDE_SERVER_IPS 307
502     #define HIDE_SERVERS 308
503     #define HIDE_SERVICES 309
504     #define HOST 310
505     #define HUB 311
506     #define HUB_MASK 312
507     #define IGNORE_BOGUS_TS 313
508     #define INVISIBLE_ON_CONNECT 314
509     #define INVITE_CLIENT_COUNT 315
510     #define INVITE_CLIENT_TIME 316
511 michael 6801 #define INVITE_DELAY_CHANNEL 317
512     #define IP 318
513     #define IRCD_AUTH 319
514     #define IRCD_FLAGS 320
515     #define IRCD_SID 321
516     #define JOIN 322
517     #define KILL 323
518     #define KILL_CHASE_TIME_LIMIT 324
519     #define KLINE 325
520     #define KLINE_EXEMPT 326
521     #define KLINE_MIN_CIDR 327
522     #define KLINE_MIN_CIDR6 328
523     #define KNOCK_CLIENT_COUNT 329
524     #define KNOCK_CLIENT_TIME 330
525     #define KNOCK_DELAY_CHANNEL 331
526     #define LEAF_MASK 332
527     #define LISTEN 333
528     #define MASK 334
529     #define MAX_ACCEPT 335
530     #define MAX_BANS 336
531     #define MAX_CHANNELS 337
532     #define MAX_GLOBAL 338
533     #define MAX_IDENT 339
534     #define MAX_IDLE 340
535     #define MAX_LOCAL 341
536     #define MAX_NICK_CHANGES 342
537     #define MAX_NICK_LENGTH 343
538     #define MAX_NICK_TIME 344
539     #define MAX_NUMBER 345
540     #define MAX_TARGETS 346
541     #define MAX_TOPIC_LENGTH 347
542     #define MAX_WATCH 348
543     #define MIN_IDLE 349
544     #define MIN_NONWILDCARD 350
545     #define MIN_NONWILDCARD_SIMPLE 351
546     #define MODULE 352
547     #define MODULES 353
548     #define MOTD 354
549     #define NAME 355
550     #define NEED_IDENT 356
551     #define NEED_PASSWORD 357
552     #define NETWORK_DESC 358
553     #define NETWORK_NAME 359
554     #define NICK 360
555     #define NO_OPER_FLOOD 361
556     #define NO_TILDE 362
557     #define NUMBER 363
558     #define NUMBER_PER_CIDR 364
559     #define NUMBER_PER_IP 365
560     #define OPER_ONLY_UMODES 366
561     #define OPER_UMODES 367
562     #define OPERATOR 368
563     #define OPERS_BYPASS_CALLERID 369
564     #define PACE_WAIT 370
565     #define PACE_WAIT_SIMPLE 371
566     #define PASSWORD 372
567     #define PATH 373
568     #define PING_COOKIE 374
569     #define PING_TIME 375
570     #define PORT 376
571     #define QSTRING 377
572     #define RANDOM_IDLE 378
573     #define REASON 379
574     #define REDIRPORT 380
575     #define REDIRSERV 381
576     #define REHASH 382
577     #define REMOTE 383
578     #define REMOTEBAN 384
579     #define RESV 385
580     #define RESV_EXEMPT 386
581     #define RSA_PRIVATE_KEY_FILE 387
582     #define SECONDS 388
583     #define MINUTES 389
584     #define HOURS 390
585     #define DAYS 391
586     #define WEEKS 392
587     #define MONTHS 393
588     #define YEARS 394
589     #define SEND_PASSWORD 395
590     #define SENDQ 396
591     #define SERVERHIDE 397
592     #define SERVERINFO 398
593     #define SHORT_MOTD 399
594     #define SPOOF 400
595     #define SPOOF_NOTICE 401
596     #define SQUIT 402
597     #define SSL_CERTIFICATE_FILE 403
598     #define SSL_CERTIFICATE_FINGERPRINT 404
599     #define SSL_CONNECTION_REQUIRED 405
600     #define SSL_DH_ELLIPTIC_CURVE 406
601     #define SSL_DH_PARAM_FILE 407
602     #define SSL_MESSAGE_DIGEST_ALGORITHM 408
603     #define STATS_E_DISABLED 409
604     #define STATS_I_OPER_ONLY 410
605     #define STATS_K_OPER_ONLY 411
606     #define STATS_M_OPER_ONLY 412
607     #define STATS_O_OPER_ONLY 413
608     #define STATS_P_OPER_ONLY 414
609     #define STATS_U_OPER_ONLY 415
610     #define T_ALL 416
611     #define T_BOTS 417
612     #define T_CALLERID 418
613     #define T_CCONN 419
614     #define T_COMMAND 420
615     #define T_CLUSTER 421
616     #define T_DEAF 422
617     #define T_DEBUG 423
618     #define T_DLINE 424
619     #define T_EXTERNAL 425
620     #define T_FARCONNECT 426
621     #define T_FILE 427
622     #define T_FULL 428
623     #define T_GLOBOPS 429
624     #define T_INVISIBLE 430
625     #define T_IPV4 431
626     #define T_IPV6 432
627     #define T_LOCOPS 433
628     #define T_LOG 434
629     #define T_NCHANGE 435
630     #define T_NONONREG 436
631     #define T_OPME 437
632     #define T_PREPEND 438
633     #define T_PSEUDO 439
634     #define T_RECVQ 440
635     #define T_REJ 441
636     #define T_RESTART 442
637     #define T_SERVER 443
638     #define T_SERVICE 444
639     #define T_SERVNOTICE 445
640     #define T_SET 446
641     #define T_SHARED 447
642     #define T_SIZE 448
643     #define T_SKILL 449
644     #define T_SOFTCALLERID 450
645     #define T_SPY 451
646     #define T_SSL 452
647     #define T_SSL_CIPHER_LIST 453
648     #define T_TARGET 454
649     #define T_UMODES 455
650     #define T_UNAUTH 456
651     #define T_UNDLINE 457
652     #define T_UNLIMITED 458
653     #define T_UNRESV 459
654     #define T_UNXLINE 460
655     #define T_WALLOP 461
656     #define T_WALLOPS 462
657     #define T_WEBIRC 463
658     #define TBOOL 464
659     #define THROTTLE_COUNT 465
660     #define THROTTLE_TIME 466
661     #define TKLINE_EXPIRE_NOTICES 467
662     #define TMASKED 468
663     #define TS_MAX_DELTA 469
664     #define TS_WARN_DELTA 470
665     #define TWODOTS 471
666     #define TYPE 472
667     #define UNKLINE 473
668     #define USE_LOGGING 474
669     #define USER 475
670     #define VHOST 476
671     #define VHOST6 477
672     #define WARN_NO_CONNECT_BLOCK 478
673     #define WHOIS 479
674     #define XLINE 480
675     #define XLINE_EXEMPT 481
676 michael 913
677 michael 2473 /* Value type. */
678 michael 967 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
679 michael 5398
680 michael 2473 union YYSTYPE
681 michael 913 {
682 michael 6162 #line 153 "conf_parser.y" /* yacc.c:355 */
683 michael 913
684 michael 967 int number;
685     char *string;
686 michael 913
687 michael 6801 #line 688 "conf_parser.c" /* yacc.c:355 */
688 michael 2473 };
689 michael 5398
690     typedef union YYSTYPE YYSTYPE;
691 michael 967 # define YYSTYPE_IS_TRIVIAL 1
692 michael 913 # define YYSTYPE_IS_DECLARED 1
693     #endif
694    
695 michael 2473
696 michael 1466 extern YYSTYPE yylval;
697 michael 913
698 michael 1466 int yyparse (void);
699    
700 michael 1736 #endif /* !YY_YY_CONF_PARSER_H_INCLUDED */
701 michael 1466
702 michael 913 /* Copy the second part of user declarations. */
703    
704 michael 6801 #line 705 "conf_parser.c" /* yacc.c:358 */
705 michael 913
706     #ifdef short
707     # undef short
708     #endif
709    
710     #ifdef YYTYPE_UINT8
711     typedef YYTYPE_UINT8 yytype_uint8;
712     #else
713     typedef unsigned char yytype_uint8;
714     #endif
715    
716     #ifdef YYTYPE_INT8
717     typedef YYTYPE_INT8 yytype_int8;
718 michael 2473 #else
719 michael 913 typedef signed char yytype_int8;
720     #endif
721    
722     #ifdef YYTYPE_UINT16
723     typedef YYTYPE_UINT16 yytype_uint16;
724     #else
725     typedef unsigned short int yytype_uint16;
726     #endif
727    
728     #ifdef YYTYPE_INT16
729     typedef YYTYPE_INT16 yytype_int16;
730     #else
731     typedef short int yytype_int16;
732     #endif
733    
734     #ifndef YYSIZE_T
735     # ifdef __SIZE_TYPE__
736     # define YYSIZE_T __SIZE_TYPE__
737     # elif defined size_t
738     # define YYSIZE_T size_t
739 michael 2473 # elif ! defined YYSIZE_T
740 michael 913 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
741     # define YYSIZE_T size_t
742     # else
743     # define YYSIZE_T unsigned int
744     # endif
745     #endif
746    
747     #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
748    
749     #ifndef YY_
750 michael 1089 # if defined YYENABLE_NLS && YYENABLE_NLS
751 michael 913 # if ENABLE_NLS
752     # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
753 michael 1619 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
754 michael 913 # endif
755     # endif
756     # ifndef YY_
757 michael 1619 # define YY_(Msgid) Msgid
758 michael 913 # endif
759     #endif
760    
761 michael 2570 #ifndef YY_ATTRIBUTE
762     # if (defined __GNUC__ \
763     && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
764     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
765     # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
766     # else
767     # define YY_ATTRIBUTE(Spec) /* empty */
768 michael 1835 # endif
769     #endif
770    
771 michael 2570 #ifndef YY_ATTRIBUTE_PURE
772     # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
773     #endif
774    
775     #ifndef YY_ATTRIBUTE_UNUSED
776     # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
777     #endif
778    
779     #if !defined _Noreturn \
780     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
781     # if defined _MSC_VER && 1200 <= _MSC_VER
782     # define _Noreturn __declspec (noreturn)
783     # else
784     # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
785     # endif
786     #endif
787    
788 michael 913 /* Suppress unused-variable warnings by "using" E. */
789     #if ! defined lint || defined __GNUC__
790 michael 1619 # define YYUSE(E) ((void) (E))
791 michael 913 #else
792 michael 1619 # define YYUSE(E) /* empty */
793 michael 913 #endif
794    
795 michael 2473 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
796     /* Suppress an incorrect diagnostic about yylval being uninitialized. */
797     # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
798     _Pragma ("GCC diagnostic push") \
799     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
800     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
801     # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
802     _Pragma ("GCC diagnostic pop")
803 michael 913 #else
804 michael 2473 # define YY_INITIAL_VALUE(Value) Value
805 michael 913 #endif
806 michael 2473 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
807     # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
808     # define YY_IGNORE_MAYBE_UNINITIALIZED_END
809 michael 913 #endif
810 michael 2473 #ifndef YY_INITIAL_VALUE
811     # define YY_INITIAL_VALUE(Value) /* Nothing. */
812     #endif
813 michael 913
814 michael 2473
815 michael 913 #if ! defined yyoverflow || YYERROR_VERBOSE
816    
817     /* The parser invokes alloca or malloc; define the necessary symbols. */
818    
819     # ifdef YYSTACK_USE_ALLOCA
820     # if YYSTACK_USE_ALLOCA
821     # ifdef __GNUC__
822     # define YYSTACK_ALLOC __builtin_alloca
823     # elif defined __BUILTIN_VA_ARG_INCR
824     # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
825     # elif defined _AIX
826     # define YYSTACK_ALLOC __alloca
827     # elif defined _MSC_VER
828     # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
829     # define alloca _alloca
830     # else
831     # define YYSTACK_ALLOC alloca
832 michael 2473 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
833 michael 913 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
834 michael 1425 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
835 michael 1133 # ifndef EXIT_SUCCESS
836     # define EXIT_SUCCESS 0
837 michael 913 # endif
838     # endif
839     # endif
840     # endif
841     # endif
842    
843     # ifdef YYSTACK_ALLOC
844 michael 2473 /* Pacify GCC's 'empty if-body' warning. */
845     # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
846 michael 913 # ifndef YYSTACK_ALLOC_MAXIMUM
847     /* The OS might guarantee only one guard page at the bottom of the stack,
848     and a page size can be as small as 4096 bytes. So we cannot safely
849     invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
850     to allow for a few compiler-allocated temporary stack slots. */
851     # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
852     # endif
853     # else
854     # define YYSTACK_ALLOC YYMALLOC
855     # define YYSTACK_FREE YYFREE
856     # ifndef YYSTACK_ALLOC_MAXIMUM
857     # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
858     # endif
859 michael 1133 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
860 michael 913 && ! ((defined YYMALLOC || defined malloc) \
861 michael 2473 && (defined YYFREE || defined free)))
862 michael 913 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
863 michael 1133 # ifndef EXIT_SUCCESS
864     # define EXIT_SUCCESS 0
865 michael 913 # endif
866     # endif
867     # ifndef YYMALLOC
868     # define YYMALLOC malloc
869 michael 2473 # if ! defined malloc && ! defined EXIT_SUCCESS
870 michael 913 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
871     # endif
872     # endif
873     # ifndef YYFREE
874     # define YYFREE free
875 michael 2473 # if ! defined free && ! defined EXIT_SUCCESS
876 michael 913 void free (void *); /* INFRINGES ON USER NAME SPACE */
877     # endif
878     # endif
879     # endif
880     #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
881    
882    
883     #if (! defined yyoverflow \
884     && (! defined __cplusplus \
885 michael 2473 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
886 michael 913
887     /* A type that is properly aligned for any stack member. */
888     union yyalloc
889     {
890 michael 967 yytype_int16 yyss_alloc;
891     YYSTYPE yyvs_alloc;
892     };
893 michael 913
894     /* The size of the maximum gap between one aligned stack and the next. */
895     # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
896    
897     /* The size of an array large to enough to hold all stacks, each with
898     N elements. */
899     # define YYSTACK_BYTES(N) \
900     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
901     + YYSTACK_GAP_MAXIMUM)
902    
903 michael 1133 # define YYCOPY_NEEDED 1
904 michael 913
905     /* Relocate STACK from its old location to the new one. The
906     local variables YYSIZE and YYSTACKSIZE give the old and new number of
907     elements in the stack, and YYPTR gives the new location of the
908     stack. Advance YYPTR to a properly aligned location for the next
909     stack. */
910 michael 2473 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
911     do \
912     { \
913     YYSIZE_T yynewbytes; \
914     YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
915     Stack = &yyptr->Stack_alloc; \
916     yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
917     yyptr += yynewbytes / sizeof (*yyptr); \
918     } \
919     while (0)
920 michael 913
921     #endif
922    
923 michael 1133 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
924 michael 1425 /* Copy COUNT objects from SRC to DST. The source and destination do
925 michael 1133 not overlap. */
926     # ifndef YYCOPY
927     # if defined __GNUC__ && 1 < __GNUC__
928 michael 1425 # define YYCOPY(Dst, Src, Count) \
929     __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
930 michael 1133 # else
931 michael 1425 # define YYCOPY(Dst, Src, Count) \
932     do \
933     { \
934     YYSIZE_T yyi; \
935     for (yyi = 0; yyi < (Count); yyi++) \
936     (Dst)[yyi] = (Src)[yyi]; \
937     } \
938 michael 2473 while (0)
939 michael 1133 # endif
940     # endif
941     #endif /* !YYCOPY_NEEDED */
942    
943 michael 913 /* YYFINAL -- State number of the termination state. */
944     #define YYFINAL 2
945     /* YYLAST -- Last index in YYTABLE. */
946 michael 7061 #define YYLAST 1322
947 michael 913
948     /* YYNTOKENS -- Number of terminals. */
949 michael 6801 #define YYNTOKENS 233
950 michael 913 /* YYNNTS -- Number of nonterminals. */
951 michael 6801 #define YYNNTS 292
952 michael 913 /* YYNRULES -- Number of rules. */
953 michael 7061 #define YYNRULES 662
954 michael 2473 /* YYNSTATES -- Number of states. */
955 michael 7061 #define YYNSTATES 1304
956 michael 913
957 michael 2473 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
958     by yylex, with out-of-bounds checking. */
959 michael 913 #define YYUNDEFTOK 2
960 michael 6801 #define YYMAXUTOK 481
961 michael 913
962 michael 2473 #define YYTRANSLATE(YYX) \
963 michael 913 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
964    
965 michael 2473 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
966     as returned by yylex, without out-of-bounds checking. */
967 michael 1247 static const yytype_uint8 yytranslate[] =
968 michael 913 {
969     0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
970     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
971     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
972     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
973 michael 6801 2, 2, 2, 2, 231, 2, 2, 2, 2, 2,
974     2, 2, 2, 2, 2, 2, 2, 2, 232, 227,
975     2, 230, 2, 2, 2, 2, 2, 2, 2, 2,
976 michael 913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
977     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
978     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
979     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
980     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
981 michael 6801 2, 2, 2, 229, 2, 228, 2, 2, 2, 2,
982 michael 913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
983     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
984     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
985     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
986     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
987     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
988     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
989     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
990     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
991     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
992     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
993     2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
994     2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
995     5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
996     15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
997     25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
998     35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
999     45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1000     55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1001     65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1002     75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1003     85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1004     95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1005     105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1006     115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1007     125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1008     135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1009     145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1010     155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1011     165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1012     175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1013     185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1014     195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1015 michael 1751 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1016 michael 6603 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1017 michael 6801 225, 226
1018 michael 913 };
1019    
1020     #if YYDEBUG
1021 michael 2473 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1022 michael 913 static const yytype_uint16 yyrline[] =
1023     {
1024 michael 6801 0, 383, 383, 384, 387, 388, 389, 390, 391, 392,
1025     393, 394, 395, 396, 397, 398, 399, 400, 401, 402,
1026     403, 404, 405, 406, 407, 408, 409, 410, 414, 414,
1027     415, 416, 417, 418, 419, 420, 421, 422, 425, 425,
1028     426, 427, 428, 429, 436, 438, 438, 439, 439, 439,
1029     441, 447, 457, 459, 459, 460, 461, 462, 463, 464,
1030     465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1031     475, 476, 477, 480, 520, 578, 607, 615, 629, 657,
1032     672, 687, 697, 711, 720, 748, 776, 801, 823, 845,
1033     855, 857, 857, 858, 859, 860, 861, 863, 872, 881,
1034     895, 894, 912, 912, 913, 913, 913, 915, 921, 932,
1035     931, 950, 950, 951, 951, 951, 951, 951, 953, 959,
1036     965, 971, 993, 994, 994, 996, 996, 997, 999, 1006,
1037     1006, 1019, 1020, 1022, 1022, 1023, 1023, 1025, 1033, 1036,
1038     1042, 1041, 1047, 1047, 1048, 1052, 1056, 1060, 1064, 1068,
1039     1072, 1076, 1087, 1086, 1143, 1143, 1144, 1145, 1146, 1147,
1040     1148, 1149, 1150, 1151, 1152, 1153, 1154, 1156, 1162, 1168,
1041     1174, 1180, 1191, 1197, 1208, 1215, 1214, 1220, 1220, 1221,
1042     1225, 1229, 1233, 1237, 1241, 1245, 1249, 1253, 1257, 1261,
1043     1265, 1269, 1273, 1277, 1281, 1285, 1289, 1293, 1297, 1301,
1044     1305, 1312, 1311, 1317, 1317, 1318, 1322, 1326, 1330, 1334,
1045     1338, 1342, 1346, 1350, 1354, 1358, 1362, 1366, 1370, 1374,
1046     1378, 1382, 1386, 1390, 1394, 1398, 1402, 1406, 1410, 1414,
1047 michael 7061 1418, 1422, 1426, 1430, 1441, 1440, 1497, 1497, 1498, 1499,
1048     1500, 1501, 1502, 1503, 1504, 1505, 1506, 1507, 1508, 1509,
1049     1510, 1510, 1511, 1512, 1513, 1514, 1516, 1522, 1528, 1534,
1050     1540, 1546, 1552, 1558, 1564, 1570, 1576, 1583, 1589, 1595,
1051     1601, 1610, 1620, 1619, 1625, 1625, 1626, 1630, 1641, 1640,
1052     1647, 1646, 1651, 1651, 1652, 1656, 1660, 1666, 1666, 1667,
1053     1667, 1667, 1667, 1667, 1669, 1669, 1671, 1671, 1673, 1686,
1054     1703, 1709, 1720, 1719, 1761, 1761, 1762, 1763, 1764, 1765,
1055     1766, 1767, 1768, 1769, 1770, 1772, 1778, 1784, 1790, 1802,
1056     1801, 1807, 1807, 1808, 1812, 1816, 1820, 1824, 1828, 1832,
1057     1836, 1840, 1844, 1850, 1864, 1873, 1887, 1886, 1901, 1901,
1058     1902, 1902, 1902, 1902, 1904, 1910, 1916, 1926, 1928, 1928,
1059     1929, 1929, 1931, 1948, 1947, 1972, 1972, 1973, 1973, 1973,
1060     1973, 1975, 1981, 2001, 2000, 2006, 2006, 2007, 2011, 2015,
1061     2019, 2023, 2027, 2031, 2035, 2039, 2043, 2054, 2053, 2074,
1062     2074, 2075, 2075, 2075, 2077, 2084, 2083, 2089, 2089, 2090,
1063     2094, 2098, 2102, 2106, 2110, 2114, 2118, 2122, 2126, 2137,
1064     2136, 2208, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215,
1065     2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2225, 2231,
1066     2237, 2243, 2256, 2269, 2275, 2281, 2285, 2292, 2291, 2296,
1067     2296, 2297, 2301, 2307, 2318, 2324, 2330, 2336, 2352, 2351,
1068     2377, 2377, 2378, 2378, 2378, 2380, 2400, 2411, 2410, 2437,
1069     2437, 2438, 2438, 2438, 2440, 2446, 2456, 2458, 2458, 2459,
1070     2459, 2461, 2479, 2478, 2501, 2501, 2502, 2502, 2502, 2504,
1071     2510, 2520, 2522, 2522, 2523, 2524, 2525, 2526, 2527, 2528,
1072     2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538,
1073     2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547, 2548,
1074     2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557, 2558,
1075     2559, 2560, 2561, 2562, 2563, 2564, 2565, 2566, 2567, 2568,
1076     2571, 2576, 2581, 2586, 2592, 2597, 2602, 2607, 2612, 2617,
1077     2622, 2627, 2632, 2637, 2642, 2647, 2652, 2657, 2662, 2668,
1078     2673, 2678, 2683, 2688, 2693, 2698, 2703, 2706, 2711, 2714,
1079     2719, 2724, 2729, 2734, 2739, 2744, 2749, 2754, 2759, 2764,
1080     2769, 2774, 2780, 2779, 2784, 2784, 2785, 2788, 2791, 2794,
1081     2797, 2800, 2803, 2806, 2809, 2812, 2815, 2818, 2821, 2824,
1082     2827, 2830, 2833, 2836, 2839, 2842, 2845, 2848, 2854, 2853,
1083     2858, 2858, 2859, 2862, 2865, 2868, 2871, 2874, 2877, 2880,
1084     2883, 2886, 2889, 2892, 2895, 2898, 2901, 2904, 2907, 2910,
1085     2913, 2916, 2921, 2926, 2931, 2940, 2942, 2942, 2943, 2944,
1086     2945, 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954,
1087     2956, 2961, 2966, 2971, 2976, 2981, 2986, 2991, 2996, 3001,
1088     3006, 3015, 3017, 3017, 3018, 3019, 3020, 3021, 3022, 3023,
1089     3024, 3025, 3026, 3027, 3029, 3035, 3051, 3060, 3066, 3072,
1090     3078, 3087, 3093
1091 michael 913 };
1092     #endif
1093    
1094 michael 1466 #if YYDEBUG || YYERROR_VERBOSE || 0
1095 michael 913 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1096     First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1097     static const char *const yytname[] =
1098     {
1099 michael 1520 "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
1100 michael 4313 "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN",
1101     "AWAY_COUNT", "AWAY_TIME", "BYTES", "KBYTES", "MBYTES", "CALLER_ID_WAIT",
1102     "CAN_FLOOD", "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS",
1103 michael 6490 "CLOSE", "CONNECT", "CONNECTFREQ", "CYCLE_ON_HOST_CHANGE",
1104     "DEFAULT_FLOODCOUNT", "DEFAULT_JOIN_FLOOD_COUNT",
1105     "DEFAULT_JOIN_FLOOD_TIME", "DEFAULT_MAX_CLIENTS", "DENY", "DESCRIPTION",
1106     "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1107     "DISABLE_REMOTE_COMMANDS", "DLINE_MIN_CIDR", "DLINE_MIN_CIDR6",
1108     "DOTS_IN_IDENT", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
1109 michael 6603 "FAILED_OPER_NOTICE", "FLATTEN_LINKS", "FLATTEN_LINKS_DELAY",
1110     "FLATTEN_LINKS_FILE", "GECOS", "GENERAL", "HIDDEN", "HIDDEN_NAME",
1111     "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS", "HIDE_SERVER_IPS",
1112     "HIDE_SERVERS", "HIDE_SERVICES", "HOST", "HUB", "HUB_MASK",
1113     "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "INVITE_CLIENT_COUNT",
1114 michael 6801 "INVITE_CLIENT_TIME", "INVITE_DELAY_CHANNEL", "IP", "IRCD_AUTH",
1115     "IRCD_FLAGS", "IRCD_SID", "JOIN", "KILL", "KILL_CHASE_TIME_LIMIT",
1116     "KLINE", "KLINE_EXEMPT", "KLINE_MIN_CIDR", "KLINE_MIN_CIDR6",
1117     "KNOCK_CLIENT_COUNT", "KNOCK_CLIENT_TIME", "KNOCK_DELAY_CHANNEL",
1118     "LEAF_MASK", "LISTEN", "MASK", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANNELS",
1119     "MAX_GLOBAL", "MAX_IDENT", "MAX_IDLE", "MAX_LOCAL", "MAX_NICK_CHANGES",
1120 michael 6603 "MAX_NICK_LENGTH", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1121     "MAX_TOPIC_LENGTH", "MAX_WATCH", "MIN_IDLE", "MIN_NONWILDCARD",
1122     "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "MOTD", "NAME",
1123     "NEED_IDENT", "NEED_PASSWORD", "NETWORK_DESC", "NETWORK_NAME", "NICK",
1124     "NO_OPER_FLOOD", "NO_TILDE", "NUMBER", "NUMBER_PER_CIDR",
1125 michael 6490 "NUMBER_PER_IP", "OPER_ONLY_UMODES", "OPER_UMODES", "OPERATOR",
1126     "OPERS_BYPASS_CALLERID", "PACE_WAIT", "PACE_WAIT_SIMPLE", "PASSWORD",
1127     "PATH", "PING_COOKIE", "PING_TIME", "PORT", "QSTRING", "RANDOM_IDLE",
1128     "REASON", "REDIRPORT", "REDIRSERV", "REHASH", "REMOTE", "REMOTEBAN",
1129 michael 6595 "RESV", "RESV_EXEMPT", "RSA_PRIVATE_KEY_FILE", "SECONDS", "MINUTES",
1130     "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SEND_PASSWORD", "SENDQ",
1131     "SERVERHIDE", "SERVERINFO", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1132     "SQUIT", "SSL_CERTIFICATE_FILE", "SSL_CERTIFICATE_FINGERPRINT",
1133     "SSL_CONNECTION_REQUIRED", "SSL_DH_ELLIPTIC_CURVE", "SSL_DH_PARAM_FILE",
1134 michael 4114 "SSL_MESSAGE_DIGEST_ALGORITHM", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1135 michael 5025 "STATS_K_OPER_ONLY", "STATS_M_OPER_ONLY", "STATS_O_OPER_ONLY",
1136     "STATS_P_OPER_ONLY", "STATS_U_OPER_ONLY", "T_ALL", "T_BOTS",
1137     "T_CALLERID", "T_CCONN", "T_COMMAND", "T_CLUSTER", "T_DEAF", "T_DEBUG",
1138     "T_DLINE", "T_EXTERNAL", "T_FARCONNECT", "T_FILE", "T_FULL", "T_GLOBOPS",
1139 michael 5603 "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_LOG", "T_NCHANGE",
1140     "T_NONONREG", "T_OPME", "T_PREPEND", "T_PSEUDO", "T_RECVQ", "T_REJ",
1141     "T_RESTART", "T_SERVER", "T_SERVICE", "T_SERVNOTICE", "T_SET",
1142 michael 5004 "T_SHARED", "T_SIZE", "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_SSL",
1143     "T_SSL_CIPHER_LIST", "T_TARGET", "T_UMODES", "T_UNAUTH", "T_UNDLINE",
1144     "T_UNLIMITED", "T_UNRESV", "T_UNXLINE", "T_WALLOP", "T_WALLOPS",
1145     "T_WEBIRC", "TBOOL", "THROTTLE_COUNT", "THROTTLE_TIME",
1146     "TKLINE_EXPIRE_NOTICES", "TMASKED", "TS_MAX_DELTA", "TS_WARN_DELTA",
1147 michael 5417 "TWODOTS", "TYPE", "UNKLINE", "USE_LOGGING", "USER", "VHOST", "VHOST6",
1148 michael 5987 "WARN_NO_CONNECT_BLOCK", "WHOIS", "XLINE", "XLINE_EXEMPT", "';'", "'}'",
1149     "'{'", "'='", "','", "':'", "$accept", "conf", "conf_item", "timespec_",
1150     "timespec", "sizespec_", "sizespec", "modules_entry", "modules_items",
1151 michael 5004 "modules_item", "modules_module", "modules_path", "serverinfo_entry",
1152     "serverinfo_items", "serverinfo_item", "serverinfo_ssl_certificate_file",
1153 michael 1306 "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
1154 michael 4114 "serverinfo_ssl_cipher_list", "serverinfo_ssl_message_digest_algorithm",
1155     "serverinfo_ssl_dh_elliptic_curve", "serverinfo_name", "serverinfo_sid",
1156     "serverinfo_description", "serverinfo_network_name",
1157     "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1158 michael 5490 "serverinfo_default_max_clients", "serverinfo_max_nick_length",
1159 michael 4114 "serverinfo_max_topic_length", "serverinfo_hub", "admin_entry",
1160     "admin_items", "admin_item", "admin_name", "admin_email",
1161     "admin_description", "motd_entry", "$@1", "motd_items", "motd_item",
1162 michael 4545 "motd_mask", "motd_file", "pseudo_entry", "$@2", "pseudo_items",
1163     "pseudo_item", "pseudo_command", "pseudo_name", "pseudo_prepend",
1164     "pseudo_target", "logging_entry", "logging_items", "logging_item",
1165     "logging_use_logging", "logging_file_entry", "$@3", "logging_file_items",
1166     "logging_file_item", "logging_file_name", "logging_file_size",
1167     "logging_file_type", "$@4", "logging_file_type_items",
1168     "logging_file_type_item", "oper_entry", "$@5", "oper_items", "oper_item",
1169 michael 5557 "oper_name", "oper_user", "oper_password", "oper_whois",
1170 michael 6595 "oper_encrypted", "oper_ssl_certificate_fingerprint",
1171     "oper_ssl_connection_required", "oper_class", "oper_umodes", "$@6",
1172     "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@7",
1173     "oper_flags_items", "oper_flags_item", "class_entry", "$@8",
1174     "class_items", "class_item", "class_name", "class_ping_time",
1175     "class_number_per_ip", "class_connectfreq", "class_max_channels",
1176     "class_max_number", "class_max_global", "class_max_local",
1177     "class_max_ident", "class_sendq", "class_recvq",
1178     "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1179 michael 1783 "class_number_per_cidr", "class_min_idle", "class_max_idle",
1180 michael 4545 "class_flags", "$@9", "class_flags_items", "class_flags_item",
1181     "listen_entry", "$@10", "listen_flags", "$@11", "listen_flags_items",
1182 michael 1783 "listen_flags_item", "listen_items", "listen_item", "listen_port",
1183 michael 4545 "$@12", "port_items", "port_item", "listen_address", "listen_host",
1184     "auth_entry", "$@13", "auth_items", "auth_item", "auth_user",
1185     "auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@14",
1186 michael 1783 "auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
1187 michael 4545 "auth_redir_port", "resv_entry", "$@15", "resv_items", "resv_item",
1188 michael 1858 "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1189 michael 4545 "service_items", "service_item", "service_name", "shared_entry", "$@16",
1190 michael 1783 "shared_items", "shared_item", "shared_name", "shared_user",
1191 michael 4545 "shared_type", "$@17", "shared_types", "shared_type_item",
1192     "cluster_entry", "$@18", "cluster_items", "cluster_item", "cluster_name",
1193     "cluster_type", "$@19", "cluster_types", "cluster_type_item",
1194     "connect_entry", "$@20", "connect_items", "connect_item", "connect_name",
1195 michael 1324 "connect_host", "connect_vhost", "connect_send_password",
1196 michael 2244 "connect_accept_password", "connect_ssl_certificate_fingerprint",
1197 michael 4545 "connect_port", "connect_aftype", "connect_flags", "$@21",
1198 michael 2244 "connect_flags_items", "connect_flags_item", "connect_encrypted",
1199     "connect_hub_mask", "connect_leaf_mask", "connect_class",
1200 michael 4545 "connect_ssl_cipher_list", "kill_entry", "$@22", "kill_items",
1201     "kill_item", "kill_user", "kill_reason", "deny_entry", "$@23",
1202 michael 2244 "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1203 michael 4545 "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@24",
1204 michael 2244 "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1205 michael 4313 "general_entry", "general_items", "general_item", "general_away_count",
1206     "general_away_time", "general_max_watch", "general_cycle_on_host_change",
1207 michael 5806 "general_dline_min_cidr", "general_dline_min_cidr6",
1208     "general_kline_min_cidr", "general_kline_min_cidr6",
1209     "general_tkline_expire_notices", "general_kill_chase_time_limit",
1210     "general_ignore_bogus_ts", "general_failed_oper_notice",
1211     "general_anti_nick_flood", "general_max_nick_time",
1212     "general_max_nick_changes", "general_max_accept",
1213     "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1214 michael 5936 "general_ts_max_delta", "general_invisible_on_connect",
1215     "general_warn_no_connect_block", "general_stats_e_disabled",
1216     "general_stats_m_oper_only", "general_stats_o_oper_only",
1217     "general_stats_P_oper_only", "general_stats_u_oper_only",
1218     "general_stats_k_oper_only", "general_stats_i_oper_only",
1219     "general_pace_wait", "general_caller_id_wait",
1220     "general_opers_bypass_callerid", "general_pace_wait_simple",
1221 michael 6450 "general_short_motd", "general_no_oper_flood", "general_dots_in_ident",
1222     "general_max_targets", "general_ping_cookie", "general_disable_auth",
1223     "general_throttle_count", "general_throttle_time", "general_oper_umodes",
1224     "$@25", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1225     "$@26", "umode_items", "umode_item", "general_min_nonwildcard",
1226 michael 3877 "general_min_nonwildcard_simple", "general_default_floodcount",
1227     "channel_entry", "channel_items", "channel_item",
1228     "channel_disable_fake_channels", "channel_invite_client_count",
1229 michael 6801 "channel_invite_client_time", "channel_invite_delay_channel",
1230     "channel_knock_client_count", "channel_knock_client_time",
1231     "channel_knock_delay_channel", "channel_max_channels",
1232     "channel_max_bans", "channel_default_join_flood_count",
1233     "channel_default_join_flood_time", "serverhide_entry",
1234     "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1235     "serverhide_flatten_links_delay", "serverhide_flatten_links_file",
1236     "serverhide_disable_remote_commands", "serverhide_hide_servers",
1237     "serverhide_hide_services", "serverhide_hidden_name",
1238     "serverhide_hidden", "serverhide_hide_server_ips", YY_NULLPTR
1239 michael 913 };
1240     #endif
1241    
1242     # ifdef YYPRINT
1243 michael 2473 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1244     (internal) symbol number NUM (which must be that of a token). */
1245 michael 913 static const yytype_uint16 yytoknum[] =
1246     {
1247     0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1248     265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1249     275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1250     285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1251     295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1252     305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1253     315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1254     325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1255     335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1256     345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1257     355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1258     365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1259     375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1260     385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1261     395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1262     405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1263     415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1264     425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1265     435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1266     445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1267     455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1268 michael 1783 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1269 michael 6801 475, 476, 477, 478, 479, 480, 481, 59, 125, 123,
1270     61, 44, 58
1271 michael 913 };
1272     # endif
1273    
1274 michael 6801 #define YYPACT_NINF -887
1275 michael 913
1276 michael 2473 #define yypact_value_is_default(Yystate) \
1277 michael 6801 (!!((Yystate) == (-887)))
1278 michael 2473
1279 michael 4545 #define YYTABLE_NINF -130
1280 michael 2473
1281     #define yytable_value_is_error(Yytable_value) \
1282     0
1283    
1284     /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1285     STATE-NUM. */
1286     static const yytype_int16 yypact[] =
1287 michael 913 {
1288 michael 6801 -887, 721, -887, -174, -213, -208, -887, -887, -887, -197,
1289     -887, -181, -887, -887, -887, -170, -887, -887, -887, -160,
1290     -152, -887, -140, -887, -122, -887, -887, -887, -887, -887,
1291     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1292     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1293     -887, 23, 361, -119, -117, -97, 13, -91, 486, -84,
1294     -78, -68, 84, -55, -49, -45, 413, 624, -35, 14,
1295     -32, 49, -25, -185, -20, -10, -7, 9, -887, -887,
1296     -887, -887, -887, -6, 44, 45, 48, 63, 64, 66,
1297     79, 89, 90, 102, 166, -887, -887, -887, -887, -887,
1298     -887, -887, -887, -887, -887, -887, -887, 783, 614, 61,
1299     -887, 106, 32, -887, -887, 121, -887, 116, 118, 119,
1300     120, 122, 131, 134, 135, 136, 140, 143, 144, 145,
1301     146, 147, 148, 150, 153, 154, 158, 159, 162, 167,
1302     168, 169, -887, -887, 173, 174, 177, 180, 182, 183,
1303     185, 186, 188, 189, 194, 196, 197, 200, 201, 202,
1304     203, 204, 57, -887, -887, -887, -887, -887, -887, -887,
1305     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1306     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1307     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1308     -887, -887, -887, -887, -887, -887, -887, -887, -887, 352,
1309     12, 304, -22, 209, 210, 2, -887, -887, -887, 11,
1310     341, 85, -887, 214, 220, 223, 224, 229, 233, 234,
1311     240, 241, 291, -887, -887, -887, -887, -887, -887, -887,
1312     -887, -887, -887, 52, 243, 244, 245, 246, 250, 252,
1313     253, 254, 256, 258, 259, 268, 273, 274, 275, 276,
1314     282, 55, -887, -887, -887, -887, -887, -887, -887, -887,
1315     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1316     19, 87, 283, 3, -887, -887, -887, 115, 164, -887,
1317     284, 35, -887, -887, 165, -887, 289, 359, 393, 299,
1318     -887, 149, 410, 81, 420, 410, 410, 421, 410, 410,
1319     424, 438, 320, -887, 323, 322, 327, 330, -887, 332,
1320     334, 337, 340, 344, 346, 350, 353, 354, 355, 357,
1321     358, 360, 217, -887, -887, -887, -887, -887, -887, -887,
1322     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1323     -887, 326, 363, 364, 365, 366, 369, 373, -887, 374,
1324     376, 377, 379, 382, 383, 384, 251, -887, -887, -887,
1325     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1326     -887, -887, -887, 386, 388, 16, -887, -887, -887, 446,
1327     362, -887, -887, 390, 391, 33, -887, -887, -887, 82,
1328     410, 463, 410, 410, 414, 514, 415, 518, 519, 521,
1329     425, 426, 427, 410, 524, 529, 530, 531, 410, 540,
1330     546, 548, 549, 449, 430, 431, 453, 410, 410, 455,
1331     456, 457, -191, -186, 458, 461, 464, 465, 567, 410,
1332     467, 410, 410, 468, 451, -887, 454, 452, 459, -887,
1333     462, 472, 473, 474, 475, 303, -887, -887, -887, -887,
1334     -887, -887, -887, -887, -887, -887, 478, 480, 30, -887,
1335     -887, -887, 460, 483, 485, -887, 487, -887, 10, -887,
1336     -887, -887, -887, -887, 562, 571, 484, -887, 491, 489,
1337     490, 27, -887, -887, -887, 496, 499, 500, -887, 501,
1338     502, 503, 504, -887, 506, 509, 181, -887, -887, -887,
1339     -887, -887, -887, -887, -887, -887, -887, -887, 516, 511,
1340     515, 517, 38, -887, -887, -887, -887, 535, 539, 410,
1341     572, 541, 573, 542, 543, 544, 532, -887, -887, 618,
1342     635, 551, 636, 654, 656, 643, 646, 647, 648, 649,
1343     651, 652, 658, 661, 664, 665, 561, -887, 563, 564,
1344     -887, 34, -887, -887, -887, -887, 569, 565, -887, 568,
1345     566, 574, 580, 581, 583, 60, -887, -887, -887, -887,
1346     -887, 669, 576, -887, 587, 585, -887, 586, 95, -887,
1347     -887, -887, -887, 590, 591, 594, -887, 596, 400, 604,
1348     605, 606, 609, 610, 611, 612, 613, 615, 616, -887,
1349     -887, 688, 690, 410, 617, 699, 733, 736, 410, 741,
1350     742, 410, 730, 745, 747, 410, 750, 750, 632, -887,
1351     -887, 738, 1, 739, 653, 748, 749, 642, 752, 753,
1352     768, 756, 757, 758, 760, 657, -887, 763, 764, 662,
1353     -887, 663, -887, 766, 769, 668, -887, 670, 671, 672,
1354     674, 675, 677, 679, 680, 681, 682, 684, 685, 687,
1355     689, 691, 692, 693, 698, 701, 704, 706, 708, 709,
1356     711, 714, 847, 759, 715, 716, 717, 719, 720, 723,
1357     724, 725, 729, 731, 732, 734, 735, 737, 740, 746,
1358     754, 762, 765, 767, -887, -887, 774, 770, 718, 793,
1359     773, 795, 835, 841, 771, -887, 844, 850, 772, -887,
1360     -887, 854, 861, 761, 876, 777, -887, 778, 779, -887,
1361     -887, 864, 868, 780, -887, -887, 873, 787, 782, 878,
1362     894, 897, 812, 794, 901, 904, 802, -887, -887, 908,
1363     909, 910, 808, -887, 809, 811, 813, 817, 818, 819,
1364     820, 822, 823, -887, 824, 825, 827, 828, 829, 830,
1365     831, 832, 833, 834, 836, 837, 838, 839, 840, 842,
1366     843, -887, -887, 912, 845, 846, -887, 849, -887, 93,
1367     -887, 917, 940, 946, 949, 851, -887, 852, -887, -887,
1368     950, 853, 952, 855, -887, -887, -887, -887, -887, 410,
1369     410, 410, 410, 410, 410, 410, -887, -887, -887, -887,
1370     -887, -887, -887, -887, -887, -887, -887, -887, 857, 858,
1371     859, -26, 860, 862, 863, 865, 866, 867, 869, 870,
1372     871, 872, 874, 343, 875, 877, -887, 879, 880, 881,
1373     882, 883, 884, 885, -1, 886, 887, 888, 889, 890,
1374     891, 892, -887, 893, 895, -887, -887, 896, 898, -887,
1375     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1376     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1377     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1378     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1379     -887, -887, -887, -887, -887, -201, -887, -887, -887, -887,
1380     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1381     -887, -887, -887, -887, -887, -887, -887, -887, -887, -190,
1382     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1383     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1384     -887, 899, 900, 423, 902, 903, 905, 906, 907, -887,
1385     911, 913, -887, 914, 915, -18, 919, 916, -887, -887,
1386     -887, -887, 918, 921, -887, 922, 923, 481, 924, 925,
1387     926, 927, 807, 928, 929, -887, 930, 931, 932, -887,
1388     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1389     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1390     -887, -887, -887, -887, -887, -887, 933, 338, -887, -887,
1391     934, 935, 936, -887, 56, -887, -887, -887, -887, 937,
1392     941, 942, 943, -887, -887, 944, 577, 945, -887, -887,
1393     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1394     -887, -187, -887, -887, -887, -887, -887, -887, -887, -887,
1395     -887, -887, -887, -887, 750, 750, 750, -887, -887, -887,
1396     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1397     -184, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1398     -887, -887, -887, -887, 847, -887, 759, -887, -887, -887,
1399     -887, -887, -887, -887, -887, -887, -887, -887, -887, -182,
1400     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1401     -887, -887, -887, -176, -887, 969, 876, 947, -887, -887,
1402     -887, -887, -887, -887, 848, -887, 856, 948, -887, -887,
1403 michael 7061 951, 953, -887, -887, 954, -887, -887, -887, -887, -887,
1404 michael 6801 -887, -887, -887, -887, -887, -887, -887, -159, -887, -887,
1405     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1406     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1407     -887, -887, -887, -887, -887, -157, -887, -887, -887, -887,
1408     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1409 michael 7061 -887, -887, -887, -144, -887, -887, 959, -89, 957, 955,
1410 michael 6801 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1411     -887, -887, -887, -887, -887, -887, -126, -887, -887, -887,
1412     -26, -887, -887, -887, -887, -1, -887, -887, -887, 423,
1413     -887, -18, -887, -887, -887, 963, 965, 972, 973, 977,
1414 michael 7061 993, -887, 481, -887, 807, -887, 338, 961, 962, 964,
1415     227, -887, -887, 577, -887, -887, -887, -887, -887, -887,
1416 michael 6801 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1417 michael 7061 -887, -887, -887, -887, -887, -887, -887, -887, -123, -887,
1418     -887, -887, 227, -887
1419 michael 913 };
1420    
1421 michael 2473 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1422     Performed when YYTABLE does not specify something else to do. Zero
1423     means the default is an error. */
1424 michael 913 static const yytype_uint16 yydefact[] =
1425     {
1426 michael 7061 2, 0, 1, 0, 0, 0, 234, 399, 447, 0,
1427     462, 0, 302, 438, 278, 0, 100, 152, 336, 0,
1428     0, 377, 0, 109, 0, 353, 3, 23, 11, 4,
1429 michael 4545 24, 25, 5, 6, 8, 9, 10, 13, 14, 15,
1430     16, 17, 18, 19, 20, 22, 21, 7, 12, 26,
1431     27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1432 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1433 michael 4545 0, 0, 0, 0, 0, 0, 0, 0, 92, 93,
1434 michael 7061 95, 94, 629, 0, 0, 0, 0, 0, 0, 0,
1435     0, 0, 0, 0, 0, 617, 628, 619, 620, 621,
1436     622, 623, 624, 625, 618, 626, 627, 0, 0, 0,
1437     460, 0, 0, 458, 459, 0, 519, 0, 0, 0,
1438 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1439     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1440 michael 7061 0, 0, 588, 562, 0, 0, 0, 0, 0, 0,
1441 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1442 michael 7061 0, 0, 0, 473, 474, 475, 517, 518, 512, 513,
1443     514, 515, 511, 485, 476, 477, 478, 479, 480, 481,
1444     482, 483, 484, 486, 487, 516, 491, 492, 493, 494,
1445     490, 489, 495, 502, 503, 496, 497, 498, 488, 500,
1446     509, 510, 507, 508, 501, 499, 505, 506, 504, 0,
1447 michael 6801 0, 0, 0, 0, 0, 0, 46, 47, 48, 0,
1448 michael 7061 0, 0, 653, 0, 0, 0, 0, 0, 0, 0,
1449     0, 0, 0, 643, 644, 645, 646, 647, 648, 649,
1450     651, 650, 652, 0, 0, 0, 0, 0, 0, 0,
1451 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1452 michael 6801 0, 0, 54, 69, 66, 64, 70, 71, 65, 55,
1453     68, 58, 59, 60, 56, 67, 61, 62, 63, 57,
1454 michael 7061 0, 0, 0, 0, 124, 125, 126, 0, 0, 351,
1455     0, 0, 349, 350, 0, 96, 0, 0, 0, 0,
1456 michael 6801 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1457 michael 7061 0, 0, 0, 616, 0, 0, 0, 0, 272, 0,
1458 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1459 michael 7061 0, 0, 0, 237, 238, 241, 243, 244, 245, 246,
1460     247, 248, 249, 250, 251, 239, 240, 242, 252, 253,
1461     254, 0, 0, 0, 0, 0, 0, 0, 427, 0,
1462     0, 0, 0, 0, 0, 0, 0, 402, 403, 404,
1463     405, 406, 407, 408, 410, 409, 412, 416, 413, 414,
1464     415, 411, 453, 0, 0, 0, 450, 451, 452, 0,
1465     0, 457, 468, 0, 0, 0, 465, 466, 467, 0,
1466 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1467     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1468     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1469 michael 1285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1470 michael 7061 0, 0, 0, 0, 0, 472, 0, 0, 0, 319,
1471     0, 0, 0, 0, 0, 0, 305, 306, 307, 308,
1472     313, 309, 310, 311, 312, 444, 0, 0, 0, 441,
1473     442, 443, 0, 0, 0, 280, 0, 290, 0, 288,
1474     289, 291, 292, 49, 0, 0, 0, 45, 0, 0,
1475 michael 6801 0, 0, 103, 104, 105, 0, 0, 0, 201, 0,
1476     0, 0, 0, 175, 0, 0, 0, 155, 156, 157,
1477     158, 159, 162, 163, 164, 161, 160, 165, 0, 0,
1478 michael 7061 0, 0, 0, 339, 340, 341, 342, 0, 0, 0,
1479     0, 0, 0, 0, 0, 0, 0, 642, 72, 0,
1480 michael 1285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1481 michael 6801 0, 0, 0, 0, 0, 0, 0, 53, 0, 0,
1482 michael 7061 385, 0, 380, 381, 382, 127, 0, 0, 123, 0,
1483 michael 6801 0, 0, 0, 0, 0, 0, 112, 113, 115, 114,
1484 michael 7061 116, 0, 0, 348, 0, 0, 363, 0, 0, 356,
1485     357, 358, 359, 0, 0, 0, 90, 0, 28, 0,
1486     0, 0, 0, 0, 0, 0, 0, 0, 0, 615,
1487     255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1488     0, 0, 0, 0, 0, 0, 0, 0, 0, 236,
1489     417, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1490     0, 0, 0, 0, 0, 0, 401, 0, 0, 0,
1491     449, 0, 456, 0, 0, 0, 464, 0, 0, 0,
1492 michael 1285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1493     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1494 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1495     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1496 michael 7061 0, 0, 0, 0, 471, 314, 0, 0, 0, 0,
1497     0, 0, 0, 0, 0, 304, 0, 0, 0, 440,
1498     293, 0, 0, 0, 0, 0, 287, 0, 0, 44,
1499 michael 6801 106, 0, 0, 0, 102, 166, 0, 0, 0, 0,
1500 michael 7061 0, 0, 0, 0, 0, 0, 0, 154, 343, 0,
1501     0, 0, 0, 338, 0, 0, 0, 0, 0, 0,
1502     0, 0, 0, 641, 0, 0, 0, 0, 0, 0,
1503 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1504 michael 7061 0, 52, 383, 0, 0, 0, 379, 0, 122, 0,
1505     117, 0, 0, 0, 0, 0, 111, 0, 347, 360,
1506     0, 0, 0, 0, 355, 99, 98, 97, 639, 28,
1507     28, 28, 28, 28, 28, 28, 30, 29, 640, 630,
1508     631, 632, 633, 634, 635, 636, 638, 637, 0, 0,
1509 michael 5806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1510 michael 7061 0, 0, 0, 38, 0, 0, 235, 0, 0, 0,
1511 michael 6595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1512 michael 7061 0, 0, 400, 0, 0, 448, 461, 0, 0, 463,
1513     532, 536, 520, 521, 551, 523, 614, 559, 524, 525,
1514     556, 531, 530, 539, 529, 526, 527, 535, 534, 533,
1515     557, 522, 612, 613, 555, 598, 592, 608, 593, 594,
1516     595, 603, 611, 596, 605, 609, 599, 610, 600, 604,
1517     597, 607, 602, 601, 606, 0, 591, 571, 572, 573,
1518     566, 584, 567, 568, 569, 579, 587, 570, 581, 585,
1519     575, 586, 576, 580, 574, 583, 578, 577, 582, 0,
1520     565, 552, 550, 553, 558, 554, 541, 548, 549, 546,
1521     547, 542, 543, 544, 545, 560, 561, 528, 538, 537,
1522     540, 0, 0, 0, 0, 0, 0, 0, 0, 303,
1523     0, 0, 439, 0, 0, 0, 298, 294, 297, 279,
1524 michael 6801 50, 51, 0, 0, 101, 0, 0, 0, 0, 0,
1525 michael 7061 0, 0, 0, 0, 0, 153, 0, 0, 0, 337,
1526     657, 654, 655, 656, 661, 660, 662, 658, 659, 86,
1527 michael 6801 81, 89, 80, 87, 88, 79, 83, 82, 74, 73,
1528 michael 7061 78, 75, 77, 76, 84, 85, 0, 0, 378, 128,
1529 michael 6801 0, 0, 0, 140, 0, 132, 133, 135, 134, 0,
1530 michael 7061 0, 0, 0, 110, 352, 0, 0, 0, 354, 31,
1531     32, 33, 34, 35, 36, 37, 267, 268, 259, 277,
1532     276, 0, 275, 260, 262, 264, 271, 263, 261, 270,
1533     256, 269, 258, 257, 38, 38, 38, 40, 39, 265,
1534     266, 422, 425, 426, 436, 433, 419, 434, 431, 432,
1535     0, 430, 435, 418, 424, 421, 423, 437, 420, 454,
1536     455, 469, 470, 589, 0, 563, 0, 317, 318, 328,
1537     324, 325, 327, 332, 329, 330, 323, 331, 326, 0,
1538     322, 316, 335, 334, 333, 315, 446, 445, 301, 300,
1539     285, 286, 284, 0, 283, 0, 0, 0, 107, 108,
1540     174, 171, 221, 233, 208, 217, 0, 206, 211, 227,
1541     0, 220, 225, 231, 210, 213, 222, 224, 228, 218,
1542     226, 214, 232, 216, 223, 212, 215, 0, 204, 167,
1543 michael 6801 169, 172, 173, 184, 185, 186, 179, 197, 180, 181,
1544     182, 192, 200, 183, 194, 198, 188, 199, 189, 193,
1545 michael 7061 187, 196, 191, 190, 195, 0, 178, 168, 170, 346,
1546     344, 345, 384, 389, 395, 398, 391, 397, 392, 396,
1547     394, 390, 393, 0, 388, 136, 0, 0, 0, 0,
1548     131, 119, 118, 120, 121, 361, 367, 373, 376, 369,
1549     375, 370, 374, 372, 368, 371, 0, 366, 362, 273,
1550     0, 41, 42, 43, 428, 0, 590, 564, 320, 0,
1551     281, 0, 299, 296, 295, 0, 0, 0, 0, 0,
1552     0, 202, 0, 176, 0, 386, 0, 0, 0, 0,
1553     0, 130, 364, 0, 274, 429, 321, 282, 207, 230,
1554     205, 229, 219, 209, 203, 177, 387, 137, 139, 138,
1555     150, 149, 145, 147, 151, 148, 144, 146, 0, 143,
1556     365, 141, 0, 142
1557 michael 913 };
1558    
1559 michael 2473 /* YYPGOTO[NTERM-NUM]. */
1560     static const yytype_int16 yypgoto[] =
1561     {
1562 michael 6801 -887, -887, -887, 15, -300, -886, -626, -887, -887, 958,
1563     -887, -887, -887, -887, 920, -887, -887, -887, -887, -887,
1564     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1565 michael 7061 -887, -887, -887, -887, 1047, -887, -887, -887, -887, -887,
1566     -887, 637, -887, -887, -887, -887, -887, 556, -887, -887,
1567     -887, -887, -887, -887, 938, -887, -887, -887, -887, 103,
1568     -887, -887, -887, -887, -887, -166, -887, -887, -887, 633,
1569 michael 6801 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1570 michael 7061 -887, -121, -887, -887, -887, -118, -887, -887, -887, 814,
1571 michael 6801 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1572 michael 7061 -887, -887, -887, -887, -887, -887, -887, -887, -887, -77,
1573     -887, -887, -887, -887, -887, -76, -887, 700, -887, -887,
1574 michael 6801 -887, 26, -887, -887, -887, -887, -887, 712, -887, -887,
1575     -887, -887, -887, -887, -887, -73, -887, -887, -887, -887,
1576     -887, -887, 655, -887, -887, -887, -887, -887, 939, -887,
1577 michael 7061 -887, -887, -887, 602, -887, -887, -887, -887, -887, -94,
1578     -887, -887, -887, 623, -887, -887, -887, -887, -74, -887,
1579     -887, -887, 956, -887, -887, -887, -887, -887, -887, -887,
1580     -887, -887, -887, -887, -52, -887, -887, -887, -887, -887,
1581 michael 6801 -887, -887, -887, 726, -887, -887, -887, -887, -887, 810,
1582 michael 7061 -887, -887, -887, -887, 1084, -887, -887, -887, -887, 803,
1583 michael 6801 -887, -887, -887, -887, 1035, -887, -887, -887, -887, -887,
1584     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1585     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1586     -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1587 michael 7061 -887, -887, -887, -887, -887, -887, -887, -887, 94, -887,
1588     -887, -887, 97, -887, -887, -887, -887, -887, 1105, -887,
1589 michael 6801 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1590     -887, -887, 970, -887, -887, -887, -887, -887, -887, -887,
1591     -887, -887
1592 michael 2473 };
1593    
1594     /* YYDEFGOTO[NTERM-NUM]. */
1595 michael 913 static const yytype_int16 yydefgoto[] =
1596     {
1597 michael 6801 -1, 1, 26, 816, 817, 1077, 1078, 27, 215, 216,
1598     217, 218, 28, 261, 262, 263, 264, 265, 266, 267,
1599     268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1600     278, 279, 29, 77, 78, 79, 80, 81, 30, 63,
1601     491, 492, 493, 494, 31, 70, 575, 576, 577, 578,
1602     579, 580, 32, 283, 284, 285, 286, 287, 1034, 1035,
1603 michael 7061 1036, 1037, 1038, 1218, 1298, 1299, 33, 64, 506, 507,
1604 michael 6801 508, 509, 510, 511, 512, 513, 514, 515, 516, 743,
1605     1195, 1196, 517, 738, 1167, 1168, 34, 53, 332, 333,
1606     334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
1607     344, 345, 346, 347, 348, 349, 350, 614, 1061, 1062,
1608     35, 61, 477, 723, 1133, 1134, 478, 479, 480, 1137,
1609     977, 978, 481, 482, 36, 59, 455, 456, 457, 458,
1610     459, 460, 461, 708, 1119, 1120, 462, 463, 464, 37,
1611     65, 522, 523, 524, 525, 526, 38, 291, 292, 293,
1612     39, 72, 588, 589, 590, 591, 592, 801, 1236, 1237,
1613     40, 68, 561, 562, 563, 564, 784, 1213, 1214, 41,
1614     54, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1615     375, 376, 637, 1090, 1091, 377, 378, 379, 380, 381,
1616     42, 60, 468, 469, 470, 471, 43, 55, 385, 386,
1617     387, 388, 44, 112, 113, 114, 45, 57, 395, 396,
1618     397, 398, 46, 162, 163, 164, 165, 166, 167, 168,
1619     169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
1620     179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
1621     189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
1622     199, 200, 201, 202, 203, 204, 425, 939, 940, 205,
1623     424, 915, 916, 206, 207, 208, 47, 94, 95, 96,
1624     97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1625     48, 232, 233, 234, 235, 236, 237, 238, 239, 240,
1626     241, 242
1627 michael 913 };
1628    
1629 michael 2473 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1630     positive, shift that token. If negative, reduce the rule whose
1631     number is the opposite. If YYTABLE_NINF, syntax error. */
1632 michael 1247 static const yytype_int16 yytable[] =
1633 michael 913 {
1634 michael 6801 844, 845, 599, 212, 281, 602, 603, 1088, 605, 606,
1635     73, 472, 488, 465, 110, 281, 51, 382, 690, 843,
1636     558, 52, 691, 692, 73, 1059, 1103, 693, 488, 1130,
1637     1104, 465, 56, 110, 392, 558, 289, 1105, 74, 518,
1638     1239, 1106, 295, 1244, 1240, 1248, 75, 1245, 58, 1249,
1639     289, 1250, 74, 49, 50, 1251, 243, 1030, 116, 62,
1640 michael 7061 75, 570, 382, 117, 118, 473, 119, 120, 1261, 66,
1641     1263, 121, 1262, 474, 1264, 475, 111, 67, 519, 383,
1642     122, 123, 244, 1265, 245, 212, 518, 1266, 124, 69,
1643 michael 6801 489, 125, 126, 127, 1030, 111, 584, 1060, 128, 213,
1644 michael 7061 658, 1272, 660, 661, 1301, 1273, 489, 71, 1302, 76,
1645     107, 246, 108, 671, 1268, 129, 130, 520, 676, 559,
1646 michael 6801 214, 247, 392, 76, 383, 519, 131, 685, 686, 132,
1647     133, 476, 109, 393, 559, 290, 466, 134, 115, 699,
1648     384, 701, 702, 248, 135, 209, 136, 249, 137, 290,
1649     138, 210, 139, 140, 466, 250, 1031, 394, 251, 252,
1650     571, 211, 521, 141, 520, 570, 584, 82, 142, 143,
1651     1131, 144, 145, 146, 219, -129, 147, 848, 849, 1132,
1652     220, 213, 495, 490, 221, 384, -129, 253, 1241, 1242,
1653     1243, 83, 84, 1031, 280, 585, 1089, 288, 85, 490,
1654     496, 148, 214, 254, 294, 483, 255, 256, 257, 521,
1655     296, 149, 150, 151, 152, 153, 154, 155, 314, 497,
1656     297, 393, 282, 298, 301, 572, 86, 87, 88, 756,
1657     486, 567, 467, 282, 315, 316, 560, 299, 725, 317,
1658     89, 90, 91, 573, 649, 394, 498, 92, 93, 1032,
1659     467, 560, 351, 258, 352, 733, 353, 597, 718, 574,
1660     390, 655, 785, 582, 571, 585, 752, 156, 157, 158,
1661     354, 159, 160, 1033, 302, 303, 259, 260, 304, 538,
1662     161, 499, 318, 556, 1219, 444, 1032, 569, 795, 355,
1663 michael 7061 600, 657, 222, 305, 306, 1290, 307, 1291, 500, 319,
1664 michael 6801 320, 321, 322, 323, 446, 472, 356, 324, 357, 308,
1665     1033, 325, 586, 830, 565, 587, 358, 326, 835, 309,
1666     310, 838, 447, 803, 223, 842, 327, 328, 359, 572,
1667     501, 502, 311, 224, 225, 226, 389, 329, 227, 228,
1668 michael 7061 1292, 448, 495, 229, 230, 231, 399, 573, 400, 401,
1669     402, 360, 403, 446, 1074, 1075, 1076, 1293, 330, 473,
1670 michael 6801 496, 404, 82, 574, 405, 406, 407, 474, 449, 475,
1671     408, 447, 361, 409, 410, 411, 412, 413, 414, 497,
1672     415, 503, 586, 416, 417, 587, 83, 84, 418, 419,
1673 michael 7061 448, 362, 420, 85, 312, 1294, 1295, 421, 422, 423,
1674 michael 6801 363, 504, 331, 426, 427, 505, 498, 428, 1203, 746,
1675     429, 593, 430, 431, 222, 432, 433, 449, 434, 435,
1676     450, 86, 87, 88, 436, 476, 437, 438, 451, 452,
1677     439, 440, 441, 442, 443, 89, 90, 91, 1109, 484,
1678 michael 7061 485, 499, 92, 93, 527, 628, 223, 1296, 453, 364,
1679     528, 843, 1297, 529, 530, 224, 225, 226, 500, 531,
1680 michael 6801 227, 228, 1110, 532, 533, 229, 230, 231, 1204, 450,
1681     534, 535, 365, 539, 540, 541, 542, 451, 452, 645,
1682     543, 594, 544, 545, 546, 1142, 547, 116, 548, 549,
1683     501, 502, 117, 118, 1111, 119, 120, 453, 550, 1205,
1684     121, 1143, 1144, 551, 552, 553, 554, 1206, 598, 122,
1685     123, 1145, 555, 566, 581, 595, 1207, 124, 598, 536,
1686     125, 126, 127, 454, 1112, 1113, 596, 128, 601, 604,
1687     1114, 714, 607, 809, 810, 811, 812, 813, 814, 815,
1688     1208, 503, 1209, 1210, 129, 130, 608, 609, 1146, 1147,
1689     610, 1148, 611, 630, 1115, 131, 1211, 612, 132, 133,
1690     613, 504, 615, 1212, 616, 505, 134, 617, 651, 1116,
1691     618, 659, 454, 135, 619, 136, 620, 137, 1149, 138,
1692     621, 139, 140, 622, 623, 624, 1150, 625, 626, 652,
1693 michael 7061 627, 1269, 141, 631, 632, 633, 634, 142, 143, 635,
1694 michael 6801 144, 145, 146, 636, 638, 147, 639, 640, 1151, 641,
1695     1152, 1153, 642, 643, 644, 351, 647, 352, 648, 353,
1696     653, 654, 663, 662, 664, 243, 665, 666, 1154, 667,
1697     148, 1117, 672, 354, 668, 669, 670, 673, 674, 675,
1698     149, 150, 151, 152, 153, 154, 155, 1226, 677, 1118,
1699     1155, 244, 355, 245, 678, 1156, 679, 680, 681, 1157,
1700     682, 683, 684, 1158, 687, 688, 689, 694, 1159, 356,
1701     695, 357, 1160, 696, 697, 698, 700, 703, 704, 358,
1702     246, 705, 706, 1161, 727, 1162, 1163, 720, 1164, 707,
1703     247, 359, 709, 728, 757, 759, 156, 157, 158, 1165,
1704     159, 160, 710, 711, 712, 713, 1166, 1227, 716, 161,
1705     717, 729, 248, 721, 360, 722, 249, 724, 730, 731,
1706     732, 2, 3, 735, 250, 4, 764, 251, 252, 736,
1707     737, 739, 740, 741, 742, 361, 744, 5, 1228, 745,
1708     6, 749, 7, 748, 754, 750, 1229, 751, 755, 8,
1709     758, 760, 761, 762, 362, 1230, 253, 765, 767, 763,
1710     766, 9, 768, 363, 769, 770, 10, 11, 771, 772,
1711     773, 774, 254, 775, 776, 255, 256, 257, 787, 1231,
1712     777, 1232, 1233, 778, 314, 12, 779, 780, 781, 13,
1713     782, 797, 788, 790, 783, 1234, 828, 789, 829, 14,
1714     315, 316, 1235, 798, 791, 317, 917, 832, 918, 919,
1715     792, 793, 364, 794, 799, 800, 802, 805, 806, 15,
1716     16, 807, 258, 808, 1049, 1050, 1051, 1052, 1053, 1054,
1717     1055, 818, 819, 820, 17, 365, 821, 822, 823, 824,
1718     825, 833, 826, 827, 834, 259, 260, 831, 318, 836,
1719     837, 18, 839, 840, 1173, 841, 1174, 1175, 843, 846,
1720     847, 850, 851, 19, 20, 319, 320, 321, 322, 323,
1721     852, 853, 854, 324, 855, 856, 857, 325, 858, 859,
1722     860, 965, 861, 326, 862, 863, 864, 21, 867, 865,
1723     866, 868, 327, 328, 895, 869, 961, 870, 871, 872,
1724     22, 873, 874, 329, 875, 23, 876, 877, 878, 879,
1725     24, 880, 881, 25, 882, 964, 883, 966, 884, 885,
1726     886, 920, 921, 922, 330, 887, 923, 924, 888, 925,
1727     926, 889, 927, 890, 928, 891, 892, 929, 893, 930,
1728     931, 894, 941, 942, 943, 932, 944, 945, 963, 933,
1729     946, 947, 948, 934, 935, 936, 949, 967, 950, 951,
1730     937, 952, 953, 968, 954, 938, 970, 955, 331, 1176,
1731     1177, 1178, 971, 956, 1179, 1180, 973, 1181, 1182, 962,
1732     1183, 957, 1184, 974, 976, 1185, 982, 1186, 1187, 958,
1733     983, 975, 959, 1188, 960, 985, 986, 1189, 969, 972,
1734     988, 1190, 1191, 1192, 979, 980, 981, 984, 1193, 896,
1735     897, 898, 987, 1194, 899, 900, 989, 901, 902, 990,
1736     903, 991, 904, 993, 992, 905, 994, 906, 907, 995,
1737     996, 997, 998, 908, 1026, 999, 1000, 909, 1001, 1039,
1738     1002, 910, 911, 912, 1003, 1004, 1005, 1006, 913, 1007,
1739     1008, 1009, 1010, 914, 1011, 1012, 1013, 1014, 1015, 1016,
1740     1017, 1018, 1040, 1019, 1020, 1021, 1022, 1023, 1041, 1024,
1741     1025, 1042, 1045, 1028, 1047, 1027, 1029, 1252, 1043, 1044,
1742 michael 7061 1255, 1267, 1048, 1046, 1056, 1057, 1058, 1063, 1256, 1064,
1743     1065, 1278, 1066, 1067, 1068, 1279, 1069, 1070, 1071, 1072,
1744     1280, 1073, 1079, 1281, 1080, 1282, 1081, 1082, 1083, 1084,
1745 michael 6801 1085, 1086, 1087, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
1746 michael 7061 1099, 1283, 1100, 1101, 300, 1102, 1107, 1108, 734, 1121,
1747     1122, 796, 1123, 1124, 1125, 1135, 1303, 1220, 1126, 747,
1748     1127, 1128, 1129, 1285, 1284, 1138, 629, 1136, 1139, 1140,
1749 michael 6801 1141, 1169, 1170, 1171, 1172, 1197, 1198, 1199, 1200, 1201,
1750 michael 7061 1202, 1215, 1253, 1274, 1221, 1216, 1217, 715, 1222, 1223,
1751     1224, 1225, 1238, 487, 1254, 1277, 1276, 753, 726, 1300,
1752     1257, 557, 1271, 1258, 786, 1259, 1260, 1270, 1287, 1288,
1753     804, 1289, 1286, 1275, 719, 650, 391, 445, 656, 313,
1754     1247, 1246, 537, 0, 0, 0, 0, 0, 0, 0,
1755 michael 1855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1756 michael 6801 0, 568, 0, 0, 0, 0, 0, 0, 0, 0,
1757 michael 7061 583, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1758     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1759     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1760     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1761     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1762     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1763     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1764     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1765     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1766     0, 0, 646
1767 michael 913 };
1768    
1769     static const yytype_int16 yycheck[] =
1770     {
1771 michael 6801 626, 627, 302, 1, 1, 305, 306, 8, 308, 309,
1772     1, 1, 1, 1, 1, 1, 229, 1, 209, 108,
1773     1, 229, 213, 209, 1, 51, 227, 213, 1, 47,
1774     231, 1, 229, 1, 1, 1, 1, 227, 29, 1,
1775     227, 231, 227, 227, 231, 227, 37, 231, 229, 231,
1776     1, 227, 29, 227, 228, 231, 1, 1, 1, 229,
1777     37, 1, 1, 6, 7, 55, 9, 10, 227, 229,
1778     227, 14, 231, 63, 231, 65, 63, 229, 40, 63,
1779     23, 24, 27, 227, 29, 1, 1, 231, 31, 229,
1780     79, 34, 35, 36, 1, 63, 1, 123, 41, 97,
1781     400, 227, 402, 403, 227, 231, 79, 229, 231, 100,
1782     229, 56, 229, 413, 203, 58, 59, 79, 418, 100,
1783     118, 66, 1, 100, 63, 40, 69, 427, 428, 72,
1784     73, 121, 229, 100, 100, 100, 124, 80, 229, 439,
1785     124, 441, 442, 88, 87, 229, 89, 92, 91, 100,
1786     93, 229, 95, 96, 124, 100, 100, 124, 103, 104,
1787     100, 229, 124, 106, 79, 1, 1, 1, 111, 112,
1788     188, 114, 115, 116, 229, 172, 119, 176, 177, 197,
1789     229, 97, 1, 172, 229, 124, 172, 132, 1074, 1075,
1790     1076, 25, 26, 100, 229, 100, 197, 229, 32, 172,
1791     19, 144, 118, 148, 229, 227, 151, 152, 153, 124,
1792     230, 154, 155, 156, 157, 158, 159, 160, 1, 38,
1793     230, 100, 219, 230, 230, 165, 60, 61, 62, 529,
1794     228, 228, 220, 219, 17, 18, 217, 228, 228, 22,
1795     74, 75, 76, 183, 228, 124, 65, 81, 82, 193,
1796     220, 217, 1, 198, 3, 228, 5, 108, 228, 199,
1797     228, 228, 228, 228, 100, 100, 228, 210, 211, 212,
1798     19, 214, 215, 217, 230, 230, 221, 222, 230, 227,
1799     223, 100, 65, 228, 228, 228, 193, 172, 228, 38,
1800     209, 209, 1, 230, 230, 68, 230, 70, 117, 82,
1801     83, 84, 85, 86, 1, 1, 55, 90, 57, 230,
1802     217, 94, 217, 613, 227, 220, 65, 100, 618, 230,
1803     230, 621, 19, 228, 33, 625, 109, 110, 77, 165,
1804     149, 150, 230, 42, 43, 44, 230, 120, 47, 48,
1805     113, 38, 1, 52, 53, 54, 230, 183, 230, 230,
1806     230, 100, 230, 1, 11, 12, 13, 130, 141, 55,
1807     19, 230, 1, 199, 230, 230, 230, 63, 65, 65,
1808     230, 19, 121, 230, 230, 230, 230, 230, 230, 38,
1809     230, 200, 217, 230, 230, 220, 25, 26, 230, 230,
1810     38, 140, 230, 32, 228, 168, 169, 230, 230, 230,
1811     149, 220, 185, 230, 230, 224, 65, 230, 70, 228,
1812     230, 122, 230, 230, 1, 230, 230, 65, 230, 230,
1813     117, 60, 61, 62, 230, 121, 230, 230, 125, 126,
1814     230, 230, 230, 230, 230, 74, 75, 76, 15, 230,
1815     230, 100, 81, 82, 230, 228, 33, 220, 145, 198,
1816     230, 108, 225, 230, 230, 42, 43, 44, 117, 230,
1817     47, 48, 39, 230, 230, 52, 53, 54, 130, 117,
1818     230, 230, 221, 230, 230, 230, 230, 125, 126, 228,
1819     230, 122, 230, 230, 230, 4, 230, 1, 230, 230,
1820     149, 150, 6, 7, 71, 9, 10, 145, 230, 161,
1821     14, 20, 21, 230, 230, 230, 230, 169, 108, 23,
1822     24, 30, 230, 230, 230, 122, 178, 31, 108, 228,
1823     34, 35, 36, 220, 101, 102, 227, 41, 108, 108,
1824     107, 228, 108, 133, 134, 135, 136, 137, 138, 139,
1825     202, 200, 204, 205, 58, 59, 108, 227, 67, 68,
1826     227, 70, 230, 227, 131, 69, 218, 230, 72, 73,
1827     230, 220, 230, 225, 230, 224, 80, 230, 122, 146,
1828     230, 108, 220, 87, 230, 89, 230, 91, 97, 93,
1829     230, 95, 96, 230, 230, 230, 105, 230, 230, 227,
1830     230, 1217, 106, 230, 230, 230, 230, 111, 112, 230,
1831     114, 115, 116, 230, 230, 119, 230, 230, 127, 230,
1832     129, 130, 230, 230, 230, 1, 230, 3, 230, 5,
1833     230, 230, 108, 209, 209, 1, 108, 108, 147, 108,
1834     144, 208, 108, 19, 209, 209, 209, 108, 108, 108,
1835     154, 155, 156, 157, 158, 159, 160, 70, 108, 226,
1836     169, 27, 38, 29, 108, 174, 108, 108, 209, 178,
1837     230, 230, 209, 182, 209, 209, 209, 209, 187, 55,
1838     209, 57, 191, 209, 209, 108, 209, 209, 227, 65,
1839     56, 227, 230, 202, 122, 204, 205, 227, 207, 230,
1840     66, 77, 230, 122, 122, 122, 210, 211, 212, 218,
1841     214, 215, 230, 230, 230, 230, 225, 130, 230, 223,
1842     230, 227, 88, 230, 100, 230, 92, 230, 227, 230,
1843     230, 0, 1, 227, 100, 4, 108, 103, 104, 230,
1844     230, 230, 230, 230, 230, 121, 230, 16, 161, 230,
1845     19, 230, 21, 227, 209, 230, 169, 230, 209, 28,
1846     209, 209, 209, 209, 140, 178, 132, 122, 122, 227,
1847     209, 40, 108, 149, 108, 122, 45, 46, 122, 122,
1848     122, 122, 148, 122, 122, 151, 152, 153, 209, 202,
1849     122, 204, 205, 122, 1, 64, 122, 122, 227, 68,
1850     227, 122, 227, 227, 230, 218, 108, 229, 108, 78,
1851     17, 18, 225, 227, 230, 22, 47, 108, 49, 50,
1852     230, 230, 198, 230, 227, 230, 230, 227, 227, 98,
1853     99, 227, 198, 227, 809, 810, 811, 812, 813, 814,
1854     815, 227, 227, 227, 113, 221, 227, 227, 227, 227,
1855     227, 108, 227, 227, 108, 221, 222, 230, 65, 108,
1856     108, 130, 122, 108, 47, 108, 49, 50, 108, 227,
1857     122, 122, 209, 142, 143, 82, 83, 84, 85, 86,
1858     122, 122, 230, 90, 122, 122, 108, 94, 122, 122,
1859     122, 108, 122, 100, 227, 122, 122, 166, 122, 227,
1860     227, 122, 109, 110, 47, 227, 122, 227, 227, 227,
1861     179, 227, 227, 120, 227, 184, 227, 227, 227, 227,
1862     189, 227, 227, 192, 227, 122, 227, 122, 227, 227,
1863     227, 162, 163, 164, 141, 227, 167, 168, 227, 170,
1864     171, 227, 173, 227, 175, 227, 227, 178, 227, 180,
1865     181, 227, 227, 227, 227, 186, 227, 227, 230, 190,
1866     227, 227, 227, 194, 195, 196, 227, 122, 227, 227,
1867     201, 227, 227, 122, 227, 206, 122, 227, 185, 162,
1868     163, 164, 122, 227, 167, 168, 122, 170, 171, 209,
1869     173, 227, 175, 122, 108, 178, 122, 180, 181, 227,
1870     122, 230, 227, 186, 227, 122, 209, 190, 227, 227,
1871     122, 194, 195, 196, 227, 227, 227, 227, 201, 162,
1872     163, 164, 230, 206, 167, 168, 122, 170, 171, 122,
1873     173, 209, 175, 122, 230, 178, 122, 180, 181, 227,
1874     122, 122, 122, 186, 122, 227, 227, 190, 227, 122,
1875     227, 194, 195, 196, 227, 227, 227, 227, 201, 227,
1876     227, 227, 227, 206, 227, 227, 227, 227, 227, 227,
1877     227, 227, 122, 227, 227, 227, 227, 227, 122, 227,
1878     227, 122, 122, 227, 122, 230, 227, 108, 227, 227,
1879     232, 122, 227, 230, 227, 227, 227, 227, 232, 227,
1880     227, 128, 227, 227, 227, 130, 227, 227, 227, 227,
1881     128, 227, 227, 130, 227, 128, 227, 227, 227, 227,
1882     227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1883 michael 7061 227, 128, 227, 227, 77, 227, 227, 227, 491, 227,
1884     227, 575, 227, 227, 227, 216, 1302, 1034, 227, 506,
1885     227, 227, 227, 1264, 1262, 227, 332, 231, 227, 227,
1886 michael 6801 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1887 michael 7061 227, 227, 1136, 1240, 227, 230, 230, 455, 227, 227,
1888     227, 227, 227, 215, 227, 1251, 1249, 522, 478, 1273,
1889     232, 261, 227, 232, 561, 232, 232, 230, 227, 227,
1890     588, 227, 1266, 1245, 468, 385, 112, 162, 395, 94,
1891     1106, 1104, 232, -1, -1, -1, -1, -1, -1, -1,
1892 michael 1855 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1893 michael 6801 -1, 283, -1, -1, -1, -1, -1, -1, -1, -1,
1894 michael 7061 291, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1895     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1896     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1897     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1898     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1899     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1900     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1901     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1902     -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1903     -1, -1, 366
1904 michael 913 };
1905    
1906 michael 2473 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1907     symbol of state STATE-NUM. */
1908 michael 913 static const yytype_uint16 yystos[] =
1909     {
1910 michael 6801 0, 234, 0, 1, 4, 16, 19, 21, 28, 40,
1911     45, 46, 64, 68, 78, 98, 99, 113, 130, 142,
1912     143, 166, 179, 184, 189, 192, 235, 240, 245, 265,
1913     271, 277, 285, 299, 319, 343, 357, 372, 379, 383,
1914     393, 402, 423, 429, 435, 439, 445, 499, 513, 227,
1915     228, 229, 229, 320, 403, 430, 229, 440, 229, 358,
1916     424, 344, 229, 272, 300, 373, 229, 229, 394, 229,
1917     278, 229, 384, 1, 29, 37, 100, 266, 267, 268,
1918     269, 270, 1, 25, 26, 32, 60, 61, 62, 74,
1919     75, 76, 81, 82, 500, 501, 502, 503, 504, 505,
1920     506, 507, 508, 509, 510, 511, 512, 229, 229, 229,
1921     1, 63, 436, 437, 438, 229, 1, 6, 7, 9,
1922     10, 14, 23, 24, 31, 34, 35, 36, 41, 58,
1923     59, 69, 72, 73, 80, 87, 89, 91, 93, 95,
1924     96, 106, 111, 112, 114, 115, 116, 119, 144, 154,
1925     155, 156, 157, 158, 159, 160, 210, 211, 212, 214,
1926     215, 223, 446, 447, 448, 449, 450, 451, 452, 453,
1927     454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
1928     464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
1929     474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
1930     484, 485, 486, 487, 488, 492, 496, 497, 498, 229,
1931     229, 229, 1, 97, 118, 241, 242, 243, 244, 229,
1932     229, 229, 1, 33, 42, 43, 44, 47, 48, 52,
1933     53, 54, 514, 515, 516, 517, 518, 519, 520, 521,
1934     522, 523, 524, 1, 27, 29, 56, 66, 88, 92,
1935     100, 103, 104, 132, 148, 151, 152, 153, 198, 221,
1936     222, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1937     255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1938     229, 1, 219, 286, 287, 288, 289, 290, 229, 1,
1939     100, 380, 381, 382, 229, 227, 230, 230, 230, 228,
1940     267, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1941     230, 230, 228, 501, 1, 17, 18, 22, 65, 82,
1942     83, 84, 85, 86, 90, 94, 100, 109, 110, 120,
1943     141, 185, 321, 322, 323, 324, 325, 326, 327, 328,
1944     329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
1945     339, 1, 3, 5, 19, 38, 55, 57, 65, 77,
1946     100, 121, 140, 149, 198, 221, 404, 405, 406, 407,
1947     408, 409, 410, 411, 412, 413, 414, 418, 419, 420,
1948     421, 422, 1, 63, 124, 431, 432, 433, 434, 230,
1949     228, 437, 1, 100, 124, 441, 442, 443, 444, 230,
1950     230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1951     230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1952     230, 230, 230, 230, 493, 489, 230, 230, 230, 230,
1953     230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1954     230, 230, 230, 230, 228, 447, 1, 19, 38, 65,
1955     117, 125, 126, 145, 220, 359, 360, 361, 362, 363,
1956     364, 365, 369, 370, 371, 1, 124, 220, 425, 426,
1957     427, 428, 1, 55, 63, 65, 121, 345, 349, 350,
1958     351, 355, 356, 227, 230, 230, 228, 242, 1, 79,
1959     172, 273, 274, 275, 276, 1, 19, 38, 65, 100,
1960     117, 149, 150, 200, 220, 224, 301, 302, 303, 304,
1961     305, 306, 307, 308, 309, 310, 311, 315, 1, 40,
1962     79, 124, 374, 375, 376, 377, 378, 230, 230, 230,
1963     230, 230, 230, 230, 230, 230, 228, 515, 227, 230,
1964     230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1965     230, 230, 230, 230, 230, 230, 228, 247, 1, 100,
1966     217, 395, 396, 397, 398, 227, 230, 228, 287, 172,
1967     1, 100, 165, 183, 199, 279, 280, 281, 282, 283,
1968     284, 230, 228, 381, 1, 100, 217, 220, 385, 386,
1969     387, 388, 389, 122, 122, 122, 227, 108, 108, 237,
1970     209, 108, 237, 237, 108, 237, 237, 108, 108, 227,
1971     227, 230, 230, 230, 340, 230, 230, 230, 230, 230,
1972     230, 230, 230, 230, 230, 230, 230, 230, 228, 322,
1973     227, 230, 230, 230, 230, 230, 230, 415, 230, 230,
1974     230, 230, 230, 230, 230, 228, 405, 230, 230, 228,
1975     432, 122, 227, 230, 230, 228, 442, 209, 237, 108,
1976     237, 237, 209, 108, 209, 108, 108, 108, 209, 209,
1977     209, 237, 108, 108, 108, 108, 237, 108, 108, 108,
1978     108, 209, 230, 230, 209, 237, 237, 209, 209, 209,
1979     209, 213, 209, 213, 209, 209, 209, 209, 108, 237,
1980     209, 237, 237, 209, 227, 227, 230, 230, 366, 230,
1981     230, 230, 230, 230, 228, 360, 230, 230, 228, 426,
1982     227, 230, 230, 346, 230, 228, 350, 122, 122, 227,
1983     227, 230, 230, 228, 274, 227, 230, 230, 316, 230,
1984     230, 230, 230, 312, 230, 230, 228, 302, 227, 230,
1985     230, 230, 228, 375, 209, 209, 237, 122, 209, 122,
1986     209, 209, 209, 227, 108, 122, 209, 122, 108, 108,
1987     122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1988     122, 227, 227, 230, 399, 228, 396, 209, 227, 229,
1989     227, 230, 230, 230, 230, 228, 280, 122, 227, 227,
1990     230, 390, 230, 228, 386, 227, 227, 227, 227, 133,
1991     134, 135, 136, 137, 138, 139, 236, 237, 227, 227,
1992     227, 227, 227, 227, 227, 227, 227, 227, 108, 108,
1993     237, 230, 108, 108, 108, 237, 108, 108, 237, 122,
1994     108, 108, 237, 108, 239, 239, 227, 122, 176, 177,
1995     122, 209, 122, 122, 230, 122, 122, 108, 122, 122,
1996     122, 122, 227, 122, 122, 227, 227, 122, 122, 227,
1997     227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1998     227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1999     227, 227, 227, 227, 227, 47, 162, 163, 164, 167,
2000     168, 170, 171, 173, 175, 178, 180, 181, 186, 190,
2001     194, 195, 196, 201, 206, 494, 495, 47, 49, 50,
2002     162, 163, 164, 167, 168, 170, 171, 173, 175, 178,
2003     180, 181, 186, 190, 194, 195, 196, 201, 206, 490,
2004     491, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2005     227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2006     227, 122, 209, 230, 122, 108, 122, 122, 122, 227,
2007     122, 122, 227, 122, 122, 230, 108, 353, 354, 227,
2008     227, 227, 122, 122, 227, 122, 209, 230, 122, 122,
2009     122, 209, 230, 122, 122, 227, 122, 122, 122, 227,
2010     227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2011     227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2012     227, 227, 227, 227, 227, 227, 122, 230, 227, 227,
2013     1, 100, 193, 217, 291, 292, 293, 294, 295, 122,
2014     122, 122, 122, 227, 227, 122, 230, 122, 227, 236,
2015     236, 236, 236, 236, 236, 236, 227, 227, 227, 51,
2016     123, 341, 342, 227, 227, 227, 227, 227, 227, 227,
2017     227, 227, 227, 227, 11, 12, 13, 238, 239, 227,
2018     227, 227, 227, 227, 227, 227, 227, 227, 8, 197,
2019     416, 417, 227, 227, 227, 227, 227, 227, 227, 227,
2020     227, 227, 227, 227, 231, 227, 231, 227, 227, 15,
2021     39, 71, 101, 102, 107, 131, 146, 208, 226, 367,
2022     368, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2023     47, 188, 197, 347, 348, 216, 231, 352, 227, 227,
2024     227, 227, 4, 20, 21, 30, 67, 68, 70, 97,
2025     105, 127, 129, 130, 147, 169, 174, 178, 182, 187,
2026     191, 202, 204, 205, 207, 218, 225, 317, 318, 227,
2027     227, 227, 227, 47, 49, 50, 162, 163, 164, 167,
2028     168, 170, 171, 173, 175, 178, 180, 181, 186, 190,
2029     194, 195, 196, 201, 206, 313, 314, 227, 227, 227,
2030     227, 227, 227, 70, 130, 161, 169, 178, 202, 204,
2031     205, 218, 225, 400, 401, 227, 230, 230, 296, 228,
2032     292, 227, 227, 227, 227, 227, 70, 130, 161, 169,
2033     178, 202, 204, 205, 218, 225, 391, 392, 227, 227,
2034     231, 238, 238, 238, 227, 231, 495, 491, 227, 231,
2035     227, 231, 108, 354, 227, 232, 232, 232, 232, 232,
2036 michael 7061 232, 227, 231, 227, 231, 227, 231, 122, 203, 239,
2037     230, 227, 227, 231, 342, 417, 368, 348, 128, 130,
2038     128, 130, 128, 128, 318, 314, 401, 227, 227, 227,
2039     68, 70, 113, 130, 168, 169, 220, 225, 297, 298,
2040     392, 227, 231, 298
2041 michael 913 };
2042    
2043 michael 2473 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2044     static const yytype_uint16 yyr1[] =
2045     {
2046 michael 6801 0, 233, 234, 234, 235, 235, 235, 235, 235, 235,
2047     235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
2048     235, 235, 235, 235, 235, 235, 235, 235, 236, 236,
2049     237, 237, 237, 237, 237, 237, 237, 237, 238, 238,
2050     239, 239, 239, 239, 240, 241, 241, 242, 242, 242,
2051     243, 244, 245, 246, 246, 247, 247, 247, 247, 247,
2052     247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
2053     247, 247, 247, 248, 249, 250, 251, 252, 253, 254,
2054     255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2055     265, 266, 266, 267, 267, 267, 267, 268, 269, 270,
2056     272, 271, 273, 273, 274, 274, 274, 275, 276, 278,
2057     277, 279, 279, 280, 280, 280, 280, 280, 281, 282,
2058     283, 284, 285, 286, 286, 287, 287, 287, 288, 290,
2059     289, 291, 291, 292, 292, 292, 292, 293, 294, 294,
2060     296, 295, 297, 297, 298, 298, 298, 298, 298, 298,
2061     298, 298, 300, 299, 301, 301, 302, 302, 302, 302,
2062     302, 302, 302, 302, 302, 302, 302, 303, 304, 305,
2063     306, 307, 308, 309, 310, 312, 311, 313, 313, 314,
2064     314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
2065     314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
2066     314, 316, 315, 317, 317, 318, 318, 318, 318, 318,
2067     318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
2068     318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
2069 michael 7061 318, 318, 318, 318, 320, 319, 321, 321, 322, 322,
2070 michael 6801 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
2071 michael 7061 322, 322, 322, 322, 322, 322, 323, 324, 325, 326,
2072     327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
2073     337, 338, 340, 339, 341, 341, 342, 342, 344, 343,
2074     346, 345, 347, 347, 348, 348, 348, 349, 349, 350,
2075     350, 350, 350, 350, 352, 351, 353, 353, 354, 354,
2076     355, 356, 358, 357, 359, 359, 360, 360, 360, 360,
2077     360, 360, 360, 360, 360, 361, 362, 363, 364, 366,
2078     365, 367, 367, 368, 368, 368, 368, 368, 368, 368,
2079     368, 368, 368, 369, 370, 371, 373, 372, 374, 374,
2080     375, 375, 375, 375, 376, 377, 378, 379, 380, 380,
2081     381, 381, 382, 384, 383, 385, 385, 386, 386, 386,
2082     386, 387, 388, 390, 389, 391, 391, 392, 392, 392,
2083     392, 392, 392, 392, 392, 392, 392, 394, 393, 395,
2084     395, 396, 396, 396, 397, 399, 398, 400, 400, 401,
2085     401, 401, 401, 401, 401, 401, 401, 401, 401, 403,
2086     402, 404, 404, 405, 405, 405, 405, 405, 405, 405,
2087     405, 405, 405, 405, 405, 405, 405, 405, 406, 407,
2088     408, 409, 410, 411, 412, 413, 413, 415, 414, 416,
2089     416, 417, 417, 418, 419, 420, 421, 422, 424, 423,
2090     425, 425, 426, 426, 426, 427, 428, 430, 429, 431,
2091     431, 432, 432, 432, 433, 434, 435, 436, 436, 437,
2092     437, 438, 440, 439, 441, 441, 442, 442, 442, 443,
2093     444, 445, 446, 446, 447, 447, 447, 447, 447, 447,
2094 michael 6801 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2095     447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2096     447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2097 michael 7061 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2098     448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
2099     458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
2100     468, 469, 470, 471, 472, 473, 474, 474, 475, 475,
2101     476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
2102     486, 487, 489, 488, 490, 490, 491, 491, 491, 491,
2103 michael 6801 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
2104 michael 7061 491, 491, 491, 491, 491, 491, 491, 491, 493, 492,
2105     494, 494, 495, 495, 495, 495, 495, 495, 495, 495,
2106 michael 6801 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
2107 michael 7061 495, 495, 496, 497, 498, 499, 500, 500, 501, 501,
2108     501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
2109     502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
2110     512, 513, 514, 514, 515, 515, 515, 515, 515, 515,
2111     515, 515, 515, 515, 516, 517, 518, 519, 520, 521,
2112     522, 523, 524
2113 michael 2473 };
2114 michael 913
2115 michael 2473 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2116     static const yytype_uint8 yyr2[] =
2117     {
2118     0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
2119     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2120 michael 4545 1, 1, 1, 1, 1, 1, 2, 2, 0, 1,
2121     2, 3, 3, 3, 3, 3, 3, 3, 0, 1,
2122     2, 3, 3, 3, 5, 2, 1, 1, 1, 2,
2123     4, 4, 5, 2, 1, 1, 1, 1, 1, 1,
2124 michael 2473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2125 michael 4545 1, 1, 2, 4, 4, 4, 4, 4, 4, 4,
2126     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2127     5, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2128     0, 6, 2, 1, 1, 1, 2, 4, 4, 0,
2129     6, 2, 1, 1, 1, 1, 1, 2, 4, 4,
2130     4, 4, 5, 2, 1, 1, 1, 2, 4, 0,
2131     6, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2132     0, 5, 3, 1, 1, 1, 1, 1, 1, 1,
2133 michael 5806 1, 1, 0, 6, 2, 1, 1, 1, 1, 1,
2134 michael 6595 1, 1, 1, 1, 1, 1, 2, 4, 4, 4,
2135     4, 4, 4, 4, 4, 0, 5, 3, 1, 1,
2136 michael 4545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2137     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2138 michael 6595 1, 0, 5, 3, 1, 3, 1, 3, 1, 3,
2139 michael 7061 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2140     1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2141     3, 1, 1, 1, 0, 6, 2, 1, 1, 1,
2142 michael 2473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2143 michael 7061 1, 1, 1, 1, 1, 2, 4, 4, 4, 4,
2144 michael 6490 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2145 michael 7061 4, 4, 0, 5, 3, 1, 1, 1, 0, 6,
2146     0, 5, 3, 1, 1, 1, 1, 2, 1, 1,
2147     1, 1, 1, 2, 0, 5, 3, 1, 1, 3,
2148     4, 4, 0, 6, 2, 1, 1, 1, 1, 1,
2149     1, 1, 1, 1, 2, 4, 4, 4, 4, 0,
2150     5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
2151     1, 1, 1, 4, 4, 4, 0, 6, 2, 1,
2152     1, 1, 1, 2, 4, 4, 4, 5, 2, 1,
2153     1, 1, 4, 0, 6, 2, 1, 1, 1, 1,
2154     2, 4, 4, 0, 5, 3, 1, 1, 1, 1,
2155     1, 1, 1, 1, 1, 1, 1, 0, 6, 2,
2156     1, 1, 1, 2, 4, 0, 5, 3, 1, 1,
2157     1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2158     6, 2, 1, 1, 1, 1, 1, 1, 1, 1,
2159     1, 1, 1, 1, 1, 1, 1, 2, 4, 4,
2160     4, 4, 4, 4, 4, 4, 4, 0, 5, 3,
2161     1, 1, 1, 4, 4, 4, 4, 4, 0, 6,
2162     2, 1, 1, 1, 1, 4, 4, 0, 6, 2,
2163     1, 1, 1, 1, 4, 4, 5, 2, 1, 1,
2164     1, 4, 0, 6, 2, 1, 1, 1, 1, 4,
2165     4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
2166 michael 6490 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2167 michael 5987 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2168 michael 5004 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2169 michael 7061 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2170 michael 2473 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2171     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2172     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2173 michael 6595 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2174 michael 7061 4, 4, 0, 5, 3, 1, 1, 1, 1, 1,
2175 michael 4313 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2176 michael 7061 1, 1, 1, 1, 1, 1, 1, 1, 0, 5,
2177     3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2178 michael 2473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2179 michael 7061 1, 1, 4, 4, 4, 5, 2, 1, 1, 1,
2180 michael 6490 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2181 michael 6801 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2182 michael 7061 4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
2183     1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
2184     4, 4, 4
2185 michael 2473 };
2186 michael 913
2187    
2188 michael 2473 #define yyerrok (yyerrstatus = 0)
2189     #define yyclearin (yychar = YYEMPTY)
2190     #define YYEMPTY (-2)
2191     #define YYEOF 0
2192 michael 913
2193 michael 2473 #define YYACCEPT goto yyacceptlab
2194     #define YYABORT goto yyabortlab
2195     #define YYERROR goto yyerrorlab
2196 michael 913
2197 michael 2473
2198 michael 913 #define YYRECOVERING() (!!yyerrstatus)
2199    
2200 michael 1425 #define YYBACKUP(Token, Value) \
2201     do \
2202     if (yychar == YYEMPTY) \
2203     { \
2204     yychar = (Token); \
2205     yylval = (Value); \
2206     YYPOPSTACK (yylen); \
2207     yystate = *yyssp; \
2208     goto yybackup; \
2209     } \
2210     else \
2211     { \
2212 michael 913 yyerror (YY_("syntax error: cannot back up")); \
2213 michael 2473 YYERROR; \
2214     } \
2215     while (0)
2216 michael 913
2217 michael 1651 /* Error token number */
2218 michael 2473 #define YYTERROR 1
2219     #define YYERRCODE 256
2220 michael 913
2221    
2222    
2223     /* Enable debugging if requested. */
2224     #if YYDEBUG
2225    
2226     # ifndef YYFPRINTF
2227     # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2228     # define YYFPRINTF fprintf
2229     # endif
2230    
2231 michael 2473 # define YYDPRINTF(Args) \
2232     do { \
2233     if (yydebug) \
2234     YYFPRINTF Args; \
2235     } while (0)
2236 michael 913
2237 michael 2473 /* This macro is provided for backward compatibility. */
2238     #ifndef YY_LOCATION_PRINT
2239     # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2240     #endif
2241 michael 913
2242    
2243 michael 2473 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2244     do { \
2245     if (yydebug) \
2246     { \
2247     YYFPRINTF (stderr, "%s ", Title); \
2248     yy_symbol_print (stderr, \
2249     Type, Value); \
2250     YYFPRINTF (stderr, "\n"); \
2251     } \
2252     } while (0)
2253 michael 913
2254 michael 2473
2255     /*----------------------------------------.
2256     | Print this symbol's value on YYOUTPUT. |
2257     `----------------------------------------*/
2258    
2259 michael 913 static void
2260     yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2261     {
2262 michael 1425 FILE *yyo = yyoutput;
2263     YYUSE (yyo);
2264 michael 913 if (!yyvaluep)
2265     return;
2266     # ifdef YYPRINT
2267     if (yytype < YYNTOKENS)
2268     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2269     # endif
2270 michael 1835 YYUSE (yytype);
2271 michael 913 }
2272    
2273    
2274     /*--------------------------------.
2275     | Print this symbol on YYOUTPUT. |
2276     `--------------------------------*/
2277    
2278     static void
2279     yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2280     {
2281 michael 2473 YYFPRINTF (yyoutput, "%s %s (",
2282     yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2283 michael 913
2284     yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2285     YYFPRINTF (yyoutput, ")");
2286     }
2287    
2288     /*------------------------------------------------------------------.
2289     | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2290     | TOP (included). |
2291     `------------------------------------------------------------------*/
2292    
2293     static void
2294 michael 967 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2295 michael 913 {
2296     YYFPRINTF (stderr, "Stack now");
2297 michael 967 for (; yybottom <= yytop; yybottom++)
2298     {
2299     int yybot = *yybottom;
2300     YYFPRINTF (stderr, " %d", yybot);
2301     }
2302 michael 913 YYFPRINTF (stderr, "\n");
2303     }
2304    
2305 michael 2473 # define YY_STACK_PRINT(Bottom, Top) \
2306     do { \
2307     if (yydebug) \
2308     yy_stack_print ((Bottom), (Top)); \
2309     } while (0)
2310 michael 913
2311    
2312     /*------------------------------------------------.
2313     | Report that the YYRULE is going to be reduced. |
2314     `------------------------------------------------*/
2315    
2316     static void
2317 michael 2473 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
2318 michael 913 {
2319 michael 2473 unsigned long int yylno = yyrline[yyrule];
2320 michael 913 int yynrhs = yyr2[yyrule];
2321     int yyi;
2322     YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2323 michael 2473 yyrule - 1, yylno);
2324 michael 913 /* The symbols being reduced. */
2325     for (yyi = 0; yyi < yynrhs; yyi++)
2326     {
2327 michael 967 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2328 michael 2473 yy_symbol_print (stderr,
2329     yystos[yyssp[yyi + 1 - yynrhs]],
2330     &(yyvsp[(yyi + 1) - (yynrhs)])
2331     );
2332 michael 967 YYFPRINTF (stderr, "\n");
2333 michael 913 }
2334     }
2335    
2336 michael 2473 # define YY_REDUCE_PRINT(Rule) \
2337     do { \
2338     if (yydebug) \
2339     yy_reduce_print (yyssp, yyvsp, Rule); \
2340     } while (0)
2341 michael 913
2342     /* Nonzero means print parse trace. It is left uninitialized so that
2343     multiple parsers can coexist. */
2344     int yydebug;
2345     #else /* !YYDEBUG */
2346     # define YYDPRINTF(Args)
2347     # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2348     # define YY_STACK_PRINT(Bottom, Top)
2349     # define YY_REDUCE_PRINT(Rule)
2350     #endif /* !YYDEBUG */
2351    
2352    
2353     /* YYINITDEPTH -- initial size of the parser's stacks. */
2354 michael 2473 #ifndef YYINITDEPTH
2355 michael 913 # define YYINITDEPTH 200
2356     #endif
2357    
2358     /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2359     if the built-in stack extension method is used).
2360    
2361     Do not make this value too large; the results are undefined if
2362     YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2363     evaluated with infinite-precision integer arithmetic. */
2364    
2365     #ifndef YYMAXDEPTH
2366     # define YYMAXDEPTH 10000
2367     #endif
2368    
2369    
2370     #if YYERROR_VERBOSE
2371    
2372     # ifndef yystrlen
2373     # if defined __GLIBC__ && defined _STRING_H
2374     # define yystrlen strlen
2375     # else
2376     /* Return the length of YYSTR. */
2377     static YYSIZE_T
2378     yystrlen (const char *yystr)
2379     {
2380     YYSIZE_T yylen;
2381     for (yylen = 0; yystr[yylen]; yylen++)
2382     continue;
2383     return yylen;
2384     }
2385     # endif
2386     # endif
2387    
2388     # ifndef yystpcpy
2389     # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2390     # define yystpcpy stpcpy
2391     # else
2392     /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2393     YYDEST. */
2394     static char *
2395     yystpcpy (char *yydest, const char *yysrc)
2396     {
2397     char *yyd = yydest;
2398     const char *yys = yysrc;
2399    
2400     while ((*yyd++ = *yys++) != '\0')
2401     continue;
2402    
2403     return yyd - 1;
2404     }
2405     # endif
2406     # endif
2407    
2408     # ifndef yytnamerr
2409     /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2410     quotes and backslashes, so that it's suitable for yyerror. The
2411     heuristic is that double-quoting is unnecessary unless the string
2412     contains an apostrophe, a comma, or backslash (other than
2413     backslash-backslash). YYSTR is taken from yytname. If YYRES is
2414     null, do not copy; instead, return the length of what the result
2415     would have been. */
2416     static YYSIZE_T
2417     yytnamerr (char *yyres, const char *yystr)
2418     {
2419     if (*yystr == '"')
2420     {
2421     YYSIZE_T yyn = 0;
2422     char const *yyp = yystr;
2423    
2424     for (;;)
2425 michael 2473 switch (*++yyp)
2426     {
2427     case '\'':
2428     case ',':
2429     goto do_not_strip_quotes;
2430 michael 913
2431 michael 2473 case '\\':
2432     if (*++yyp != '\\')
2433     goto do_not_strip_quotes;
2434     /* Fall through. */
2435     default:
2436     if (yyres)
2437     yyres[yyn] = *yyp;
2438     yyn++;
2439     break;
2440 michael 913
2441 michael 2473 case '"':
2442     if (yyres)
2443     yyres[yyn] = '\0';
2444     return yyn;
2445     }
2446 michael 913 do_not_strip_quotes: ;
2447     }
2448    
2449     if (! yyres)
2450     return yystrlen (yystr);
2451    
2452     return yystpcpy (yyres, yystr) - yyres;
2453     }
2454     # endif
2455    
2456 michael 1133 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2457     about the unexpected token YYTOKEN for the state stack whose top is
2458     YYSSP.
2459    
2460     Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2461     not large enough to hold the message. In that case, also set
2462     *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2463     required number of bytes is too large to store. */
2464     static int
2465     yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2466     yytype_int16 *yyssp, int yytoken)
2467 michael 913 {
2468 michael 2570 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2469 michael 1133 YYSIZE_T yysize = yysize0;
2470     enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2471     /* Internationalized format string. */
2472 michael 2570 const char *yyformat = YY_NULLPTR;
2473 michael 1133 /* Arguments of yyformat. */
2474     char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2475     /* Number of reported tokens (one for the "unexpected", one per
2476     "expected"). */
2477     int yycount = 0;
2478 michael 913
2479 michael 1133 /* There are many possibilities here to consider:
2480     - If this state is a consistent state with a default action, then
2481     the only way this function was invoked is if the default action
2482     is an error action. In that case, don't check for expected
2483     tokens because there are none.
2484     - The only way there can be no lookahead present (in yychar) is if
2485     this state is a consistent state with a default action. Thus,
2486     detecting the absence of a lookahead is sufficient to determine
2487     that there is no unexpected or expected token to report. In that
2488     case, just report a simple "syntax error".
2489     - Don't assume there isn't a lookahead just because this state is a
2490     consistent state with a default action. There might have been a
2491     previous inconsistent state, consistent state with a non-default
2492     action, or user semantic action that manipulated yychar.
2493     - Of course, the expected token list depends on states to have
2494     correct lookahead information, and it depends on the parser not
2495     to perform extra reductions after fetching a lookahead from the
2496     scanner and before detecting a syntax error. Thus, state merging
2497     (from LALR or IELR) and default reductions corrupt the expected
2498     token list. However, the list is correct for canonical LR with
2499     one exception: it will still contain any token that will not be
2500     accepted due to an error action in a later state.
2501     */
2502     if (yytoken != YYEMPTY)
2503 michael 913 {
2504 michael 1133 int yyn = yypact[*yyssp];
2505     yyarg[yycount++] = yytname[yytoken];
2506     if (!yypact_value_is_default (yyn))
2507     {
2508     /* Start YYX at -YYN if negative to avoid negative indexes in
2509     YYCHECK. In other words, skip the first -YYN actions for
2510     this state because they are default actions. */
2511     int yyxbegin = yyn < 0 ? -yyn : 0;
2512     /* Stay within bounds of both yycheck and yytname. */
2513     int yychecklim = YYLAST - yyn + 1;
2514     int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2515     int yyx;
2516 michael 913
2517 michael 1133 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2518     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2519     && !yytable_value_is_error (yytable[yyx + yyn]))
2520     {
2521     if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2522     {
2523     yycount = 1;
2524     yysize = yysize0;
2525     break;
2526     }
2527     yyarg[yycount++] = yytname[yyx];
2528 michael 1680 {
2529 michael 2570 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2530 michael 1680 if (! (yysize <= yysize1
2531     && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2532     return 2;
2533     yysize = yysize1;
2534     }
2535 michael 1133 }
2536     }
2537     }
2538 michael 913
2539 michael 1133 switch (yycount)
2540     {
2541     # define YYCASE_(N, S) \
2542     case N: \
2543     yyformat = S; \
2544     break
2545     YYCASE_(0, YY_("syntax error"));
2546     YYCASE_(1, YY_("syntax error, unexpected %s"));
2547     YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2548     YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2549     YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2550     YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2551     # undef YYCASE_
2552     }
2553 michael 913
2554 michael 1680 {
2555     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2556     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2557     return 2;
2558     yysize = yysize1;
2559     }
2560 michael 913
2561 michael 1133 if (*yymsg_alloc < yysize)
2562     {
2563     *yymsg_alloc = 2 * yysize;
2564     if (! (yysize <= *yymsg_alloc
2565     && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2566     *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2567     return 1;
2568     }
2569 michael 913
2570 michael 1133 /* Avoid sprintf, as that infringes on the user's name space.
2571     Don't have undefined behavior even if the translation
2572     produced a string with the wrong number of "%s"s. */
2573     {
2574     char *yyp = *yymsg;
2575     int yyi = 0;
2576     while ((*yyp = *yyformat) != '\0')
2577     if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2578     {
2579     yyp += yytnamerr (yyp, yyarg[yyi++]);
2580     yyformat += 2;
2581     }
2582     else
2583     {
2584     yyp++;
2585     yyformat++;
2586     }
2587     }
2588     return 0;
2589 michael 913 }
2590     #endif /* YYERROR_VERBOSE */
2591    
2592     /*-----------------------------------------------.
2593     | Release the memory associated to this symbol. |
2594     `-----------------------------------------------*/
2595    
2596     static void
2597     yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2598     {
2599     YYUSE (yyvaluep);
2600     if (!yymsg)
2601     yymsg = "Deleting";
2602     YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2603    
2604 michael 2473 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2605 michael 1835 YYUSE (yytype);
2606 michael 2473 YY_IGNORE_MAYBE_UNINITIALIZED_END
2607 michael 913 }
2608    
2609 michael 1133
2610 michael 913
2611    
2612 michael 967 /* The lookahead symbol. */
2613 michael 913 int yychar;
2614    
2615 michael 967 /* The semantic value of the lookahead symbol. */
2616 michael 2473 YYSTYPE yylval;
2617 michael 913 /* Number of syntax errors so far. */
2618     int yynerrs;
2619    
2620    
2621 michael 1133 /*----------.
2622     | yyparse. |
2623     `----------*/
2624 michael 913
2625     int
2626     yyparse (void)
2627     {
2628 michael 967 int yystate;
2629     /* Number of tokens to shift before error messages enabled. */
2630     int yyerrstatus;
2631 michael 913
2632 michael 967 /* The stacks and their tools:
2633 michael 2473 'yyss': related to states.
2634     'yyvs': related to semantic values.
2635 michael 913
2636 michael 1425 Refer to the stacks through separate pointers, to allow yyoverflow
2637 michael 967 to reallocate them elsewhere. */
2638 michael 913
2639 michael 967 /* The state stack. */
2640     yytype_int16 yyssa[YYINITDEPTH];
2641     yytype_int16 *yyss;
2642     yytype_int16 *yyssp;
2643 michael 913
2644 michael 967 /* The semantic value stack. */
2645     YYSTYPE yyvsa[YYINITDEPTH];
2646     YYSTYPE *yyvs;
2647     YYSTYPE *yyvsp;
2648 michael 913
2649 michael 967 YYSIZE_T yystacksize;
2650 michael 913
2651 michael 967 int yyn;
2652     int yyresult;
2653     /* Lookahead token as an internal (translated) token number. */
2654 michael 1619 int yytoken = 0;
2655 michael 913 /* The variables used to return semantic value and location from the
2656     action routines. */
2657     YYSTYPE yyval;
2658    
2659 michael 967 #if YYERROR_VERBOSE
2660     /* Buffer for error messages, and its allocated size. */
2661     char yymsgbuf[128];
2662     char *yymsg = yymsgbuf;
2663     YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2664     #endif
2665 michael 913
2666 michael 967 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2667    
2668 michael 913 /* The number of symbols on the RHS of the reduced rule.
2669     Keep to zero when no symbol should be popped. */
2670     int yylen = 0;
2671    
2672 michael 1651 yyssp = yyss = yyssa;
2673     yyvsp = yyvs = yyvsa;
2674 michael 967 yystacksize = YYINITDEPTH;
2675    
2676 michael 913 YYDPRINTF ((stderr, "Starting parse\n"));
2677    
2678     yystate = 0;
2679     yyerrstatus = 0;
2680     yynerrs = 0;
2681 michael 967 yychar = YYEMPTY; /* Cause a token to be read. */
2682 michael 913 goto yysetstate;
2683    
2684     /*------------------------------------------------------------.
2685     | yynewstate -- Push a new state, which is found in yystate. |
2686     `------------------------------------------------------------*/
2687     yynewstate:
2688     /* In all cases, when you get here, the value and location stacks
2689     have just been pushed. So pushing a state here evens the stacks. */
2690     yyssp++;
2691    
2692     yysetstate:
2693     *yyssp = yystate;
2694    
2695     if (yyss + yystacksize - 1 <= yyssp)
2696     {
2697     /* Get the current used size of the three stacks, in elements. */
2698     YYSIZE_T yysize = yyssp - yyss + 1;
2699    
2700     #ifdef yyoverflow
2701     {
2702 michael 2473 /* Give user a chance to reallocate the stack. Use copies of
2703     these so that the &'s don't force the real ones into
2704     memory. */
2705     YYSTYPE *yyvs1 = yyvs;
2706     yytype_int16 *yyss1 = yyss;
2707 michael 913
2708 michael 2473 /* Each stack pointer address is followed by the size of the
2709     data in use in that stack, in bytes. This used to be a
2710     conditional around just the two extra args, but that might
2711     be undefined if yyoverflow is a macro. */
2712     yyoverflow (YY_("memory exhausted"),
2713     &yyss1, yysize * sizeof (*yyssp),
2714     &yyvs1, yysize * sizeof (*yyvsp),
2715     &yystacksize);
2716 michael 913
2717 michael 2473 yyss = yyss1;
2718     yyvs = yyvs1;
2719 michael 913 }
2720     #else /* no yyoverflow */
2721     # ifndef YYSTACK_RELOCATE
2722     goto yyexhaustedlab;
2723     # else
2724     /* Extend the stack our own way. */
2725     if (YYMAXDEPTH <= yystacksize)
2726 michael 2473 goto yyexhaustedlab;
2727 michael 913 yystacksize *= 2;
2728     if (YYMAXDEPTH < yystacksize)
2729 michael 2473 yystacksize = YYMAXDEPTH;
2730 michael 913
2731     {
2732 michael 2473 yytype_int16 *yyss1 = yyss;
2733     union yyalloc *yyptr =
2734     (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2735     if (! yyptr)
2736     goto yyexhaustedlab;
2737     YYSTACK_RELOCATE (yyss_alloc, yyss);
2738     YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2739 michael 913 # undef YYSTACK_RELOCATE
2740 michael 2473 if (yyss1 != yyssa)
2741     YYSTACK_FREE (yyss1);
2742 michael 913 }
2743     # endif
2744     #endif /* no yyoverflow */
2745    
2746     yyssp = yyss + yysize - 1;
2747     yyvsp = yyvs + yysize - 1;
2748    
2749     YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2750 michael 2473 (unsigned long int) yystacksize));
2751 michael 913
2752     if (yyss + yystacksize - 1 <= yyssp)
2753 michael 2473 YYABORT;
2754 michael 913 }
2755    
2756     YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2757    
2758 michael 967 if (yystate == YYFINAL)
2759     YYACCEPT;
2760    
2761 michael 913 goto yybackup;
2762    
2763     /*-----------.
2764     | yybackup. |
2765     `-----------*/
2766     yybackup:
2767    
2768     /* Do appropriate processing given the current state. Read a
2769 michael 967 lookahead token if we need one and don't already have one. */
2770 michael 913
2771 michael 967 /* First try to decide what to do without reference to lookahead token. */
2772 michael 913 yyn = yypact[yystate];
2773 michael 1133 if (yypact_value_is_default (yyn))
2774 michael 913 goto yydefault;
2775    
2776 michael 967 /* Not known => get a lookahead token if don't already have one. */
2777 michael 913
2778 michael 967 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
2779 michael 913 if (yychar == YYEMPTY)
2780     {
2781     YYDPRINTF ((stderr, "Reading a token: "));
2782 michael 2473 yychar = yylex ();
2783 michael 913 }
2784    
2785     if (yychar <= YYEOF)
2786     {
2787     yychar = yytoken = YYEOF;
2788     YYDPRINTF ((stderr, "Now at end of input.\n"));
2789     }
2790     else
2791     {
2792     yytoken = YYTRANSLATE (yychar);
2793     YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2794     }
2795    
2796     /* If the proper action on seeing token YYTOKEN is to reduce or to
2797     detect an error, take that action. */
2798     yyn += yytoken;
2799     if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2800     goto yydefault;
2801     yyn = yytable[yyn];
2802     if (yyn <= 0)
2803     {
2804 michael 1133 if (yytable_value_is_error (yyn))
2805     goto yyerrlab;
2806 michael 913 yyn = -yyn;
2807     goto yyreduce;
2808     }
2809    
2810     /* Count tokens shifted since error; after three, turn off error
2811     status. */
2812     if (yyerrstatus)
2813     yyerrstatus--;
2814    
2815 michael 967 /* Shift the lookahead token. */
2816 michael 913 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2817    
2818 michael 967 /* Discard the shifted token. */
2819     yychar = YYEMPTY;
2820 michael 913
2821     yystate = yyn;
2822 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2823 michael 913 *++yyvsp = yylval;
2824 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_END
2825 michael 913
2826     goto yynewstate;
2827    
2828    
2829     /*-----------------------------------------------------------.
2830     | yydefault -- do the default action for the current state. |
2831     `-----------------------------------------------------------*/
2832     yydefault:
2833     yyn = yydefact[yystate];
2834     if (yyn == 0)
2835     goto yyerrlab;
2836     goto yyreduce;
2837    
2838    
2839     /*-----------------------------.
2840     | yyreduce -- Do a reduction. |
2841     `-----------------------------*/
2842     yyreduce:
2843     /* yyn is the number of a rule to reduce with. */
2844     yylen = yyr2[yyn];
2845    
2846     /* If YYLEN is nonzero, implement the default value of the action:
2847 michael 2473 '$$ = $1'.
2848 michael 913
2849     Otherwise, the following line sets YYVAL to garbage.
2850     This behavior is undocumented and Bison
2851     users should not rely upon it. Assigning to YYVAL
2852     unconditionally makes the parser a bit smaller, and it avoids a
2853     GCC warning that YYVAL may be used uninitialized. */
2854     yyval = yyvsp[1-yylen];
2855    
2856    
2857     YY_REDUCE_PRINT (yyn);
2858     switch (yyn)
2859     {
2860 michael 4545 case 28:
2861 michael 6801 #line 414 "conf_parser.y" /* yacc.c:1646 */
2862 michael 913 { (yyval.number) = 0; }
2863 michael 7061 #line 2864 "conf_parser.c" /* yacc.c:1646 */
2864 michael 913 break;
2865    
2866 michael 4545 case 30:
2867 michael 6801 #line 415 "conf_parser.y" /* yacc.c:1646 */
2868 michael 3473 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2869 michael 7061 #line 2870 "conf_parser.c" /* yacc.c:1646 */
2870 michael 913 break;
2871    
2872 michael 4545 case 31:
2873 michael 6801 #line 416 "conf_parser.y" /* yacc.c:1646 */
2874 michael 3473 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2875 michael 7061 #line 2876 "conf_parser.c" /* yacc.c:1646 */
2876 michael 913 break;
2877    
2878 michael 4545 case 32:
2879 michael 6801 #line 417 "conf_parser.y" /* yacc.c:1646 */
2880 michael 3473 { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
2881 michael 7061 #line 2882 "conf_parser.c" /* yacc.c:1646 */
2882 michael 913 break;
2883    
2884 michael 4545 case 33:
2885 michael 6801 #line 418 "conf_parser.y" /* yacc.c:1646 */
2886 michael 3473 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
2887 michael 7061 #line 2888 "conf_parser.c" /* yacc.c:1646 */
2888 michael 913 break;
2889    
2890 michael 4545 case 34:
2891 michael 6801 #line 419 "conf_parser.y" /* yacc.c:1646 */
2892 michael 3473 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
2893 michael 7061 #line 2894 "conf_parser.c" /* yacc.c:1646 */
2894 michael 913 break;
2895    
2896 michael 4545 case 35:
2897 michael 6801 #line 420 "conf_parser.y" /* yacc.c:1646 */
2898 michael 3473 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
2899 michael 7061 #line 2900 "conf_parser.c" /* yacc.c:1646 */
2900 michael 913 break;
2901    
2902 michael 4545 case 36:
2903 michael 6801 #line 421 "conf_parser.y" /* yacc.c:1646 */
2904 michael 3473 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
2905 michael 7061 #line 2906 "conf_parser.c" /* yacc.c:1646 */
2906 michael 913 break;
2907    
2908 michael 4545 case 37:
2909 michael 6801 #line 422 "conf_parser.y" /* yacc.c:1646 */
2910 michael 3473 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
2911 michael 7061 #line 2912 "conf_parser.c" /* yacc.c:1646 */
2912 michael 1783 break;
2913    
2914 michael 4545 case 38:
2915 michael 6801 #line 425 "conf_parser.y" /* yacc.c:1646 */
2916 michael 1783 { (yyval.number) = 0; }
2917 michael 7061 #line 2918 "conf_parser.c" /* yacc.c:1646 */
2918 michael 1783 break;
2919    
2920 michael 4545 case 40:
2921 michael 6801 #line 426 "conf_parser.y" /* yacc.c:1646 */
2922 michael 2473 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2923 michael 7061 #line 2924 "conf_parser.c" /* yacc.c:1646 */
2924 michael 913 break;
2925    
2926 michael 4545 case 41:
2927 michael 6801 #line 427 "conf_parser.y" /* yacc.c:1646 */
2928 michael 2473 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2929 michael 7061 #line 2930 "conf_parser.c" /* yacc.c:1646 */
2930 michael 913 break;
2931    
2932 michael 4545 case 42:
2933 michael 6801 #line 428 "conf_parser.y" /* yacc.c:1646 */
2934 michael 2473 { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
2935 michael 7061 #line 2936 "conf_parser.c" /* yacc.c:1646 */
2936 michael 913 break;
2937    
2938 michael 4545 case 43:
2939 michael 6801 #line 429 "conf_parser.y" /* yacc.c:1646 */
2940 michael 2473 { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
2941 michael 7061 #line 2942 "conf_parser.c" /* yacc.c:1646 */
2942 michael 913 break;
2943    
2944 michael 4545 case 50:
2945 michael 6801 #line 442 "conf_parser.y" /* yacc.c:1646 */
2946 michael 913 {
2947 michael 967 if (conf_parser_ctx.pass == 2)
2948 michael 978 add_conf_module(libio_basename(yylval.string));
2949 michael 913 }
2950 michael 7061 #line 2951 "conf_parser.c" /* yacc.c:1646 */
2951 michael 913 break;
2952    
2953 michael 4545 case 51:
2954 michael 6801 #line 448 "conf_parser.y" /* yacc.c:1646 */
2955 michael 913 {
2956 michael 967 if (conf_parser_ctx.pass == 2)
2957 michael 913 mod_add_path(yylval.string);
2958     }
2959 michael 7061 #line 2960 "conf_parser.c" /* yacc.c:1646 */
2960 michael 913 break;
2961    
2962 michael 4545 case 73:
2963 michael 6801 #line 481 "conf_parser.y" /* yacc.c:1646 */
2964 michael 913 {
2965 michael 1024 #ifdef HAVE_LIBCRYPTO
2966 michael 4499 if (conf_parser_ctx.pass == 2)
2967 michael 913 {
2968 michael 4340 if (!ConfigServerInfo.rsa_private_key_file)
2969 michael 913 {
2970 michael 1752 conf_error_report("No rsa_private_key_file specified, SSL disabled");
2971 michael 913 break;
2972     }
2973    
2974 michael 4624 if (SSL_CTX_use_certificate_chain_file(ConfigServerInfo.server_ctx, yylval.string) <= 0 ||
2975     SSL_CTX_use_certificate_chain_file(ConfigServerInfo.client_ctx, yylval.string) <= 0)
2976 michael 913 {
2977 michael 1752 report_crypto_errors();
2978     conf_error_report("Could not open/read certificate file");
2979 michael 913 break;
2980     }
2981    
2982 michael 4340 if (SSL_CTX_use_PrivateKey_file(ConfigServerInfo.server_ctx, ConfigServerInfo.rsa_private_key_file,
2983 michael 1303 SSL_FILETYPE_PEM) <= 0 ||
2984 michael 4340 SSL_CTX_use_PrivateKey_file(ConfigServerInfo.client_ctx, ConfigServerInfo.rsa_private_key_file,
2985 michael 967 SSL_FILETYPE_PEM) <= 0)
2986 michael 913 {
2987 michael 1752 report_crypto_errors();
2988     conf_error_report("Could not read RSA private key");
2989 michael 913 break;
2990     }
2991    
2992 michael 4340 if (!SSL_CTX_check_private_key(ConfigServerInfo.server_ctx) ||
2993     !SSL_CTX_check_private_key(ConfigServerInfo.client_ctx))
2994 michael 913 {
2995 michael 1753 report_crypto_errors();
2996     conf_error_report("Could not read RSA private key");
2997 michael 913 break;
2998     }
2999     }
3000     #endif
3001     }
3002 michael 7061 #line 3003 "conf_parser.c" /* yacc.c:1646 */
3003 michael 913 break;
3004    
3005 michael 4545 case 74:
3006 michael 6801 #line 521 "conf_parser.y" /* yacc.c:1646 */
3007 michael 913 {
3008     #ifdef HAVE_LIBCRYPTO
3009 michael 2129 BIO *file = NULL;
3010    
3011     if (conf_parser_ctx.pass != 1)
3012     break;
3013    
3014 michael 4340 if (ConfigServerInfo.rsa_private_key)
3015 michael 913 {
3016 michael 4340 RSA_free(ConfigServerInfo.rsa_private_key);
3017     ConfigServerInfo.rsa_private_key = NULL;
3018 michael 2129 }
3019 michael 913
3020 michael 4340 if (ConfigServerInfo.rsa_private_key_file)
3021 michael 2129 {
3022 michael 7032 xfree(ConfigServerInfo.rsa_private_key_file);
3023 michael 4340 ConfigServerInfo.rsa_private_key_file = NULL;
3024 michael 2129 }
3025 michael 913
3026 michael 4340 ConfigServerInfo.rsa_private_key_file = xstrdup(yylval.string);
3027 michael 913
3028 michael 2129 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3029     {
3030     conf_error_report("File open failed, ignoring");
3031     break;
3032     }
3033 michael 913
3034 michael 4340 ConfigServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3035 michael 913
3036 michael 2129 BIO_set_close(file, BIO_CLOSE);
3037     BIO_free(file);
3038 michael 913
3039 michael 4340 if (ConfigServerInfo.rsa_private_key == NULL)
3040 michael 2129 {
3041     conf_error_report("Couldn't extract key, ignoring");
3042     break;
3043     }
3044 michael 913
3045 michael 4340 if (!RSA_check_key(ConfigServerInfo.rsa_private_key))
3046 michael 2129 {
3047 michael 4340 RSA_free(ConfigServerInfo.rsa_private_key);
3048     ConfigServerInfo.rsa_private_key = NULL;
3049 michael 913
3050 michael 2129 conf_error_report("Invalid key, ignoring");
3051     break;
3052     }
3053 michael 913
3054 michael 6687 if (RSA_size(ConfigServerInfo.rsa_private_key) < 256)
3055 michael 2129 {
3056 michael 4340 RSA_free(ConfigServerInfo.rsa_private_key);
3057     ConfigServerInfo.rsa_private_key = NULL;
3058 michael 913
3059 michael 6687 conf_error_report("Ignoring serverinfo::rsa_private_key_file -- need at least a 2048 bit key size");
3060 michael 913 }
3061     #endif
3062     }
3063 michael 7061 #line 3064 "conf_parser.c" /* yacc.c:1646 */
3064 michael 913 break;
3065    
3066 michael 4545 case 75:
3067 michael 6801 #line 579 "conf_parser.y" /* yacc.c:1646 */
3068 michael 913 {
3069 michael 1306 #ifdef HAVE_LIBCRYPTO
3070 michael 4499 if (conf_parser_ctx.pass == 2)
3071 michael 1306 {
3072     BIO *file = BIO_new_file(yylval.string, "r");
3073    
3074     if (file)
3075     {
3076     DH *dh = PEM_read_bio_DHparams(file, NULL, NULL, NULL);
3077    
3078     BIO_free(file);
3079    
3080     if (dh)
3081     {
3082 michael 6687 if (DH_size(dh) < 256)
3083     conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- need at least a 2048 bit DH prime size");
3084 michael 1352 else
3085 michael 4340 SSL_CTX_set_tmp_dh(ConfigServerInfo.server_ctx, dh);
3086 michael 1352
3087 michael 1306 DH_free(dh);
3088     }
3089     }
3090 michael 4258 else
3091     conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- could not open/read Diffie-Hellman parameter file");
3092 michael 1306 }
3093     #endif
3094     }
3095 michael 7061 #line 3096 "conf_parser.c" /* yacc.c:1646 */
3096 michael 1306 break;
3097    
3098 michael 4545 case 76:
3099 michael 6801 #line 608 "conf_parser.y" /* yacc.c:1646 */
3100 michael 1306 {
3101     #ifdef HAVE_LIBCRYPTO
3102 michael 4499 if (conf_parser_ctx.pass == 2)
3103 michael 4340 SSL_CTX_set_cipher_list(ConfigServerInfo.server_ctx, yylval.string);
3104 michael 1306 #endif
3105     }
3106 michael 7061 #line 3107 "conf_parser.c" /* yacc.c:1646 */
3107 michael 1306 break;
3108    
3109 michael 4545 case 77:
3110 michael 6801 #line 616 "conf_parser.y" /* yacc.c:1646 */
3111 michael 1306 {
3112 michael 4070 #ifdef HAVE_LIBCRYPTO
3113 michael 4499 if (conf_parser_ctx.pass == 2)
3114 michael 4114 {
3115 michael 4340 if ((ConfigServerInfo.message_digest_algorithm = EVP_get_digestbyname(yylval.string)) == NULL)
3116 michael 4121 {
3117 michael 4340 ConfigServerInfo.message_digest_algorithm = EVP_sha256();
3118 michael 4114 conf_error_report("Ignoring serverinfo::ssl_message_digest_algorithm -- unknown message digest algorithm");
3119 michael 4121 }
3120 michael 4114 }
3121     #endif
3122     }
3123 michael 7061 #line 3124 "conf_parser.c" /* yacc.c:1646 */
3124 michael 4114 break;
3125    
3126 michael 4545 case 78:
3127 michael 6801 #line 630 "conf_parser.y" /* yacc.c:1646 */
3128 michael 4114 {
3129     #ifdef HAVE_LIBCRYPTO
3130 michael 4744 #if OPENSSL_VERSION_NUMBER >= 0x009080FFL && !defined(OPENSSL_NO_ECDH)
3131 michael 4070 int nid = 0;
3132     EC_KEY *key = NULL;
3133    
3134 michael 4499 if (conf_parser_ctx.pass == 2)
3135 michael 4070 {
3136     if ((nid = OBJ_sn2nid(yylval.string)) == 0)
3137     {
3138 michael 5801 conf_error_report("Ignoring serverinfo::ssl_dh_elliptic_curve -- unknown curve name");
3139 michael 4070 break;
3140     }
3141    
3142     if ((key = EC_KEY_new_by_curve_name(nid)) == NULL)
3143     {
3144 michael 5801 conf_error_report("Ignoring serverinfo::ssl_dh_elliptic_curve -- could not create curve");
3145 michael 4070 break;
3146     }
3147    
3148 michael 4340 SSL_CTX_set_tmp_ecdh(ConfigServerInfo.server_ctx, key);
3149 michael 4070 EC_KEY_free(key);
3150 michael 6687 }
3151 michael 4070 #endif
3152     #endif
3153     }
3154 michael 7061 #line 3155 "conf_parser.c" /* yacc.c:1646 */
3155 michael 4070 break;
3156    
3157 michael 4545 case 79:
3158 michael 6801 #line 658 "conf_parser.y" /* yacc.c:1646 */
3159 michael 4070 {
3160 michael 6671 /* This isn't rehashable */
3161 michael 4340 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.name)
3162 michael 913 {
3163 michael 1117 if (valid_servname(yylval.string))
3164 michael 4340 ConfigServerInfo.name = xstrdup(yylval.string);
3165 michael 1117 else
3166 michael 913 {
3167 michael 1752 conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3168 michael 6671 exit(EXIT_FAILURE);
3169 michael 913 }
3170     }
3171     }
3172 michael 7061 #line 3173 "conf_parser.c" /* yacc.c:1646 */
3173 michael 913 break;
3174    
3175 michael 4545 case 80:
3176 michael 6801 #line 673 "conf_parser.y" /* yacc.c:1646 */
3177 michael 913 {
3178 michael 6671 /* This isn't rehashable */
3179 michael 4340 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.sid)
3180 michael 913 {
3181     if (valid_sid(yylval.string))
3182 michael 4340 ConfigServerInfo.sid = xstrdup(yylval.string);
3183 michael 913 else
3184     {
3185 michael 1752 conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3186 michael 6671 exit(EXIT_FAILURE);
3187 michael 913 }
3188     }
3189     }
3190 michael 7061 #line 3191 "conf_parser.c" /* yacc.c:1646 */
3191 michael 913 break;
3192    
3193 michael 4545 case 81:
3194 michael 6801 #line 688 "conf_parser.y" /* yacc.c:1646 */
3195 michael 913 {
3196 michael 967 if (conf_parser_ctx.pass == 2)
3197 michael 913 {
3198 michael 7032 xfree(ConfigServerInfo.description);
3199 michael 4340 ConfigServerInfo.description = xstrdup(yylval.string);
3200 michael 4513 strlcpy(me.info, ConfigServerInfo.description, sizeof(me.info));
3201 michael 913 }
3202     }
3203 michael 7061 #line 3204 "conf_parser.c" /* yacc.c:1646 */
3204 michael 913 break;
3205    
3206 michael 4545 case 82:
3207 michael 6801 #line 698 "conf_parser.y" /* yacc.c:1646 */
3208 michael 913 {
3209 michael 967 if (conf_parser_ctx.pass == 2)
3210 michael 913 {
3211     char *p;
3212    
3213 michael 3473 if ((p = strchr(yylval.string, ' ')))
3214 michael 3892 *p = '\0';
3215 michael 913
3216 michael 7032 xfree(ConfigServerInfo.network_name);
3217 michael 4340 ConfigServerInfo.network_name = xstrdup(yylval.string);
3218 michael 913 }
3219     }
3220 michael 7061 #line 3221 "conf_parser.c" /* yacc.c:1646 */
3221 michael 913 break;
3222    
3223 michael 4545 case 83:
3224 michael 6801 #line 712 "conf_parser.y" /* yacc.c:1646 */
3225 michael 913 {
3226 michael 2129 if (conf_parser_ctx.pass != 2)
3227     break;
3228    
3229 michael 7032 xfree(ConfigServerInfo.network_desc);
3230 michael 4340 ConfigServerInfo.network_desc = xstrdup(yylval.string);
3231 michael 913 }
3232 michael 7061 #line 3233 "conf_parser.c" /* yacc.c:1646 */
3233 michael 913 break;
3234    
3235 michael 4545 case 84:
3236 michael 6801 #line 721 "conf_parser.y" /* yacc.c:1646 */
3237 michael 913 {
3238 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3239 michael 913 {
3240     struct addrinfo hints, *res;
3241    
3242     memset(&hints, 0, sizeof(hints));
3243    
3244     hints.ai_family = AF_UNSPEC;
3245     hints.ai_socktype = SOCK_STREAM;
3246     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3247    
3248 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3249 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3250 michael 913 else
3251     {
3252 michael 3473 assert(res);
3253 michael 913
3254 michael 4340 memcpy(&ConfigServerInfo.ip, res->ai_addr, res->ai_addrlen);
3255     ConfigServerInfo.ip.ss.ss_family = res->ai_family;
3256     ConfigServerInfo.ip.ss_len = res->ai_addrlen;
3257 michael 1123 freeaddrinfo(res);
3258 michael 913
3259 michael 4340 ConfigServerInfo.specific_ipv4_vhost = 1;
3260 michael 913 }
3261     }
3262     }
3263 michael 7061 #line 3264 "conf_parser.c" /* yacc.c:1646 */
3264 michael 913 break;
3265    
3266 michael 4545 case 85:
3267 michael 6801 #line 749 "conf_parser.y" /* yacc.c:1646 */
3268 michael 913 {
3269 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3270 michael 913 {
3271     struct addrinfo hints, *res;
3272    
3273     memset(&hints, 0, sizeof(hints));
3274    
3275     hints.ai_family = AF_UNSPEC;
3276     hints.ai_socktype = SOCK_STREAM;
3277     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3278    
3279 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3280 michael 1247 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3281 michael 913 else
3282     {
3283 michael 3473 assert(res);
3284 michael 913
3285 michael 4340 memcpy(&ConfigServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3286     ConfigServerInfo.ip6.ss.ss_family = res->ai_family;
3287     ConfigServerInfo.ip6.ss_len = res->ai_addrlen;
3288 michael 1123 freeaddrinfo(res);
3289 michael 913
3290 michael 4340 ConfigServerInfo.specific_ipv6_vhost = 1;
3291 michael 913 }
3292     }
3293     }
3294 michael 7061 #line 3295 "conf_parser.c" /* yacc.c:1646 */
3295 michael 913 break;
3296    
3297 michael 4545 case 86:
3298 michael 6801 #line 777 "conf_parser.y" /* yacc.c:1646 */
3299 michael 913 {
3300 michael 1736 if (conf_parser_ctx.pass != 2)
3301     break;
3302    
3303 michael 2473 if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3304 michael 913 {
3305 michael 3473 char buf[IRCD_BUFSIZE] = "";
3306 michael 913
3307 michael 1736 snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3308 michael 1752 conf_error_report(buf);
3309 michael 5490 ConfigServerInfo.default_max_clients = MAXCLIENTS_MIN;
3310 michael 913 }
3311 michael 2473 else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3312 michael 1736 {
3313 michael 3473 char buf[IRCD_BUFSIZE] = "";
3314 michael 1736
3315     snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3316 michael 1752 conf_error_report(buf);
3317 michael 5490 ConfigServerInfo.default_max_clients = MAXCLIENTS_MAX;
3318 michael 1736 }
3319     else
3320 michael 5490 ConfigServerInfo.default_max_clients = (yyvsp[-1].number);
3321 michael 913 }
3322 michael 7061 #line 3323 "conf_parser.c" /* yacc.c:1646 */
3323 michael 913 break;
3324    
3325 michael 4545 case 87:
3326 michael 6801 #line 802 "conf_parser.y" /* yacc.c:1646 */
3327 michael 913 {
3328 michael 1751 if (conf_parser_ctx.pass != 2)
3329     break;
3330    
3331 michael 2473 if ((yyvsp[-1].number) < 9)
3332 michael 1751 {
3333     conf_error_report("max_nick_length too low, setting to 9");
3334 michael 4340 ConfigServerInfo.max_nick_length = 9;
3335 michael 1751 }
3336 michael 2473 else if ((yyvsp[-1].number) > NICKLEN)
3337 michael 1751 {
3338 michael 3473 char buf[IRCD_BUFSIZE] = "";
3339 michael 1751
3340     snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3341     conf_error_report(buf);
3342 michael 4340 ConfigServerInfo.max_nick_length = NICKLEN;
3343 michael 1751 }
3344     else
3345 michael 4340 ConfigServerInfo.max_nick_length = (yyvsp[-1].number);
3346 michael 1751 }
3347 michael 7061 #line 3348 "conf_parser.c" /* yacc.c:1646 */
3348 michael 1751 break;
3349    
3350 michael 4545 case 88:
3351 michael 6801 #line 824 "conf_parser.y" /* yacc.c:1646 */
3352 michael 1751 {
3353     if (conf_parser_ctx.pass != 2)
3354     break;
3355    
3356 michael 2473 if ((yyvsp[-1].number) < 80)
3357 michael 1751 {
3358     conf_error_report("max_topic_length too low, setting to 80");
3359 michael 4340 ConfigServerInfo.max_topic_length = 80;
3360 michael 1751 }
3361 michael 2473 else if ((yyvsp[-1].number) > TOPICLEN)
3362 michael 1751 {
3363 michael 3473 char buf[IRCD_BUFSIZE] = "";
3364 michael 1751
3365     snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3366     conf_error_report(buf);
3367 michael 4340 ConfigServerInfo.max_topic_length = TOPICLEN;
3368 michael 1751 }
3369     else
3370 michael 4340 ConfigServerInfo.max_topic_length = (yyvsp[-1].number);
3371 michael 1751 }
3372 michael 7061 #line 3373 "conf_parser.c" /* yacc.c:1646 */
3373 michael 1751 break;
3374    
3375 michael 4545 case 89:
3376 michael 6801 #line 846 "conf_parser.y" /* yacc.c:1646 */
3377 michael 1751 {
3378 michael 967 if (conf_parser_ctx.pass == 2)
3379 michael 4340 ConfigServerInfo.hub = yylval.number;
3380 michael 913 }
3381 michael 7061 #line 3382 "conf_parser.c" /* yacc.c:1646 */
3382 michael 913 break;
3383    
3384 michael 4545 case 97:
3385 michael 6801 #line 864 "conf_parser.y" /* yacc.c:1646 */
3386 michael 913 {
3387 michael 2129 if (conf_parser_ctx.pass != 2)
3388     break;
3389    
3390 michael 7032 xfree(ConfigAdminInfo.name);
3391 michael 4340 ConfigAdminInfo.name = xstrdup(yylval.string);
3392 michael 913 }
3393 michael 7061 #line 3394 "conf_parser.c" /* yacc.c:1646 */
3394 michael 913 break;
3395    
3396 michael 4545 case 98:
3397 michael 6801 #line 873 "conf_parser.y" /* yacc.c:1646 */
3398 michael 913 {
3399 michael 2129 if (conf_parser_ctx.pass != 2)
3400     break;
3401    
3402 michael 7032 xfree(ConfigAdminInfo.email);
3403 michael 4340 ConfigAdminInfo.email = xstrdup(yylval.string);
3404 michael 913 }
3405 michael 7061 #line 3406 "conf_parser.c" /* yacc.c:1646 */
3406 michael 913 break;
3407    
3408 michael 4545 case 99:
3409 michael 6801 #line 882 "conf_parser.y" /* yacc.c:1646 */
3410 michael 913 {
3411 michael 2129 if (conf_parser_ctx.pass != 2)
3412     break;
3413    
3414 michael 7032 xfree(ConfigAdminInfo.description);
3415 michael 4340 ConfigAdminInfo.description = xstrdup(yylval.string);
3416 michael 913 }
3417 michael 7061 #line 3418 "conf_parser.c" /* yacc.c:1646 */
3418 michael 913 break;
3419    
3420 michael 4545 case 100:
3421 michael 6801 #line 895 "conf_parser.y" /* yacc.c:1646 */
3422 michael 913 {
3423 michael 1247 if (conf_parser_ctx.pass == 2)
3424 michael 2150 reset_block_state();
3425     }
3426 michael 7061 #line 3427 "conf_parser.c" /* yacc.c:1646 */
3427 michael 2150 break;
3428    
3429 michael 4545 case 101:
3430 michael 6801 #line 899 "conf_parser.y" /* yacc.c:1646 */
3431 michael 2150 {
3432 michael 4915 dlink_node *node = NULL;
3433 michael 2150
3434     if (conf_parser_ctx.pass != 2)
3435     break;
3436    
3437     if (!block_state.file.buf[0])
3438     break;
3439    
3440 michael 4915 DLINK_FOREACH(node, block_state.mask.list.head)
3441     motd_add(node->data, block_state.file.buf);
3442 michael 2150 }
3443 michael 7061 #line 3444 "conf_parser.c" /* yacc.c:1646 */
3444 michael 2150 break;
3445    
3446 michael 4545 case 107:
3447 michael 6801 #line 916 "conf_parser.y" /* yacc.c:1646 */
3448 michael 2150 {
3449     if (conf_parser_ctx.pass == 2)
3450     dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3451     }
3452 michael 7061 #line 3453 "conf_parser.c" /* yacc.c:1646 */
3453 michael 2150 break;
3454    
3455 michael 4545 case 108:
3456 michael 6801 #line 922 "conf_parser.y" /* yacc.c:1646 */
3457 michael 2150 {
3458     if (conf_parser_ctx.pass == 2)
3459     strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3460     }
3461 michael 7061 #line 3462 "conf_parser.c" /* yacc.c:1646 */
3462 michael 2150 break;
3463    
3464 michael 4545 case 109:
3465 michael 6801 #line 932 "conf_parser.y" /* yacc.c:1646 */
3466 michael 2150 {
3467     if (conf_parser_ctx.pass == 2)
3468 michael 4545 reset_block_state();
3469     }
3470 michael 7061 #line 3471 "conf_parser.c" /* yacc.c:1646 */
3471 michael 4545 break;
3472    
3473     case 110:
3474 michael 6801 #line 936 "conf_parser.y" /* yacc.c:1646 */
3475 michael 4545 {
3476     if (conf_parser_ctx.pass != 2)
3477     break;
3478    
3479     if (!block_state.command.buf[0] ||
3480     !block_state.name.buf[0] ||
3481     !block_state.nick.buf[0] ||
3482     !block_state.host.buf[0])
3483     break;
3484    
3485     pseudo_register(block_state.name.buf, block_state.nick.buf, block_state.host.buf,
3486     block_state.prepend.buf, block_state.command.buf);
3487     }
3488 michael 7061 #line 3489 "conf_parser.c" /* yacc.c:1646 */
3489 michael 4545 break;
3490    
3491     case 118:
3492 michael 6801 #line 954 "conf_parser.y" /* yacc.c:1646 */
3493 michael 4545 {
3494     if (conf_parser_ctx.pass == 2)
3495     strlcpy(block_state.command.buf, yylval.string, sizeof(block_state.command.buf));
3496     }
3497 michael 7061 #line 3498 "conf_parser.c" /* yacc.c:1646 */
3498 michael 4545 break;
3499    
3500     case 119:
3501 michael 6801 #line 960 "conf_parser.y" /* yacc.c:1646 */
3502 michael 4545 {
3503     if (conf_parser_ctx.pass == 2)
3504     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3505     }
3506 michael 7061 #line 3507 "conf_parser.c" /* yacc.c:1646 */
3507 michael 4545 break;
3508    
3509     case 120:
3510 michael 6801 #line 966 "conf_parser.y" /* yacc.c:1646 */
3511 michael 4545 {
3512     if (conf_parser_ctx.pass == 2)
3513     strlcpy(block_state.prepend.buf, yylval.string, sizeof(block_state.prepend.buf));
3514     }
3515 michael 7061 #line 3516 "conf_parser.c" /* yacc.c:1646 */
3516 michael 4545 break;
3517    
3518     case 121:
3519 michael 6801 #line 972 "conf_parser.y" /* yacc.c:1646 */
3520 michael 4545 {
3521     if (conf_parser_ctx.pass == 2)
3522     {
3523     struct split_nuh_item nuh;
3524    
3525     nuh.nuhmask = yylval.string;
3526     nuh.nickptr = NULL;
3527 michael 5603 nuh.userptr = block_state.nick.buf;
3528 michael 4545 nuh.hostptr = block_state.host.buf;
3529     nuh.nicksize = 0;
3530     nuh.usersize = sizeof(block_state.nick.buf);
3531     nuh.hostsize = sizeof(block_state.host.buf);
3532 michael 5603
3533 michael 4545 split_nuh(&nuh);
3534     }
3535     }
3536 michael 7061 #line 3537 "conf_parser.c" /* yacc.c:1646 */
3537 michael 4545 break;
3538    
3539     case 128:
3540 michael 6801 #line 1000 "conf_parser.y" /* yacc.c:1646 */
3541 michael 4545 {
3542     if (conf_parser_ctx.pass == 2)
3543 michael 4340 ConfigLog.use_logging = yylval.number;
3544 michael 1247 }
3545 michael 7061 #line 3546 "conf_parser.c" /* yacc.c:1646 */
3546 michael 913 break;
3547    
3548 michael 4545 case 129:
3549 michael 6801 #line 1006 "conf_parser.y" /* yacc.c:1646 */
3550 michael 913 {
3551 michael 1647 if (conf_parser_ctx.pass == 2)
3552     reset_block_state();
3553 michael 913 }
3554 michael 7061 #line 3555 "conf_parser.c" /* yacc.c:1646 */
3555 michael 913 break;
3556    
3557 michael 4545 case 130:
3558 michael 6801 #line 1010 "conf_parser.y" /* yacc.c:1646 */
3559 michael 913 {
3560 michael 1647 if (conf_parser_ctx.pass != 2)
3561     break;
3562    
3563     if (block_state.type.value && block_state.file.buf[0])
3564 michael 1831 log_set_file(block_state.type.value, block_state.size.value,
3565 michael 1647 block_state.file.buf);
3566 michael 913 }
3567 michael 7061 #line 3568 "conf_parser.c" /* yacc.c:1646 */
3568 michael 913 break;
3569    
3570 michael 4545 case 137:
3571 michael 6801 #line 1026 "conf_parser.y" /* yacc.c:1646 */
3572 michael 913 {
3573 michael 1647 if (conf_parser_ctx.pass != 2)
3574     break;
3575    
3576     strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3577 michael 913 }
3578 michael 7061 #line 3579 "conf_parser.c" /* yacc.c:1646 */
3579 michael 913 break;
3580    
3581 michael 4545 case 138:
3582 michael 6801 #line 1034 "conf_parser.y" /* yacc.c:1646 */
3583 michael 913 {
3584 michael 2473 block_state.size.value = (yyvsp[-1].number);
3585 michael 913 }
3586 michael 7061 #line 3587 "conf_parser.c" /* yacc.c:1646 */
3587 michael 913 break;
3588    
3589 michael 4545 case 139:
3590 michael 6801 #line 1037 "conf_parser.y" /* yacc.c:1646 */
3591 michael 913 {
3592 michael 1647 block_state.size.value = 0;
3593 michael 913 }
3594 michael 7061 #line 3595 "conf_parser.c" /* yacc.c:1646 */
3595 michael 913 break;
3596    
3597 michael 4545 case 140:
3598 michael 6801 #line 1042 "conf_parser.y" /* yacc.c:1646 */
3599 michael 913 {
3600 michael 967 if (conf_parser_ctx.pass == 2)
3601 michael 1647 block_state.type.value = 0;
3602 michael 913 }
3603 michael 7061 #line 3604 "conf_parser.c" /* yacc.c:1646 */
3604 michael 913 break;
3605    
3606 michael 4545 case 144:
3607 michael 6801 #line 1049 "conf_parser.y" /* yacc.c:1646 */
3608 michael 913 {
3609 michael 967 if (conf_parser_ctx.pass == 2)
3610 michael 1647 block_state.type.value = LOG_TYPE_USER;
3611 michael 913 }
3612 michael 7061 #line 3613 "conf_parser.c" /* yacc.c:1646 */
3613 michael 913 break;
3614    
3615 michael 4545 case 145:
3616 michael 6801 #line 1053 "conf_parser.y" /* yacc.c:1646 */
3617 michael 913 {
3618 michael 967 if (conf_parser_ctx.pass == 2)
3619 michael 1647 block_state.type.value = LOG_TYPE_OPER;
3620 michael 913 }
3621 michael 7061 #line 3622 "conf_parser.c" /* yacc.c:1646 */
3622 michael 913 break;
3623    
3624 michael 4545 case 146:
3625 michael 6801 #line 1057 "conf_parser.y" /* yacc.c:1646 */
3626 michael 1247 {
3627 michael 967 if (conf_parser_ctx.pass == 2)
3628 michael 5806 block_state.type.value = LOG_TYPE_XLINE;
3629 michael 913 }
3630 michael 7061 #line 3631 "conf_parser.c" /* yacc.c:1646 */
3631 michael 913 break;
3632    
3633 michael 4545 case 147:
3634 michael 6801 #line 1061 "conf_parser.y" /* yacc.c:1646 */
3635 michael 913 {
3636 michael 967 if (conf_parser_ctx.pass == 2)
3637 michael 5806 block_state.type.value = LOG_TYPE_RESV;
3638 michael 913 }
3639 michael 7061 #line 3640 "conf_parser.c" /* yacc.c:1646 */
3640 michael 913 break;
3641    
3642 michael 4545 case 148:
3643 michael 6801 #line 1065 "conf_parser.y" /* yacc.c:1646 */
3644 michael 913 {
3645 michael 967 if (conf_parser_ctx.pass == 2)
3646 michael 5806 block_state.type.value = LOG_TYPE_DLINE;
3647 michael 913 }
3648 michael 7061 #line 3649 "conf_parser.c" /* yacc.c:1646 */
3649 michael 913 break;
3650    
3651 michael 4545 case 149:
3652 michael 6801 #line 1069 "conf_parser.y" /* yacc.c:1646 */
3653 michael 913 {
3654 michael 967 if (conf_parser_ctx.pass == 2)
3655 michael 5806 block_state.type.value = LOG_TYPE_KLINE;
3656 michael 913 }
3657 michael 7061 #line 3658 "conf_parser.c" /* yacc.c:1646 */
3658 michael 913 break;
3659    
3660 michael 4545 case 150:
3661 michael 6801 #line 1073 "conf_parser.y" /* yacc.c:1646 */
3662 michael 913 {
3663 michael 967 if (conf_parser_ctx.pass == 2)
3664 michael 5806 block_state.type.value = LOG_TYPE_KILL;
3665 michael 1250 }
3666 michael 7061 #line 3667 "conf_parser.c" /* yacc.c:1646 */
3667 michael 1250 break;
3668    
3669 michael 4545 case 151:
3670 michael 6801 #line 1077 "conf_parser.y" /* yacc.c:1646 */
3671 michael 1250 {
3672 michael 2336 if (conf_parser_ctx.pass == 2)
3673 michael 5806 block_state.type.value = LOG_TYPE_DEBUG;
3674 michael 2336 }
3675 michael 7061 #line 3676 "conf_parser.c" /* yacc.c:1646 */
3676 michael 2336 break;
3677    
3678 michael 4545 case 152:
3679 michael 6801 #line 1087 "conf_parser.y" /* yacc.c:1646 */
3680 michael 2336 {
3681 michael 1646 if (conf_parser_ctx.pass != 2)
3682     break;
3683    
3684     reset_block_state();
3685     block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3686 michael 913 }
3687 michael 7061 #line 3688 "conf_parser.c" /* yacc.c:1646 */
3688 michael 913 break;
3689    
3690 michael 5806 case 153:
3691 michael 6801 #line 1094 "conf_parser.y" /* yacc.c:1646 */
3692 michael 913 {
3693 michael 4915 dlink_node *node = NULL;
3694 michael 913
3695 michael 1646 if (conf_parser_ctx.pass != 2)
3696     break;
3697 michael 913
3698 michael 1646 if (!block_state.name.buf[0])
3699     break;
3700 michael 6671
3701 michael 1647 if (!block_state.rpass.buf[0])
3702 michael 1646 break;
3703 michael 913
3704 michael 4915 DLINK_FOREACH(node, block_state.mask.list.head)
3705 michael 1646 {
3706     struct MaskItem *conf = NULL;
3707     struct split_nuh_item nuh;
3708 michael 913
3709 michael 4915 nuh.nuhmask = node->data;
3710 michael 1646 nuh.nickptr = NULL;
3711 michael 1647 nuh.userptr = block_state.user.buf;
3712     nuh.hostptr = block_state.host.buf;
3713 michael 1646 nuh.nicksize = 0;
3714 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
3715     nuh.hostsize = sizeof(block_state.host.buf);
3716 michael 1646 split_nuh(&nuh);
3717 michael 913
3718 michael 2228 conf = conf_make(CONF_OPER);
3719     conf->name = xstrdup(block_state.name.buf);
3720     conf->user = xstrdup(block_state.user.buf);
3721     conf->host = xstrdup(block_state.host.buf);
3722 michael 1285
3723 michael 2228 if (block_state.cert.buf[0])
3724     conf->certfp = xstrdup(block_state.cert.buf);
3725    
3726 michael 1647 if (block_state.rpass.buf[0])
3727     conf->passwd = xstrdup(block_state.rpass.buf);
3728 michael 1285
3729 michael 5557 if (block_state.whois.buf[0])
3730     conf->whois = xstrdup(block_state.whois.buf);
3731    
3732 michael 1646 conf->flags = block_state.flags.value;
3733     conf->modes = block_state.modes.value;
3734     conf->port = block_state.port.value;
3735     conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3736 michael 913
3737 michael 1646 conf_add_class_to_conf(conf, block_state.class.buf);
3738 michael 913 }
3739     }
3740 michael 7061 #line 3741 "conf_parser.c" /* yacc.c:1646 */
3741 michael 913 break;
3742    
3743 michael 6595 case 167:
3744 michael 6801 #line 1157 "conf_parser.y" /* yacc.c:1646 */
3745 michael 913 {
3746 michael 967 if (conf_parser_ctx.pass == 2)
3747 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3748 michael 913 }
3749 michael 7061 #line 3750 "conf_parser.c" /* yacc.c:1646 */
3750 michael 913 break;
3751    
3752 michael 6595 case 168:
3753 michael 6801 #line 1163 "conf_parser.y" /* yacc.c:1646 */
3754 michael 913 {
3755 michael 967 if (conf_parser_ctx.pass == 2)
3756 michael 1646 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3757 michael 913 }
3758 michael 7061 #line 3759 "conf_parser.c" /* yacc.c:1646 */
3759 michael 913 break;
3760    
3761 michael 6595 case 169:
3762 michael 6801 #line 1169 "conf_parser.y" /* yacc.c:1646 */
3763 michael 913 {
3764 michael 967 if (conf_parser_ctx.pass == 2)
3765 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3766 michael 913 }
3767 michael 7061 #line 3768 "conf_parser.c" /* yacc.c:1646 */
3768 michael 913 break;
3769    
3770 michael 6595 case 170:
3771 michael 6801 #line 1175 "conf_parser.y" /* yacc.c:1646 */
3772 michael 913 {
3773 michael 5557 if (conf_parser_ctx.pass == 2)
3774     strlcpy(block_state.whois.buf, yylval.string, sizeof(block_state.whois.buf));
3775     }
3776 michael 7061 #line 3777 "conf_parser.c" /* yacc.c:1646 */
3777 michael 5557 break;
3778    
3779 michael 6595 case 171:
3780 michael 6801 #line 1181 "conf_parser.y" /* yacc.c:1646 */
3781 michael 5557 {
3782 michael 2129 if (conf_parser_ctx.pass != 2)
3783     break;
3784    
3785     if (yylval.number)
3786     block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3787     else
3788     block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3789 michael 913 }
3790 michael 7061 #line 3791 "conf_parser.c" /* yacc.c:1646 */
3791 michael 913 break;
3792    
3793 michael 6595 case 172:
3794 michael 6801 #line 1192 "conf_parser.y" /* yacc.c:1646 */
3795 michael 913 {
3796 michael 967 if (conf_parser_ctx.pass == 2)
3797 michael 2229 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3798 michael 2228 }
3799 michael 7061 #line 3800 "conf_parser.c" /* yacc.c:1646 */
3800 michael 2228 break;
3801    
3802 michael 6595 case 173:
3803 michael 6801 #line 1198 "conf_parser.y" /* yacc.c:1646 */
3804 michael 2228 {
3805 michael 2248 if (conf_parser_ctx.pass != 2)
3806     break;
3807    
3808     if (yylval.number)
3809     block_state.flags.value |= CONF_FLAGS_SSL;
3810     else
3811     block_state.flags.value &= ~CONF_FLAGS_SSL;
3812     }
3813 michael 7061 #line 3814 "conf_parser.c" /* yacc.c:1646 */
3814 michael 2248 break;
3815    
3816 michael 6595 case 174:
3817 michael 6801 #line 1209 "conf_parser.y" /* yacc.c:1646 */
3818 michael 2248 {
3819 michael 2228 if (conf_parser_ctx.pass == 2)
3820 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3821 michael 913 }
3822 michael 7061 #line 3823 "conf_parser.c" /* yacc.c:1646 */
3823 michael 913 break;
3824    
3825 michael 6595 case 175:
3826 michael 6801 #line 1215 "conf_parser.y" /* yacc.c:1646 */
3827 michael 913 {
3828 michael 967 if (conf_parser_ctx.pass == 2)
3829 michael 1646 block_state.modes.value = 0;
3830 michael 913 }
3831 michael 7061 #line 3832 "conf_parser.c" /* yacc.c:1646 */
3832 michael 913 break;
3833    
3834 michael 6595 case 179:
3835 michael 6801 #line 1222 "conf_parser.y" /* yacc.c:1646 */
3836 michael 913 {
3837 michael 967 if (conf_parser_ctx.pass == 2)
3838 michael 2336 block_state.modes.value |= UMODE_BOTS;
3839 michael 913 }
3840 michael 7061 #line 3841 "conf_parser.c" /* yacc.c:1646 */
3841 michael 913 break;
3842    
3843 michael 6595 case 180:
3844 michael 6801 #line 1226 "conf_parser.y" /* yacc.c:1646 */
3845 michael 913 {
3846 michael 967 if (conf_parser_ctx.pass == 2)
3847 michael 2336 block_state.modes.value |= UMODE_CCONN;
3848 michael 913 }
3849 michael 7061 #line 3850 "conf_parser.c" /* yacc.c:1646 */
3850 michael 913 break;
3851    
3852 michael 6595 case 181:
3853 michael 6801 #line 1230 "conf_parser.y" /* yacc.c:1646 */
3854 michael 913 {
3855 michael 967 if (conf_parser_ctx.pass == 2)
3856 michael 2336 block_state.modes.value |= UMODE_DEAF;
3857 michael 913 }
3858 michael 7061 #line 3859 "conf_parser.c" /* yacc.c:1646 */
3859 michael 913 break;
3860    
3861 michael 6595 case 182:
3862 michael 6801 #line 1234 "conf_parser.y" /* yacc.c:1646 */
3863 michael 913 {
3864 michael 967 if (conf_parser_ctx.pass == 2)
3865 michael 2336 block_state.modes.value |= UMODE_DEBUG;
3866 michael 913 }
3867 michael 7061 #line 3868 "conf_parser.c" /* yacc.c:1646 */
3868 michael 913 break;
3869    
3870 michael 6595 case 183:
3871 michael 6801 #line 1238 "conf_parser.y" /* yacc.c:1646 */
3872 michael 913 {
3873 michael 967 if (conf_parser_ctx.pass == 2)
3874 michael 2336 block_state.modes.value |= UMODE_FULL;
3875 michael 913 }
3876 michael 7061 #line 3877 "conf_parser.c" /* yacc.c:1646 */
3877 michael 913 break;
3878    
3879 michael 6595 case 184:
3880 michael 6801 #line 1242 "conf_parser.y" /* yacc.c:1646 */
3881 michael 913 {
3882 michael 967 if (conf_parser_ctx.pass == 2)
3883 michael 2336 block_state.modes.value |= UMODE_HIDDEN;
3884 michael 913 }
3885 michael 7061 #line 3886 "conf_parser.c" /* yacc.c:1646 */
3886 michael 913 break;
3887    
3888 michael 6595 case 185:
3889 michael 6801 #line 1246 "conf_parser.y" /* yacc.c:1646 */
3890 michael 913 {
3891 michael 967 if (conf_parser_ctx.pass == 2)
3892 michael 3513 block_state.modes.value |= UMODE_HIDECHANS;
3893 michael 913 }
3894 michael 7061 #line 3895 "conf_parser.c" /* yacc.c:1646 */
3895 michael 913 break;
3896    
3897 michael 6595 case 186:
3898 michael 6801 #line 1250 "conf_parser.y" /* yacc.c:1646 */
3899 michael 913 {
3900 michael 967 if (conf_parser_ctx.pass == 2)
3901 michael 3513 block_state.modes.value |= UMODE_HIDEIDLE;
3902 michael 913 }
3903 michael 7061 #line 3904 "conf_parser.c" /* yacc.c:1646 */
3904 michael 913 break;
3905    
3906 michael 6595 case 187:
3907 michael 6801 #line 1254 "conf_parser.y" /* yacc.c:1646 */
3908 michael 913 {
3909 michael 967 if (conf_parser_ctx.pass == 2)
3910 michael 3513 block_state.modes.value |= UMODE_SKILL;
3911 michael 913 }
3912 michael 7061 #line 3913 "conf_parser.c" /* yacc.c:1646 */
3913 michael 913 break;
3914    
3915 michael 6595 case 188:
3916 michael 6801 #line 1258 "conf_parser.y" /* yacc.c:1646 */
3917 michael 913 {
3918 michael 967 if (conf_parser_ctx.pass == 2)
3919 michael 3513 block_state.modes.value |= UMODE_NCHANGE;
3920 michael 913 }
3921 michael 7061 #line 3922 "conf_parser.c" /* yacc.c:1646 */
3922 michael 913 break;
3923    
3924 michael 6595 case 189:
3925 michael 6801 #line 1262 "conf_parser.y" /* yacc.c:1646 */
3926 michael 913 {
3927 michael 967 if (conf_parser_ctx.pass == 2)
3928 michael 3513 block_state.modes.value |= UMODE_REJ;
3929 michael 913 }
3930 michael 7061 #line 3931 "conf_parser.c" /* yacc.c:1646 */
3931 michael 913 break;
3932    
3933 michael 6595 case 190:
3934 michael 6801 #line 1266 "conf_parser.y" /* yacc.c:1646 */
3935 michael 913 {
3936 michael 967 if (conf_parser_ctx.pass == 2)
3937 michael 3513 block_state.modes.value |= UMODE_UNAUTH;
3938 michael 913 }
3939 michael 7061 #line 3940 "conf_parser.c" /* yacc.c:1646 */
3940 michael 913 break;
3941    
3942 michael 6595 case 191:
3943 michael 6801 #line 1270 "conf_parser.y" /* yacc.c:1646 */
3944 michael 913 {
3945 michael 967 if (conf_parser_ctx.pass == 2)
3946 michael 3513 block_state.modes.value |= UMODE_SPY;
3947 michael 913 }
3948 michael 7061 #line 3949 "conf_parser.c" /* yacc.c:1646 */
3949 michael 913 break;
3950    
3951 michael 6595 case 192:
3952 michael 6801 #line 1274 "conf_parser.y" /* yacc.c:1646 */
3953 michael 913 {
3954 michael 967 if (conf_parser_ctx.pass == 2)
3955 michael 3513 block_state.modes.value |= UMODE_EXTERNAL;
3956 michael 913 }
3957 michael 7061 #line 3958 "conf_parser.c" /* yacc.c:1646 */
3958 michael 913 break;
3959    
3960 michael 6595 case 193:
3961 michael 6801 #line 1278 "conf_parser.y" /* yacc.c:1646 */
3962 michael 913 {
3963 michael 967 if (conf_parser_ctx.pass == 2)
3964 michael 3869 block_state.modes.value |= UMODE_SERVNOTICE;
3965 michael 913 }
3966 michael 7061 #line 3967 "conf_parser.c" /* yacc.c:1646 */
3967 michael 913 break;
3968    
3969 michael 6595 case 194:
3970 michael 6801 #line 1282 "conf_parser.y" /* yacc.c:1646 */
3971 michael 913 {
3972 michael 967 if (conf_parser_ctx.pass == 2)
3973 michael 3869 block_state.modes.value |= UMODE_INVISIBLE;
3974 michael 913 }
3975 michael 7061 #line 3976 "conf_parser.c" /* yacc.c:1646 */
3976 michael 913 break;
3977    
3978 michael 6595 case 195:
3979 michael 6801 #line 1286 "conf_parser.y" /* yacc.c:1646 */
3980 michael 913 {
3981 michael 1228 if (conf_parser_ctx.pass == 2)
3982 michael 3869 block_state.modes.value |= UMODE_WALLOP;
3983 michael 913 }
3984 michael 7061 #line 3985 "conf_parser.c" /* yacc.c:1646 */
3985 michael 913 break;
3986    
3987 michael 6595 case 196:
3988 michael 6801 #line 1290 "conf_parser.y" /* yacc.c:1646 */
3989 michael 1228 {
3990     if (conf_parser_ctx.pass == 2)
3991 michael 3869 block_state.modes.value |= UMODE_SOFTCALLERID;
3992 michael 1228 }
3993 michael 7061 #line 3994 "conf_parser.c" /* yacc.c:1646 */
3994 michael 913 break;
3995    
3996 michael 6595 case 197:
3997 michael 6801 #line 1294 "conf_parser.y" /* yacc.c:1646 */
3998 michael 913 {
3999 michael 967 if (conf_parser_ctx.pass == 2)
4000 michael 3869 block_state.modes.value |= UMODE_CALLERID;
4001 michael 1855 }
4002 michael 7061 #line 4003 "conf_parser.c" /* yacc.c:1646 */
4003 michael 1855 break;
4004    
4005 michael 6595 case 198:
4006 michael 6801 #line 1298 "conf_parser.y" /* yacc.c:1646 */
4007 michael 1855 {
4008     if (conf_parser_ctx.pass == 2)
4009 michael 3869 block_state.modes.value |= UMODE_LOCOPS;
4010 michael 913 }
4011 michael 7061 #line 4012 "conf_parser.c" /* yacc.c:1646 */
4012 michael 913 break;
4013    
4014 michael 6595 case 199:
4015 michael 6801 #line 1302 "conf_parser.y" /* yacc.c:1646 */
4016 michael 913 {
4017 michael 967 if (conf_parser_ctx.pass == 2)
4018 michael 3869 block_state.modes.value |= UMODE_REGONLY;
4019 michael 913 }
4020 michael 7061 #line 4021 "conf_parser.c" /* yacc.c:1646 */
4021 michael 913 break;
4022    
4023 michael 6595 case 200:
4024 michael 6801 #line 1306 "conf_parser.y" /* yacc.c:1646 */
4025 michael 913 {
4026 michael 967 if (conf_parser_ctx.pass == 2)
4027 michael 3869 block_state.modes.value |= UMODE_FARCONNECT;
4028 michael 3506 }
4029 michael 7061 #line 4030 "conf_parser.c" /* yacc.c:1646 */
4030 michael 3506 break;
4031    
4032 michael 6595 case 201:
4033 michael 6801 #line 1312 "conf_parser.y" /* yacc.c:1646 */
4034 michael 3506 {
4035     if (conf_parser_ctx.pass == 2)
4036 michael 2336 block_state.port.value = 0;
4037 michael 913 }
4038 michael 7061 #line 4039 "conf_parser.c" /* yacc.c:1646 */
4039 michael 913 break;
4040    
4041 michael 6595 case 205:
4042 michael 6801 #line 1319 "conf_parser.y" /* yacc.c:1646 */
4043 michael 913 {
4044 michael 967 if (conf_parser_ctx.pass == 2)
4045 michael 2336 block_state.port.value |= OPER_FLAG_KILL_REMOTE;
4046 michael 913 }
4047 michael 7061 #line 4048 "conf_parser.c" /* yacc.c:1646 */
4048 michael 913 break;
4049    
4050 michael 6595 case 206:
4051 michael 6801 #line 1323 "conf_parser.y" /* yacc.c:1646 */
4052 michael 913 {
4053 michael 967 if (conf_parser_ctx.pass == 2)
4054 michael 2336 block_state.port.value |= OPER_FLAG_KILL;
4055 michael 913 }
4056 michael 7061 #line 4057 "conf_parser.c" /* yacc.c:1646 */
4057 michael 913 break;
4058    
4059 michael 6595 case 207:
4060 michael 6801 #line 1327 "conf_parser.y" /* yacc.c:1646 */
4061 michael 913 {
4062 michael 967 if (conf_parser_ctx.pass == 2)
4063 michael 2336 block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
4064 michael 913 }
4065 michael 7061 #line 4066 "conf_parser.c" /* yacc.c:1646 */
4066 michael 913 break;
4067    
4068 michael 6595 case 208:
4069 michael 6801 #line 1331 "conf_parser.y" /* yacc.c:1646 */
4070 michael 913 {
4071 michael 967 if (conf_parser_ctx.pass == 2)
4072 michael 2336 block_state.port.value |= OPER_FLAG_CONNECT;
4073 michael 913 }
4074 michael 7061 #line 4075 "conf_parser.c" /* yacc.c:1646 */
4075 michael 913 break;
4076    
4077 michael 6595 case 209:
4078 michael 6801 #line 1335 "conf_parser.y" /* yacc.c:1646 */
4079 michael 913 {
4080 michael 967 if (conf_parser_ctx.pass == 2)
4081 michael 2336 block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
4082 michael 913 }
4083 michael 7061 #line 4084 "conf_parser.c" /* yacc.c:1646 */
4084 michael 913 break;
4085    
4086 michael 6595 case 210:
4087 michael 6801 #line 1339 "conf_parser.y" /* yacc.c:1646 */
4088 michael 913 {
4089 michael 967 if (conf_parser_ctx.pass == 2)
4090 michael 2336 block_state.port.value |= OPER_FLAG_SQUIT;
4091 michael 913 }
4092 michael 7061 #line 4093 "conf_parser.c" /* yacc.c:1646 */
4093 michael 913 break;
4094    
4095 michael 6595 case 211:
4096 michael 6801 #line 1343 "conf_parser.y" /* yacc.c:1646 */
4097 michael 913 {
4098 michael 967 if (conf_parser_ctx.pass == 2)
4099 michael 4019 block_state.port.value |= OPER_FLAG_KLINE;
4100 michael 913 }
4101 michael 7061 #line 4102 "conf_parser.c" /* yacc.c:1646 */
4102 michael 913 break;
4103    
4104 michael 6595 case 212:
4105 michael 6801 #line 1347 "conf_parser.y" /* yacc.c:1646 */
4106 michael 913 {
4107 michael 967 if (conf_parser_ctx.pass == 2)
4108 michael 2336 block_state.port.value |= OPER_FLAG_UNKLINE;
4109 michael 913 }
4110 michael 7061 #line 4111 "conf_parser.c" /* yacc.c:1646 */
4111 michael 913 break;
4112    
4113 michael 6595 case 213:
4114 michael 6801 #line 1351 "conf_parser.y" /* yacc.c:1646 */
4115 michael 913 {
4116 michael 967 if (conf_parser_ctx.pass == 2)
4117 michael 2336 block_state.port.value |= OPER_FLAG_DLINE;
4118 michael 913 }
4119 michael 7061 #line 4120 "conf_parser.c" /* yacc.c:1646 */
4120 michael 913 break;
4121    
4122 michael 6595 case 214:
4123 michael 6801 #line 1355 "conf_parser.y" /* yacc.c:1646 */
4124 michael 913 {
4125 michael 967 if (conf_parser_ctx.pass == 2)
4126 michael 2336 block_state.port.value |= OPER_FLAG_UNDLINE;
4127 michael 1216 }
4128 michael 7061 #line 4129 "conf_parser.c" /* yacc.c:1646 */
4129 michael 1216 break;
4130    
4131 michael 6595 case 215:
4132 michael 6801 #line 1359 "conf_parser.y" /* yacc.c:1646 */
4133 michael 1216 {
4134     if (conf_parser_ctx.pass == 2)
4135 michael 2853 block_state.port.value |= OPER_FLAG_XLINE;
4136 michael 913 }
4137 michael 7061 #line 4138 "conf_parser.c" /* yacc.c:1646 */
4138 michael 913 break;
4139    
4140 michael 6595 case 216:
4141 michael 6801 #line 1363 "conf_parser.y" /* yacc.c:1646 */
4142 michael 913 {
4143 michael 967 if (conf_parser_ctx.pass == 2)
4144 michael 2853 block_state.port.value |= OPER_FLAG_UNXLINE;
4145 michael 913 }
4146 michael 7061 #line 4147 "conf_parser.c" /* yacc.c:1646 */
4147 michael 913 break;
4148    
4149 michael 6595 case 217:
4150 michael 6801 #line 1367 "conf_parser.y" /* yacc.c:1646 */
4151 michael 913 {
4152 michael 967 if (conf_parser_ctx.pass == 2)
4153 michael 2853 block_state.port.value |= OPER_FLAG_DIE;
4154 michael 913 }
4155 michael 7061 #line 4156 "conf_parser.c" /* yacc.c:1646 */
4156 michael 913 break;
4157    
4158 michael 6595 case 218:
4159 michael 6801 #line 1371 "conf_parser.y" /* yacc.c:1646 */
4160 michael 913 {
4161 michael 1301 if (conf_parser_ctx.pass == 2)
4162 michael 2853 block_state.port.value |= OPER_FLAG_RESTART;
4163 michael 1301 }
4164 michael 7061 #line 4165 "conf_parser.c" /* yacc.c:1646 */
4165 michael 1301 break;
4166    
4167 michael 6595 case 219:
4168 michael 6801 #line 1375 "conf_parser.y" /* yacc.c:1646 */
4169 michael 1301 {
4170 michael 2012 if (conf_parser_ctx.pass == 2)
4171 michael 7061 block_state.port.value |= OPER_FLAG_REHASH_REMOTE;
4172 michael 2012 }
4173 michael 7061 #line 4174 "conf_parser.c" /* yacc.c:1646 */
4174 michael 2012 break;
4175    
4176 michael 6595 case 220:
4177 michael 6801 #line 1379 "conf_parser.y" /* yacc.c:1646 */
4178 michael 2012 {
4179     if (conf_parser_ctx.pass == 2)
4180 michael 7061 block_state.port.value |= OPER_FLAG_REHASH;
4181 michael 2012 }
4182 michael 7061 #line 4183 "conf_parser.c" /* yacc.c:1646 */
4183 michael 2012 break;
4184    
4185 michael 6595 case 221:
4186 michael 6801 #line 1383 "conf_parser.y" /* yacc.c:1646 */
4187 michael 2012 {
4188     if (conf_parser_ctx.pass == 2)
4189 michael 7061 block_state.port.value |= OPER_FLAG_ADMIN;
4190 michael 2012 }
4191 michael 7061 #line 4192 "conf_parser.c" /* yacc.c:1646 */
4192 michael 2012 break;
4193    
4194 michael 6595 case 222:
4195 michael 6801 #line 1387 "conf_parser.y" /* yacc.c:1646 */
4196 michael 2012 {
4197 michael 2038 if (conf_parser_ctx.pass == 2)
4198 michael 7061 block_state.port.value |= OPER_FLAG_GLOBOPS;
4199 michael 2038 }
4200 michael 7061 #line 4201 "conf_parser.c" /* yacc.c:1646 */
4201 michael 2038 break;
4202    
4203 michael 6595 case 223:
4204 michael 6801 #line 1391 "conf_parser.y" /* yacc.c:1646 */
4205 michael 2038 {
4206     if (conf_parser_ctx.pass == 2)
4207 michael 7061 block_state.port.value |= OPER_FLAG_WALLOPS;
4208 michael 2038 }
4209 michael 7061 #line 4210 "conf_parser.c" /* yacc.c:1646 */
4210 michael 2038 break;
4211    
4212 michael 6595 case 224:
4213 michael 6801 #line 1395 "conf_parser.y" /* yacc.c:1646 */
4214 michael 2038 {
4215 michael 2336 if (conf_parser_ctx.pass == 2)
4216 michael 7061 block_state.port.value |= OPER_FLAG_LOCOPS;
4217 michael 2336 }
4218 michael 7061 #line 4219 "conf_parser.c" /* yacc.c:1646 */
4219 michael 2336 break;
4220    
4221 michael 6595 case 225:
4222 michael 6801 #line 1399 "conf_parser.y" /* yacc.c:1646 */
4223 michael 2336 {
4224     if (conf_parser_ctx.pass == 2)
4225 michael 7061 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4226 michael 2336 }
4227 michael 7061 #line 4228 "conf_parser.c" /* yacc.c:1646 */
4228 michael 2336 break;
4229    
4230 michael 6595 case 226:
4231 michael 6801 #line 1403 "conf_parser.y" /* yacc.c:1646 */
4232 michael 2336 {
4233 michael 2853 if (conf_parser_ctx.pass == 2)
4234 michael 7061 block_state.port.value |= OPER_FLAG_SET;
4235 michael 2853 }
4236 michael 7061 #line 4237 "conf_parser.c" /* yacc.c:1646 */
4237 michael 2853 break;
4238    
4239 michael 6595 case 227:
4240 michael 6801 #line 1407 "conf_parser.y" /* yacc.c:1646 */
4241 michael 2853 {
4242 michael 5004 if (conf_parser_ctx.pass == 2)
4243 michael 7061 block_state.port.value |= OPER_FLAG_MODULE;
4244 michael 5004 }
4245 michael 7061 #line 4246 "conf_parser.c" /* yacc.c:1646 */
4246 michael 5004 break;
4247    
4248 michael 6595 case 228:
4249 michael 6801 #line 1411 "conf_parser.y" /* yacc.c:1646 */
4250 michael 5004 {
4251 michael 6450 if (conf_parser_ctx.pass == 2)
4252 michael 7061 block_state.port.value |= OPER_FLAG_OPME;
4253 michael 6450 }
4254 michael 7061 #line 4255 "conf_parser.c" /* yacc.c:1646 */
4255 michael 6450 break;
4256    
4257 michael 6595 case 229:
4258 michael 6801 #line 1415 "conf_parser.y" /* yacc.c:1646 */
4259 michael 6450 {
4260     if (conf_parser_ctx.pass == 2)
4261 michael 7061 block_state.port.value |= OPER_FLAG_NICK_RESV;
4262 michael 6450 }
4263 michael 7061 #line 4264 "conf_parser.c" /* yacc.c:1646 */
4264 michael 6450 break;
4265    
4266 michael 6595 case 230:
4267 michael 6801 #line 1419 "conf_parser.y" /* yacc.c:1646 */
4268 michael 6450 {
4269 michael 6455 if (conf_parser_ctx.pass == 2)
4270 michael 7061 block_state.port.value |= OPER_FLAG_JOIN_RESV;
4271 michael 6455 }
4272 michael 7061 #line 4273 "conf_parser.c" /* yacc.c:1646 */
4273 michael 6455 break;
4274    
4275 michael 6595 case 231:
4276 michael 6801 #line 1423 "conf_parser.y" /* yacc.c:1646 */
4277 michael 6455 {
4278     if (conf_parser_ctx.pass == 2)
4279 michael 7061 block_state.port.value |= OPER_FLAG_RESV;
4280 michael 6455 }
4281 michael 7061 #line 4282 "conf_parser.c" /* yacc.c:1646 */
4282 michael 6455 break;
4283    
4284 michael 6595 case 232:
4285 michael 6801 #line 1427 "conf_parser.y" /* yacc.c:1646 */
4286 michael 6455 {
4287 michael 6490 if (conf_parser_ctx.pass == 2)
4288 michael 7061 block_state.port.value |= OPER_FLAG_UNRESV;
4289 michael 6490 }
4290 michael 7061 #line 4291 "conf_parser.c" /* yacc.c:1646 */
4291 michael 6490 break;
4292    
4293 michael 6595 case 233:
4294 michael 7061 #line 1431 "conf_parser.y" /* yacc.c:1646 */
4295 michael 6490 {
4296 michael 7061 if (conf_parser_ctx.pass == 2)
4297     block_state.port.value |= OPER_FLAG_CLOSE;
4298     }
4299     #line 4300 "conf_parser.c" /* yacc.c:1646 */
4300     break;
4301    
4302     case 234:
4303     #line 1441 "conf_parser.y" /* yacc.c:1646 */
4304     {
4305 michael 1651 if (conf_parser_ctx.pass != 1)
4306     break;
4307    
4308     reset_block_state();
4309    
4310     block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4311     block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4312     block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4313     block_state.max_sendq.value = DEFAULT_SENDQ;
4314     block_state.max_recvq.value = DEFAULT_RECVQ;
4315 michael 913 }
4316 michael 7061 #line 4317 "conf_parser.c" /* yacc.c:1646 */
4317 michael 913 break;
4318    
4319 michael 7061 case 235:
4320     #line 1453 "conf_parser.y" /* yacc.c:1646 */
4321 michael 913 {
4322 michael 1647 struct ClassItem *class = NULL;
4323 michael 913
4324 michael 1647 if (conf_parser_ctx.pass != 1)
4325     break;
4326 michael 913
4327 michael 1647 if (!block_state.class.buf[0])
4328     break;
4329 michael 913
4330 michael 1647 if (!(class = class_find(block_state.class.buf, 0)))
4331     class = class_make();
4332 michael 913
4333 michael 1647 class->active = 1;
4334 michael 7032 xfree(class->name);
4335 michael 1647 class->name = xstrdup(block_state.class.buf);
4336     class->ping_freq = block_state.ping_freq.value;
4337     class->max_perip = block_state.max_perip.value;
4338     class->con_freq = block_state.con_freq.value;
4339     class->max_total = block_state.max_total.value;
4340     class->max_global = block_state.max_global.value;
4341     class->max_local = block_state.max_local.value;
4342     class->max_ident = block_state.max_ident.value;
4343     class->max_sendq = block_state.max_sendq.value;
4344     class->max_recvq = block_state.max_recvq.value;
4345 michael 3933 class->max_channels = block_state.max_channels.value;
4346 michael 913
4347 michael 1785 if (block_state.min_idle.value > block_state.max_idle.value)
4348     {
4349     block_state.min_idle.value = 0;
4350     block_state.max_idle.value = 0;
4351     block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4352     }
4353    
4354     class->flags = block_state.flags.value;
4355     class->min_idle = block_state.min_idle.value;
4356     class->max_idle = block_state.max_idle.value;
4357    
4358 michael 6010 rebuild_cidr_list(class);
4359 michael 913
4360 michael 1647 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4361     class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4362     class->number_per_cidr = block_state.number_per_cidr.value;
4363 michael 913 }
4364 michael 7061 #line 4365 "conf_parser.c" /* yacc.c:1646 */
4365 michael 913 break;
4366    
4367 michael 7061 case 256:
4368     #line 1517 "conf_parser.y" /* yacc.c:1646 */
4369 michael 913 {
4370 michael 967 if (conf_parser_ctx.pass == 1)
4371 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4372 michael 913 }
4373 michael 7061 #line 4374 "conf_parser.c" /* yacc.c:1646 */
4374 michael 913 break;
4375    
4376 michael 7061 case 257:
4377     #line 1523 "conf_parser.y" /* yacc.c:1646 */
4378 michael 1294 {
4379     if (conf_parser_ctx.pass == 1)
4380 michael 2473 block_state.ping_freq.value = (yyvsp[-1].number);
4381 michael 1294 }
4382 michael 7061 #line 4383 "conf_parser.c" /* yacc.c:1646 */
4383 michael 1294 break;
4384    
4385 michael 7061 case 258:
4386     #line 1529 "conf_parser.y" /* yacc.c:1646 */
4387 michael 913 {
4388 michael 967 if (conf_parser_ctx.pass == 1)
4389 michael 2473 block_state.max_perip.value = (yyvsp[-1].number);
4390 michael 913 }
4391 michael 7061 #line 4392 "conf_parser.c" /* yacc.c:1646 */
4392 michael 913 break;
4393    
4394 michael 7061 case 259:
4395     #line 1535 "conf_parser.y" /* yacc.c:1646 */
4396 michael 913 {
4397 michael 967 if (conf_parser_ctx.pass == 1)
4398 michael 2473 block_state.con_freq.value = (yyvsp[-1].number);
4399 michael 913 }
4400 michael 7061 #line 4401 "conf_parser.c" /* yacc.c:1646 */
4401 michael 913 break;
4402    
4403 michael 7061 case 260:
4404     #line 1541 "conf_parser.y" /* yacc.c:1646 */
4405 michael 913 {
4406 michael 967 if (conf_parser_ctx.pass == 1)
4407 michael 3933 block_state.max_channels.value = (yyvsp[-1].number);
4408     }
4409 michael 7061 #line 4410 "conf_parser.c" /* yacc.c:1646 */
4410 michael 3933 break;
4411    
4412 michael 7061 case 261:
4413     #line 1547 "conf_parser.y" /* yacc.c:1646 */
4414 michael 3933 {
4415     if (conf_parser_ctx.pass == 1)
4416 michael 2473 block_state.max_total.value = (yyvsp[-1].number);
4417 michael 913 }
4418 michael 7061 #line 4419 "conf_parser.c" /* yacc.c:1646 */
4419 michael 913 break;
4420    
4421 michael 7061 case 262:
4422     #line 1553 "conf_parser.y" /* yacc.c:1646 */
4423 michael 913 {
4424 michael 967 if (conf_parser_ctx.pass == 1)
4425 michael 2473 block_state.max_global.value = (yyvsp[-1].number);
4426 michael 913 }
4427 michael 7061 #line 4428 "conf_parser.c" /* yacc.c:1646 */
4428 michael 913 break;
4429    
4430 michael 7061 case 263:
4431     #line 1559 "conf_parser.y" /* yacc.c:1646 */
4432 michael 913 {
4433 michael 967 if (conf_parser_ctx.pass == 1)
4434 michael 2473 block_state.max_local.value = (yyvsp[-1].number);
4435 michael 913 }
4436 michael 7061 #line 4437 "conf_parser.c" /* yacc.c:1646 */
4437 michael 913 break;
4438    
4439 michael 7061 case 264:
4440     #line 1565 "conf_parser.y" /* yacc.c:1646 */
4441 michael 913 {
4442 michael 967 if (conf_parser_ctx.pass == 1)
4443 michael 2473 block_state.max_ident.value = (yyvsp[-1].number);
4444 michael 913 }
4445 michael 7061 #line 4446 "conf_parser.c" /* yacc.c:1646 */
4446 michael 913 break;
4447    
4448 michael 7061 case 265:
4449     #line 1571 "conf_parser.y" /* yacc.c:1646 */
4450 michael 913 {
4451 michael 967 if (conf_parser_ctx.pass == 1)
4452 michael 2473 block_state.max_sendq.value = (yyvsp[-1].number);
4453 michael 913 }
4454 michael 7061 #line 4455 "conf_parser.c" /* yacc.c:1646 */
4455 michael 913 break;
4456    
4457 michael 7061 case 266:
4458     #line 1577 "conf_parser.y" /* yacc.c:1646 */
4459 michael 913 {
4460 michael 967 if (conf_parser_ctx.pass == 1)
4461 michael 2473 if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4462     block_state.max_recvq.value = (yyvsp[-1].number);
4463 michael 1516 }
4464 michael 7061 #line 4465 "conf_parser.c" /* yacc.c:1646 */
4465 michael 1516 break;
4466    
4467 michael 7061 case 267:
4468     #line 1584 "conf_parser.y" /* yacc.c:1646 */
4469 michael 1516 {
4470     if (conf_parser_ctx.pass == 1)
4471 michael 2473 block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4472 michael 913 }
4473 michael 7061 #line 4474 "conf_parser.c" /* yacc.c:1646 */
4474 michael 913 break;
4475    
4476 michael 7061 case 268:
4477     #line 1590 "conf_parser.y" /* yacc.c:1646 */
4478 michael 913 {
4479 michael 967 if (conf_parser_ctx.pass == 1)
4480 michael 2473 block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4481 michael 913 }
4482 michael 7061 #line 4483 "conf_parser.c" /* yacc.c:1646 */
4483 michael 913 break;
4484    
4485 michael 7061 case 269:
4486     #line 1596 "conf_parser.y" /* yacc.c:1646 */
4487 michael 913 {
4488 michael 967 if (conf_parser_ctx.pass == 1)
4489 michael 2473 block_state.number_per_cidr.value = (yyvsp[-1].number);
4490 michael 913 }
4491 michael 7061 #line 4492 "conf_parser.c" /* yacc.c:1646 */
4492 michael 913 break;
4493    
4494 michael 7061 case 270:
4495     #line 1602 "conf_parser.y" /* yacc.c:1646 */
4496 michael 913 {
4497 michael 1785 if (conf_parser_ctx.pass != 1)
4498     break;
4499    
4500 michael 2473 block_state.min_idle.value = (yyvsp[-1].number);
4501 michael 1785 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4502 michael 1783 }
4503 michael 7061 #line 4504 "conf_parser.c" /* yacc.c:1646 */
4504 michael 1783 break;
4505    
4506 michael 7061 case 271:
4507     #line 1611 "conf_parser.y" /* yacc.c:1646 */
4508 michael 1783 {
4509 michael 1785 if (conf_parser_ctx.pass != 1)
4510     break;
4511    
4512 michael 2473 block_state.max_idle.value = (yyvsp[-1].number);
4513 michael 1785 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4514 michael 1783 }
4515 michael 7061 #line 4516 "conf_parser.c" /* yacc.c:1646 */
4516 michael 1783 break;
4517    
4518 michael 7061 case 272:
4519     #line 1620 "conf_parser.y" /* yacc.c:1646 */
4520 michael 1783 {
4521     if (conf_parser_ctx.pass == 1)
4522 michael 1785 block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4523 michael 1783 }
4524 michael 7061 #line 4525 "conf_parser.c" /* yacc.c:1646 */
4525 michael 1783 break;
4526    
4527 michael 7061 case 276:
4528     #line 1627 "conf_parser.y" /* yacc.c:1646 */
4529 michael 1783 {
4530     if (conf_parser_ctx.pass == 1)
4531     block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4532     }
4533 michael 7061 #line 4534 "conf_parser.c" /* yacc.c:1646 */
4534 michael 1783 break;
4535    
4536 michael 7061 case 277:
4537     #line 1631 "conf_parser.y" /* yacc.c:1646 */
4538 michael 1783 {
4539     if (conf_parser_ctx.pass == 1)
4540     block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4541     }
4542 michael 7061 #line 4543 "conf_parser.c" /* yacc.c:1646 */
4543 michael 1783 break;
4544    
4545 michael 7061 case 278:
4546     #line 1641 "conf_parser.y" /* yacc.c:1646 */
4547 michael 1783 {
4548 michael 967 if (conf_parser_ctx.pass == 2)
4549 michael 1646 reset_block_state();
4550 michael 913 }
4551 michael 7061 #line 4552 "conf_parser.c" /* yacc.c:1646 */
4552 michael 913 break;
4553    
4554 michael 7061 case 280:
4555     #line 1647 "conf_parser.y" /* yacc.c:1646 */
4556 michael 913 {
4557 michael 1646 block_state.flags.value = 0;
4558 michael 913 }
4559 michael 7061 #line 4560 "conf_parser.c" /* yacc.c:1646 */
4560 michael 913 break;
4561    
4562 michael 7061 case 284:
4563     #line 1653 "conf_parser.y" /* yacc.c:1646 */
4564 michael 913 {
4565 michael 967 if (conf_parser_ctx.pass == 2)
4566 michael 1646 block_state.flags.value |= LISTENER_SSL;
4567 michael 913 }
4568 michael 7061 #line 4569 "conf_parser.c" /* yacc.c:1646 */
4569 michael 913 break;
4570    
4571 michael 7061 case 285:
4572     #line 1657 "conf_parser.y" /* yacc.c:1646 */
4573 michael 913 {
4574 michael 967 if (conf_parser_ctx.pass == 2)
4575 michael 1647 block_state.flags.value |= LISTENER_HIDDEN;
4576 michael 913 }
4577 michael 7061 #line 4578 "conf_parser.c" /* yacc.c:1646 */
4578 michael 913 break;
4579    
4580 michael 7061 case 286:
4581     #line 1661 "conf_parser.y" /* yacc.c:1646 */
4582 michael 913 {
4583 michael 967 if (conf_parser_ctx.pass == 2)
4584 michael 1647 block_state.flags.value |= LISTENER_SERVER;
4585 michael 913 }
4586 michael 7061 #line 4587 "conf_parser.c" /* yacc.c:1646 */
4587 michael 913 break;
4588    
4589 michael 7061 case 294:
4590     #line 1669 "conf_parser.y" /* yacc.c:1646 */
4591 michael 1648 { block_state.flags.value = 0; }
4592 michael 7061 #line 4593 "conf_parser.c" /* yacc.c:1646 */
4593 michael 913 break;
4594    
4595 michael 7061 case 298:
4596     #line 1674 "conf_parser.y" /* yacc.c:1646 */
4597 michael 913 {
4598 michael 967 if (conf_parser_ctx.pass == 2)
4599 michael 913 {
4600 michael 4499 #ifndef HAVE_LIBCRYPTO
4601 michael 1646 if (block_state.flags.value & LISTENER_SSL)
4602 michael 4499 {
4603     conf_error_report("SSL not available - port closed");
4604     break;
4605     }
4606 michael 913 #endif
4607 michael 6371 listener_add((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4608 michael 913 }
4609     }
4610 michael 7061 #line 4611 "conf_parser.c" /* yacc.c:1646 */
4611 michael 913 break;
4612    
4613 michael 7061 case 299:
4614     #line 1687 "conf_parser.y" /* yacc.c:1646 */
4615 michael 913 {
4616 michael 967 if (conf_parser_ctx.pass == 2)
4617 michael 913 {
4618 michael 4499 #ifndef HAVE_LIBCRYPTO
4619 michael 1646 if (block_state.flags.value & LISTENER_SSL)
4620 michael 4499 {
4621     conf_error_report("SSL not available - port closed");
4622     break;
4623     }
4624 michael 913 #endif
4625    
4626 michael 3473 for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4627 michael 6371 listener_add(i, block_state.addr.buf, block_state.flags.value);
4628 michael 913 }
4629     }
4630 michael 7061 #line 4631 "conf_parser.c" /* yacc.c:1646 */
4631 michael 913 break;
4632    
4633 michael 7061 case 300:
4634     #line 1704 "conf_parser.y" /* yacc.c:1646 */
4635 michael 913 {
4636 michael 967 if (conf_parser_ctx.pass == 2)
4637 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4638 michael 913 }
4639 michael 7061 #line 4640 "conf_parser.c" /* yacc.c:1646 */
4640 michael 913 break;
4641    
4642 michael 7061 case 301:
4643     #line 1710 "conf_parser.y" /* yacc.c:1646 */
4644 michael 913 {
4645 michael 967 if (conf_parser_ctx.pass == 2)
4646 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4647 michael 913 }
4648 michael 7061 #line 4649 "conf_parser.c" /* yacc.c:1646 */
4649 michael 913 break;
4650    
4651 michael 7061 case 302:
4652     #line 1720 "conf_parser.y" /* yacc.c:1646 */
4653 michael 913 {
4654 michael 967 if (conf_parser_ctx.pass == 2)
4655 michael 1646 reset_block_state();
4656 michael 913 }
4657 michael 7061 #line 4658 "conf_parser.c" /* yacc.c:1646 */
4658 michael 913 break;
4659    
4660 michael 7061 case 303:
4661     #line 1724 "conf_parser.y" /* yacc.c:1646 */
4662 michael 913 {
4663 michael 4915 dlink_node *node = NULL;
4664 michael 913
4665 michael 1646 if (conf_parser_ctx.pass != 2)
4666 michael 913 break;
4667    
4668 michael 4915 DLINK_FOREACH(node, block_state.mask.list.head)
4669 michael 913 {
4670 michael 1646 struct MaskItem *conf = NULL;
4671 michael 913 struct split_nuh_item nuh;
4672    
4673 michael 4915 nuh.nuhmask = node->data;
4674 michael 913 nuh.nickptr = NULL;
4675 michael 1647 nuh.userptr = block_state.user.buf;
4676     nuh.hostptr = block_state.host.buf;
4677 michael 913 nuh.nicksize = 0;
4678 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
4679     nuh.hostsize = sizeof(block_state.host.buf);
4680 michael 913 split_nuh(&nuh);
4681    
4682 michael 1646 conf = conf_make(CONF_CLIENT);
4683 michael 2106 conf->user = xstrdup(block_state.user.buf);
4684     conf->host = xstrdup(block_state.host.buf);
4685 michael 913
4686 michael 1647 if (block_state.rpass.buf[0])
4687     conf->passwd = xstrdup(block_state.rpass.buf);
4688 michael 1646 if (block_state.name.buf[0])
4689 michael 1911 conf->name = xstrdup(block_state.name.buf);
4690 michael 913
4691 michael 1646 conf->flags = block_state.flags.value;
4692     conf->port = block_state.port.value;
4693    
4694     conf_add_class_to_conf(conf, block_state.class.buf);
4695     add_conf_by_address(CONF_CLIENT, conf);
4696 michael 913 }
4697     }
4698 michael 7061 #line 4699 "conf_parser.c" /* yacc.c:1646 */
4699 michael 913 break;
4700    
4701 michael 7061 case 315:
4702     #line 1773 "conf_parser.y" /* yacc.c:1646 */
4703 michael 1646 {
4704     if (conf_parser_ctx.pass == 2)
4705     dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4706     }
4707 michael 7061 #line 4708 "conf_parser.c" /* yacc.c:1646 */
4708 michael 1646 break;
4709    
4710 michael 7061 case 316:
4711     #line 1779 "conf_parser.y" /* yacc.c:1646 */
4712 michael 913 {
4713 michael 967 if (conf_parser_ctx.pass == 2)
4714 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4715 michael 913 }
4716 michael 7061 #line 4717 "conf_parser.c" /* yacc.c:1646 */
4717 michael 913 break;
4718    
4719 michael 7061 case 317:
4720     #line 1785 "conf_parser.y" /* yacc.c:1646 */
4721 michael 913 {
4722 michael 967 if (conf_parser_ctx.pass == 2)
4723 michael 1646 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4724 michael 913 }
4725 michael 7061 #line 4726 "conf_parser.c" /* yacc.c:1646 */
4726 michael 913 break;
4727    
4728 michael 7061 case 318:
4729     #line 1791 "conf_parser.y" /* yacc.c:1646 */
4730 michael 913 {
4731 michael 967 if (conf_parser_ctx.pass == 2)
4732 michael 913 {
4733     if (yylval.number)
4734 michael 1646 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4735 michael 913 else
4736 michael 1646 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4737 michael 913 }
4738     }
4739 michael 7061 #line 4740 "conf_parser.c" /* yacc.c:1646 */
4740 michael 913 break;
4741    
4742 michael 7061 case 319:
4743     #line 1802 "conf_parser.y" /* yacc.c:1646 */
4744 michael 913 {
4745 michael 1646 if (conf_parser_ctx.pass == 2)
4746 michael 2093 block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4747 michael 913 }
4748 michael 7061 #line 4749 "conf_parser.c" /* yacc.c:1646 */
4749 michael 913 break;
4750    
4751 michael 6595 case 323:
4752 michael 6801 #line 1809 "conf_parser.y" /* yacc.c:1646 */
4753 michael 913 {
4754 michael 967 if (conf_parser_ctx.pass == 2)
4755 michael 7061 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4756 michael 913 }
4757 michael 7061 #line 4758 "conf_parser.c" /* yacc.c:1646 */
4758 michael 913 break;
4759    
4760 michael 6595 case 324:
4761 michael 6801 #line 1813 "conf_parser.y" /* yacc.c:1646 */
4762 michael 913 {
4763 michael 967 if (conf_parser_ctx.pass == 2)
4764 michael 7061 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4765 michael 913 }
4766 michael 7061 #line 4767 "conf_parser.c" /* yacc.c:1646 */
4767 michael 913 break;
4768    
4769 michael 6595 case 325:
4770 michael 6801 #line 1817 "conf_parser.y" /* yacc.c:1646 */
4771 michael 913 {
4772 michael 967 if (conf_parser_ctx.pass == 2)
4773 michael 7061 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4774 michael 913 }
4775 michael 7061 #line 4776 "conf_parser.c" /* yacc.c:1646 */
4776 michael 913 break;
4777    
4778 michael 6595 case 326:
4779 michael 6801 #line 1821 "conf_parser.y" /* yacc.c:1646 */
4780 michael 913 {
4781 michael 967 if (conf_parser_ctx.pass == 2)
4782 michael 7061 block_state.flags.value |= CONF_FLAGS_EXEMPTXLINE;
4783 michael 913 }
4784 michael 7061 #line 4785 "conf_parser.c" /* yacc.c:1646 */
4785 michael 913 break;
4786    
4787 michael 6595 case 327:
4788 michael 6801 #line 1825 "conf_parser.y" /* yacc.c:1646 */
4789 michael 913 {
4790 michael 967 if (conf_parser_ctx.pass == 2)
4791 michael 7061 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4792 michael 913 }
4793 michael 7061 #line 4794 "conf_parser.c" /* yacc.c:1646 */
4794 michael 913 break;
4795    
4796 michael 6595 case 328:
4797 michael 6801 #line 1829 "conf_parser.y" /* yacc.c:1646 */
4798 michael 913 {
4799 michael 967 if (conf_parser_ctx.pass == 2)
4800 michael 7061 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4801 michael 913 }
4802 michael 7061 #line 4803 "conf_parser.c" /* yacc.c:1646 */
4803 michael 913 break;
4804    
4805 michael 6595 case 329:
4806 michael 6801 #line 1833 "conf_parser.y" /* yacc.c:1646 */
4807 michael 913 {
4808 michael 967 if (conf_parser_ctx.pass == 2)
4809 michael 7061 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4810 michael 1250 }
4811 michael 7061 #line 4812 "conf_parser.c" /* yacc.c:1646 */
4812 michael 1250 break;
4813    
4814 michael 6595 case 330:
4815 michael 6801 #line 1837 "conf_parser.y" /* yacc.c:1646 */
4816 michael 1250 {
4817 michael 1715 if (conf_parser_ctx.pass == 2)
4818 michael 7061 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4819 michael 1715 }
4820 michael 7061 #line 4821 "conf_parser.c" /* yacc.c:1646 */
4821 michael 1715 break;
4822    
4823 michael 6595 case 331:
4824 michael 6801 #line 1841 "conf_parser.y" /* yacc.c:1646 */
4825 michael 1715 {
4826 michael 5987 if (conf_parser_ctx.pass == 2)
4827 michael 7061 block_state.flags.value |= CONF_FLAGS_WEBIRC;
4828 michael 5987 }
4829 michael 7061 #line 4830 "conf_parser.c" /* yacc.c:1646 */
4830 michael 5987 break;
4831    
4832 michael 6595 case 332:
4833 michael 7061 #line 1845 "conf_parser.y" /* yacc.c:1646 */
4834 michael 5987 {
4835 michael 7061 if (conf_parser_ctx.pass == 2)
4836     block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4837     }
4838     #line 4839 "conf_parser.c" /* yacc.c:1646 */
4839     break;
4840    
4841     case 333:
4842     #line 1851 "conf_parser.y" /* yacc.c:1646 */
4843     {
4844 michael 1646 if (conf_parser_ctx.pass != 2)
4845     break;
4846    
4847 michael 3473 if (valid_hostname(yylval.string))
4848 michael 913 {
4849 michael 1646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4850     block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4851 michael 913 }
4852 michael 1646 else
4853     ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4854 michael 913 }
4855 michael 7061 #line 4856 "conf_parser.c" /* yacc.c:1646 */
4856 michael 913 break;
4857    
4858 michael 7061 case 334:
4859     #line 1865 "conf_parser.y" /* yacc.c:1646 */
4860 michael 913 {
4861 michael 1646 if (conf_parser_ctx.pass != 2)
4862     break;
4863    
4864     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4865     block_state.flags.value |= CONF_FLAGS_REDIR;
4866 michael 913 }
4867 michael 7061 #line 4868 "conf_parser.c" /* yacc.c:1646 */
4868 michael 913 break;
4869    
4870 michael 7061 case 335:
4871     #line 1874 "conf_parser.y" /* yacc.c:1646 */
4872 michael 913 {
4873 michael 1646 if (conf_parser_ctx.pass != 2)
4874     break;
4875 michael 1647
4876 michael 1646 block_state.flags.value |= CONF_FLAGS_REDIR;
4877 michael 2473 block_state.port.value = (yyvsp[-1].number);
4878 michael 913 }
4879 michael 7061 #line 4880 "conf_parser.c" /* yacc.c:1646 */
4880 michael 913 break;
4881    
4882 michael 7061 case 336:
4883     #line 1887 "conf_parser.y" /* yacc.c:1646 */
4884 michael 913 {
4885 michael 1647 if (conf_parser_ctx.pass != 2)
4886 michael 913 break;
4887    
4888 michael 1647 reset_block_state();
4889     strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4890 michael 913 }
4891 michael 7061 #line 4892 "conf_parser.c" /* yacc.c:1646 */
4892 michael 913 break;
4893    
4894 michael 7061 case 337:
4895     #line 1894 "conf_parser.y" /* yacc.c:1646 */
4896 michael 1823 {
4897 michael 1858 if (conf_parser_ctx.pass != 2)
4898     break;
4899    
4900     create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4901 michael 1823 }
4902 michael 7061 #line 4903 "conf_parser.c" /* yacc.c:1646 */
4903 michael 1823 break;
4904    
4905 michael 7061 case 344:
4906     #line 1905 "conf_parser.y" /* yacc.c:1646 */
4907 michael 913 {
4908 michael 967 if (conf_parser_ctx.pass == 2)
4909 michael 1858 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4910 michael 913 }
4911 michael 7061 #line 4912 "conf_parser.c" /* yacc.c:1646 */
4912 michael 913 break;
4913    
4914 michael 7061 case 345:
4915     #line 1911 "conf_parser.y" /* yacc.c:1646 */
4916 michael 913 {
4917 michael 1823 if (conf_parser_ctx.pass == 2)
4918 michael 1858 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4919 michael 913 }
4920 michael 7061 #line 4921 "conf_parser.c" /* yacc.c:1646 */
4921 michael 913 break;
4922    
4923 michael 7061 case 346:
4924     #line 1917 "conf_parser.y" /* yacc.c:1646 */
4925 michael 913 {
4926 michael 967 if (conf_parser_ctx.pass == 2)
4927 michael 1858 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4928 michael 913 }
4929 michael 7061 #line 4930 "conf_parser.c" /* yacc.c:1646 */
4930 michael 913 break;
4931    
4932 michael 7061 case 352:
4933     #line 1932 "conf_parser.y" /* yacc.c:1646 */
4934 michael 913 {
4935 michael 2129 if (conf_parser_ctx.pass != 2)
4936     break;
4937    
4938     if (valid_servname(yylval.string))
4939 michael 913 {
4940 michael 2129 struct MaskItem *conf = conf_make(CONF_SERVICE);
4941     conf->name = xstrdup(yylval.string);
4942 michael 1157 }
4943     }
4944 michael 7061 #line 4945 "conf_parser.c" /* yacc.c:1646 */
4945 michael 1157 break;
4946    
4947 michael 7061 case 353:
4948     #line 1948 "conf_parser.y" /* yacc.c:1646 */
4949 michael 1157 {
4950 michael 1647 if (conf_parser_ctx.pass != 2)
4951     break;
4952    
4953     reset_block_state();
4954    
4955     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4956     strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4957     strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4958     block_state.flags.value = SHARED_ALL;
4959 michael 913 }
4960 michael 7061 #line 4961 "conf_parser.c" /* yacc.c:1646 */
4961 michael 913 break;
4962    
4963 michael 7061 case 354:
4964     #line 1959 "conf_parser.y" /* yacc.c:1646 */
4965 michael 913 {
4966 michael 1647 struct MaskItem *conf = NULL;
4967    
4968     if (conf_parser_ctx.pass != 2)
4969     break;
4970    
4971 michael 6628 conf = conf_make(CONF_SHARED);
4972 michael 1647 conf->flags = block_state.flags.value;
4973     conf->name = xstrdup(block_state.name.buf);
4974     conf->user = xstrdup(block_state.user.buf);
4975 michael 1911 conf->host = xstrdup(block_state.host.buf);
4976 michael 913 }
4977 michael 7061 #line 4978 "conf_parser.c" /* yacc.c:1646 */
4978 michael 913 break;
4979    
4980 michael 7061 case 361:
4981     #line 1976 "conf_parser.y" /* yacc.c:1646 */
4982 michael 913 {
4983 michael 967 if (conf_parser_ctx.pass == 2)
4984 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4985 michael 913 }
4986 michael 7061 #line 4987 "conf_parser.c" /* yacc.c:1646 */
4987 michael 913 break;
4988    
4989 michael 7061 case 362:
4990     #line 1982 "conf_parser.y" /* yacc.c:1646 */
4991 michael 913 {
4992 michael 967 if (conf_parser_ctx.pass == 2)
4993 michael 913 {
4994     struct split_nuh_item nuh;
4995    
4996     nuh.nuhmask = yylval.string;
4997     nuh.nickptr = NULL;
4998 michael 1647 nuh.userptr = block_state.user.buf;
4999     nuh.hostptr = block_state.host.buf;
5000 michael 913
5001     nuh.nicksize = 0;
5002 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
5003     nuh.hostsize = sizeof(block_state.host.buf);
5004 michael 913
5005     split_nuh(&nuh);
5006     }
5007     }
5008 michael 7061 #line 5009 "conf_parser.c" /* yacc.c:1646 */
5009 michael 913 break;
5010    
5011 michael 7061 case 363:
5012     #line 2001 "conf_parser.y" /* yacc.c:1646 */
5013 michael 913 {
5014 michael 967 if (conf_parser_ctx.pass == 2)
5015 michael 1647 block_state.flags.value = 0;
5016 michael 913 }
5017 michael 7061 #line 5018 "conf_parser.c" /* yacc.c:1646 */
5018 michael 913 break;
5019    
5020 michael 6595 case 367:
5021 michael 6801 #line 2008 "conf_parser.y" /* yacc.c:1646 */
5022 michael 1644 {
5023     if (conf_parser_ctx.pass == 2)
5024 michael 7061 block_state.flags.value |= SHARED_KLINE;
5025 michael 1644 }
5026 michael 7061 #line 5027 "conf_parser.c" /* yacc.c:1646 */
5027 michael 1644 break;
5028    
5029 michael 6595 case 368:
5030 michael 6801 #line 2012 "conf_parser.y" /* yacc.c:1646 */
5031 michael 913 {
5032 michael 967 if (conf_parser_ctx.pass == 2)
5033 michael 7061 block_state.flags.value |= SHARED_UNKLINE;
5034 michael 913 }
5035 michael 7061 #line 5036 "conf_parser.c" /* yacc.c:1646 */
5036 michael 913 break;
5037    
5038 michael 6595 case 369:
5039 michael 6801 #line 2016 "conf_parser.y" /* yacc.c:1646 */
5040 michael 913 {
5041 michael 967 if (conf_parser_ctx.pass == 2)
5042 michael 7061 block_state.flags.value |= SHARED_DLINE;
5043 michael 913 }
5044 michael 7061 #line 5045 "conf_parser.c" /* yacc.c:1646 */
5045 michael 913 break;
5046    
5047 michael 6595 case 370:
5048 michael 6801 #line 2020 "conf_parser.y" /* yacc.c:1646 */
5049 michael 913 {
5050 michael 967 if (conf_parser_ctx.pass == 2)
5051 michael 7061 block_state.flags.value |= SHARED_UNDLINE;
5052 michael 913 }
5053 michael 7061 #line 5054 "conf_parser.c" /* yacc.c:1646 */
5054 michael 913 break;
5055    
5056 michael 6595 case 371:
5057 michael 6801 #line 2024 "conf_parser.y" /* yacc.c:1646 */
5058 michael 913 {
5059 michael 967 if (conf_parser_ctx.pass == 2)
5060 michael 7061 block_state.flags.value |= SHARED_XLINE;
5061 michael 913 }
5062 michael 7061 #line 5063 "conf_parser.c" /* yacc.c:1646 */
5063 michael 913 break;
5064    
5065 michael 6595 case 372:
5066 michael 6801 #line 2028 "conf_parser.y" /* yacc.c:1646 */
5067 michael 913 {
5068 michael 967 if (conf_parser_ctx.pass == 2)
5069 michael 7061 block_state.flags.value |= SHARED_UNXLINE;
5070 michael 913 }
5071 michael 7061 #line 5072 "conf_parser.c" /* yacc.c:1646 */
5072 michael 913 break;
5073    
5074 michael 6595 case 373:
5075 michael 6801 #line 2032 "conf_parser.y" /* yacc.c:1646 */
5076 michael 913 {
5077 michael 967 if (conf_parser_ctx.pass == 2)
5078 michael 7061 block_state.flags.value |= SHARED_RESV;
5079 michael 913 }
5080 michael 7061 #line 5081 "conf_parser.c" /* yacc.c:1646 */
5081 michael 913 break;
5082    
5083 michael 6595 case 374:
5084 michael 6801 #line 2036 "conf_parser.y" /* yacc.c:1646 */
5085 michael 913 {
5086 michael 967 if (conf_parser_ctx.pass == 2)
5087 michael 7061 block_state.flags.value |= SHARED_UNRESV;
5088 michael 913 }
5089 michael 7061 #line 5090 "conf_parser.c" /* yacc.c:1646 */
5090 michael 913 break;
5091    
5092 michael 6595 case 375:
5093 michael 6801 #line 2040 "conf_parser.y" /* yacc.c:1646 */
5094 michael 913 {
5095 michael 967 if (conf_parser_ctx.pass == 2)
5096 michael 7061 block_state.flags.value |= SHARED_LOCOPS;
5097 michael 913 }
5098 michael 7061 #line 5099 "conf_parser.c" /* yacc.c:1646 */
5099 michael 913 break;
5100    
5101 michael 6595 case 376:
5102 michael 7061 #line 2044 "conf_parser.y" /* yacc.c:1646 */
5103 michael 913 {
5104 michael 7061 if (conf_parser_ctx.pass == 2)
5105     block_state.flags.value = SHARED_ALL;
5106     }
5107     #line 5108 "conf_parser.c" /* yacc.c:1646 */
5108     break;
5109    
5110     case 377:
5111     #line 2054 "conf_parser.y" /* yacc.c:1646 */
5112     {
5113 michael 1647 if (conf_parser_ctx.pass != 2)
5114     break;
5115    
5116     reset_block_state();
5117    
5118     strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5119     block_state.flags.value = SHARED_ALL;
5120 michael 913 }
5121 michael 7061 #line 5122 "conf_parser.c" /* yacc.c:1646 */
5122 michael 913 break;
5123    
5124 michael 7061 case 378:
5125     #line 2063 "conf_parser.y" /* yacc.c:1646 */
5126 michael 913 {
5127 michael 1647 struct MaskItem *conf = NULL;
5128    
5129     if (conf_parser_ctx.pass != 2)
5130     break;
5131    
5132     conf = conf_make(CONF_CLUSTER);
5133     conf->flags = block_state.flags.value;
5134     conf->name = xstrdup(block_state.name.buf);
5135 michael 913 }
5136 michael 7061 #line 5137 "conf_parser.c" /* yacc.c:1646 */
5137 michael 913 break;
5138    
5139 michael 7061 case 384:
5140     #line 2078 "conf_parser.y" /* yacc.c:1646 */
5141 michael 913 {
5142 michael 967 if (conf_parser_ctx.pass == 2)
5143 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5144 michael 913 }
5145 michael 7061 #line 5146 "conf_parser.c" /* yacc.c:1646 */
5146 michael 913 break;
5147    
5148 michael 7061 case 385:
5149     #line 2084 "conf_parser.y" /* yacc.c:1646 */
5150 michael 913 {
5151 michael 967 if (conf_parser_ctx.pass == 2)
5152 michael 1647 block_state.flags.value = 0;
5153 michael 913 }
5154 michael 7061 #line 5155 "conf_parser.c" /* yacc.c:1646 */
5155 michael 913 break;
5156    
5157 michael 6595 case 389:
5158 michael 6801 #line 2091 "conf_parser.y" /* yacc.c:1646 */
5159 michael 913 {
5160 michael 967 if (conf_parser_ctx.pass == 2)
5161 michael 7061 block_state.flags.value |= SHARED_KLINE;
5162 michael 913 }
5163 michael 7061 #line 5164 "conf_parser.c" /* yacc.c:1646 */
5164 michael 913 break;
5165    
5166 michael 6595 case 390:
5167 michael 6801 #line 2095 "conf_parser.y" /* yacc.c:1646 */
5168 michael 913 {
5169 michael 967 if (conf_parser_ctx.pass == 2)
5170 michael 7061 block_state.flags.value |= SHARED_UNKLINE;
5171 michael 913 }
5172 michael 7061 #line 5173 "conf_parser.c" /* yacc.c:1646 */
5173 michael 913 break;
5174    
5175 michael 6595 case 391:
5176 michael 6801 #line 2099 "conf_parser.y" /* yacc.c:1646 */
5177 michael 913 {
5178 michael 967 if (conf_parser_ctx.pass == 2)
5179 michael 7061 block_state.flags.value |= SHARED_DLINE;
5180 michael 913 }
5181 michael 7061 #line 5182 "conf_parser.c" /* yacc.c:1646 */
5182 michael 913 break;
5183    
5184 michael 6595 case 392:
5185 michael 6801 #line 2103 "conf_parser.y" /* yacc.c:1646 */
5186 michael 913 {
5187 michael 967 if (conf_parser_ctx.pass == 2)
5188 michael 7061 block_state.flags.value |= SHARED_UNDLINE;
5189 michael 913 }
5190 michael 7061 #line 5191 "conf_parser.c" /* yacc.c:1646 */
5191 michael 913 break;
5192    
5193 michael 6595 case 393:
5194 michael 6801 #line 2107 "conf_parser.y" /* yacc.c:1646 */
5195 michael 913 {
5196 michael 967 if (conf_parser_ctx.pass == 2)
5197 michael 7061 block_state.flags.value |= SHARED_XLINE;
5198 michael 913 }
5199 michael 7061 #line 5200 "conf_parser.c" /* yacc.c:1646 */
5200 michael 913 break;
5201    
5202 michael 6595 case 394:
5203 michael 6801 #line 2111 "conf_parser.y" /* yacc.c:1646 */
5204 michael 913 {
5205 michael 967 if (conf_parser_ctx.pass == 2)
5206 michael 7061 block_state.flags.value |= SHARED_UNXLINE;
5207 michael 913 }
5208 michael 7061 #line 5209 "conf_parser.c" /* yacc.c:1646 */
5209 michael 913 break;
5210    
5211 michael 6595 case 395:
5212 michael 6801 #line 2115 "conf_parser.y" /* yacc.c:1646 */
5213 michael 913 {
5214 michael 967 if (conf_parser_ctx.pass == 2)
5215 michael 7061 block_state.flags.value |= SHARED_RESV;
5216 michael 913 }
5217 michael 7061 #line 5218 "conf_parser.c" /* yacc.c:1646 */
5218 michael 913 break;
5219    
5220 michael 6595 case 396:
5221 michael 6801 #line 2119 "conf_parser.y" /* yacc.c:1646 */
5222 michael 913 {
5223 michael 967 if (conf_parser_ctx.pass == 2)
5224 michael 7061 block_state.flags.value |= SHARED_UNRESV;
5225 michael 913 }
5226 michael 7061 #line 5227 "conf_parser.c" /* yacc.c:1646 */
5227 michael 913 break;
5228    
5229 michael 6595 case 397:
5230 michael 6801 #line 2123 "conf_parser.y" /* yacc.c:1646 */
5231 michael 913 {
5232 michael 967 if (conf_parser_ctx.pass == 2)
5233 michael 7061 block_state.flags.value |= SHARED_LOCOPS;
5234 michael 1250 }
5235 michael 7061 #line 5236 "conf_parser.c" /* yacc.c:1646 */
5236 michael 1250 break;
5237    
5238 michael 6595 case 398:
5239 michael 7061 #line 2127 "conf_parser.y" /* yacc.c:1646 */
5240 michael 1250 {
5241 michael 7061 if (conf_parser_ctx.pass == 2)
5242     block_state.flags.value = SHARED_ALL;
5243     }
5244     #line 5245 "conf_parser.c" /* yacc.c:1646 */
5245     break;
5246 michael 1285
5247 michael 7061 case 399:
5248     #line 2137 "conf_parser.y" /* yacc.c:1646 */
5249     {
5250    
5251 michael 1647 if (conf_parser_ctx.pass != 2)
5252     break;
5253    
5254     reset_block_state();
5255 michael 2397 block_state.aftype.value = AF_INET;
5256 michael 1647 block_state.port.value = PORTNUM;
5257 michael 913 }
5258 michael 7061 #line 5259 "conf_parser.c" /* yacc.c:1646 */
5259 michael 913 break;
5260    
5261 michael 7061 case 400:
5262     #line 2146 "conf_parser.y" /* yacc.c:1646 */
5263 michael 913 {
5264 michael 1647 struct MaskItem *conf = NULL;
5265     struct addrinfo hints, *res;
5266    
5267     if (conf_parser_ctx.pass != 2)
5268     break;
5269    
5270 michael 1648 if (!block_state.name.buf[0] ||
5271     !block_state.host.buf[0])
5272 michael 1647 break;
5273    
5274 michael 2126 if (!block_state.rpass.buf[0] ||
5275     !block_state.spass.buf[0])
5276 michael 1647 break;
5277    
5278     if (has_wildcards(block_state.name.buf) ||
5279     has_wildcards(block_state.host.buf))
5280     break;
5281    
5282     conf = conf_make(CONF_SERVER);
5283     conf->port = block_state.port.value;
5284     conf->flags = block_state.flags.value;
5285     conf->aftype = block_state.aftype.value;
5286     conf->host = xstrdup(block_state.host.buf);
5287     conf->name = xstrdup(block_state.name.buf);
5288     conf->passwd = xstrdup(block_state.rpass.buf);
5289     conf->spasswd = xstrdup(block_state.spass.buf);
5290 michael 2228
5291     if (block_state.cert.buf[0])
5292     conf->certfp = xstrdup(block_state.cert.buf);
5293    
5294 michael 2252 if (block_state.ciph.buf[0])
5295     conf->cipher_list = xstrdup(block_state.ciph.buf);
5296 michael 1647
5297     dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5298     dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5299    
5300     if (block_state.bind.buf[0])
5301 michael 913 {
5302 michael 1647 memset(&hints, 0, sizeof(hints));
5303    
5304     hints.ai_family = AF_UNSPEC;
5305     hints.ai_socktype = SOCK_STREAM;
5306     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5307    
5308     if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5309     ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5310 michael 1302 else
5311     {
5312 michael 3473 assert(res);
5313 michael 913
5314 michael 1647 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5315     conf->bind.ss.ss_family = res->ai_family;
5316     conf->bind.ss_len = res->ai_addrlen;
5317     freeaddrinfo(res);
5318 michael 1302 }
5319 michael 1647 }
5320 michael 913
5321 michael 1647 conf_add_class_to_conf(conf, block_state.class.buf);
5322     lookup_confhost(conf);
5323 michael 913 }
5324 michael 7061 #line 5325 "conf_parser.c" /* yacc.c:1646 */
5325 michael 913 break;
5326    
5327 michael 7061 case 418:
5328     #line 2226 "conf_parser.y" /* yacc.c:1646 */
5329 michael 913 {
5330 michael 967 if (conf_parser_ctx.pass == 2)
5331 michael 1647 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5332 michael 913 }
5333 michael 7061 #line 5334 "conf_parser.c" /* yacc.c:1646 */
5334 michael 913 break;
5335    
5336 michael 7061 case 419:
5337     #line 2232 "conf_parser.y" /* yacc.c:1646 */
5338 michael 913 {
5339 michael 967 if (conf_parser_ctx.pass == 2)
5340 michael 1647 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5341 michael 913 }
5342 michael 7061 #line 5343 "conf_parser.c" /* yacc.c:1646 */
5343 michael 913 break;
5344    
5345 michael 7061 case 420:
5346     #line 2238 "conf_parser.y" /* yacc.c:1646 */
5347 michael 913 {
5348 michael 967 if (conf_parser_ctx.pass == 2)
5349 michael 1647 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5350 michael 913 }
5351 michael 7061 #line 5352 "conf_parser.c" /* yacc.c:1646 */
5352 michael 913 break;
5353    
5354 michael 7061 case 421:
5355     #line 2244 "conf_parser.y" /* yacc.c:1646 */
5356 michael 913 {
5357 michael 1647 if (conf_parser_ctx.pass != 2)
5358     break;
5359 michael 913
5360 michael 2473 if ((yyvsp[-1].string)[0] == ':')
5361 michael 1752 conf_error_report("Server passwords cannot begin with a colon");
5362 michael 3473 else if (strchr((yyvsp[-1].string), ' '))
5363 michael 1752 conf_error_report("Server passwords cannot contain spaces");
5364 michael 1647 else
5365     strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5366 michael 913 }
5367 michael 7061 #line 5368 "conf_parser.c" /* yacc.c:1646 */
5368 michael 913 break;
5369    
5370 michael 7061 case 422:
5371     #line 2257 "conf_parser.y" /* yacc.c:1646 */
5372 michael 913 {
5373 michael 1647 if (conf_parser_ctx.pass != 2)
5374     break;
5375 michael 913
5376 michael 2473 if ((yyvsp[-1].string)[0] == ':')
5377 michael 1752 conf_error_report("Server passwords cannot begin with a colon");
5378 michael 3473 else if (strchr((yyvsp[-1].string), ' '))
5379 michael 1752 conf_error_report("Server passwords cannot contain spaces");
5380 michael 1647 else
5381     strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5382 michael 913 }
5383 michael 7061 #line 5384 "conf_parser.c" /* yacc.c:1646 */
5384 michael 913 break;
5385    
5386 michael 7061 case 423:
5387     #line 2270 "conf_parser.y" /* yacc.c:1646 */
5388 michael 913 {
5389 michael 967 if (conf_parser_ctx.pass == 2)
5390 michael 2229 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5391 michael 2228 }
5392 michael 7061 #line 5393 "conf_parser.c" /* yacc.c:1646 */
5393 michael 2228 break;
5394    
5395 michael 7061 case 424:
5396     #line 2276 "conf_parser.y" /* yacc.c:1646 */
5397 michael 2228 {
5398     if (conf_parser_ctx.pass == 2)
5399 michael 2473 block_state.port.value = (yyvsp[-1].number);
5400 michael 913 }
5401 michael 7061 #line 5402 "conf_parser.c" /* yacc.c:1646 */
5402 michael 913 break;
5403    
5404 michael 7061 case 425:
5405     #line 2282 "conf_parser.y" /* yacc.c:1646 */
5406 michael 913 {
5407 michael 967 if (conf_parser_ctx.pass == 2)
5408 michael 1647 block_state.aftype.value = AF_INET;
5409 michael 913 }
5410 michael 7061 #line 5411 "conf_parser.c" /* yacc.c:1646 */
5411 michael 913 break;
5412    
5413 michael 7061 case 426:
5414     #line 2286 "conf_parser.y" /* yacc.c:1646 */
5415 michael 913 {
5416 michael 967 if (conf_parser_ctx.pass == 2)
5417 michael 1647 block_state.aftype.value = AF_INET6;
5418 michael 913 }
5419 michael 7061 #line 5420 "conf_parser.c" /* yacc.c:1646 */
5420 michael 913 break;
5421    
5422 michael 7061 case 427:
5423     #line 2292 "conf_parser.y" /* yacc.c:1646 */
5424 michael 913 {
5425 michael 1648 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5426 michael 913 }
5427 michael 7061 #line 5428 "conf_parser.c" /* yacc.c:1646 */
5428 michael 913 break;
5429    
5430 michael 7061 case 431:
5431     #line 2298 "conf_parser.y" /* yacc.c:1646 */
5432 michael 913 {
5433 michael 967 if (conf_parser_ctx.pass == 2)
5434 michael 1647 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5435 michael 913 }
5436 michael 7061 #line 5437 "conf_parser.c" /* yacc.c:1646 */
5437 michael 913 break;
5438    
5439 michael 7061 case 432:
5440     #line 2302 "conf_parser.y" /* yacc.c:1646 */
5441 michael 913 {
5442 michael 967 if (conf_parser_ctx.pass == 2)
5443 michael 1647 block_state.flags.value |= CONF_FLAGS_SSL;
5444 michael 913 }
5445 michael 7061 #line 5446 "conf_parser.c" /* yacc.c:1646 */
5446 michael 913 break;
5447    
5448 michael 7061 case 433:
5449     #line 2308 "conf_parser.y" /* yacc.c:1646 */
5450 michael 913 {
5451 michael 967 if (conf_parser_ctx.pass == 2)
5452 michael 913 {
5453     if (yylval.number)
5454 michael 1647 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5455 michael 913 else
5456 michael 1647 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5457 michael 913 }
5458     }
5459 michael 7061 #line 5460 "conf_parser.c" /* yacc.c:1646 */
5460 michael 913 break;
5461    
5462 michael 7061 case 434:
5463     #line 2319 "conf_parser.y" /* yacc.c:1646 */
5464 michael 913 {
5465 michael 967 if (conf_parser_ctx.pass == 2)
5466 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5467 michael 913 }
5468 michael 7061 #line 5469 "conf_parser.c" /* yacc.c:1646 */
5469 michael 913 break;
5470    
5471 michael 7061 case 435:
5472     #line 2325 "conf_parser.y" /* yacc.c:1646 */
5473 michael 913 {
5474 michael 967 if (conf_parser_ctx.pass == 2)
5475 michael 1647 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5476 michael 913 }
5477 michael 7061 #line 5478 "conf_parser.c" /* yacc.c:1646 */
5478 michael 913 break;
5479    
5480 michael 7061 case 436:
5481     #line 2331 "conf_parser.y" /* yacc.c:1646 */
5482 michael 913 {
5483 michael 967 if (conf_parser_ctx.pass == 2)
5484 michael 1647 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5485 michael 913 }
5486 michael 7061 #line 5487 "conf_parser.c" /* yacc.c:1646 */
5487 michael 913 break;
5488    
5489 michael 7061 case 437:
5490     #line 2337 "conf_parser.y" /* yacc.c:1646 */
5491 michael 913 {
5492 michael 1306 #ifdef HAVE_LIBCRYPTO
5493 michael 967 if (conf_parser_ctx.pass == 2)
5494 michael 1647 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5495 michael 1306 #else
5496     if (conf_parser_ctx.pass == 2)
5497 michael 1752 conf_error_report("Ignoring connect::ciphers -- no OpenSSL support");
5498 michael 1306 #endif
5499     }
5500 michael 7061 #line 5501 "conf_parser.c" /* yacc.c:1646 */
5501 michael 1306 break;
5502    
5503 michael 7061 case 438:
5504     #line 2352 "conf_parser.y" /* yacc.c:1646 */
5505 michael 1306 {
5506     if (conf_parser_ctx.pass == 2)
5507 michael 1647 reset_block_state();
5508 michael 913 }
5509 michael 7061 #line 5510 "conf_parser.c" /* yacc.c:1646 */
5510 michael 913 break;
5511    
5512 michael 7061 case 439:
5513     #line 2356 "conf_parser.y" /* yacc.c:1646 */
5514 michael 913 {
5515 michael 1647 struct MaskItem *conf = NULL;
5516    
5517     if (conf_parser_ctx.pass != 2)
5518     break;
5519    
5520     if (!block_state.user.buf[0] ||
5521     !block_state.host.buf[0])
5522     break;
5523    
5524 michael 1921 conf = conf_make(CONF_KLINE);
5525     conf->user = xstrdup(block_state.user.buf);
5526     conf->host = xstrdup(block_state.host.buf);
5527 michael 1647
5528 michael 1921 if (block_state.rpass.buf[0])
5529     conf->reason = xstrdup(block_state.rpass.buf);
5530 michael 1647 else
5531 michael 1921 conf->reason = xstrdup(CONF_NOREASON);
5532     add_conf_by_address(CONF_KLINE, conf);
5533 michael 913 }
5534 michael 7061 #line 5535 "conf_parser.c" /* yacc.c:1646 */
5535 michael 913 break;
5536    
5537 michael 7061 case 445:
5538     #line 2381 "conf_parser.y" /* yacc.c:1646 */
5539 michael 913 {
5540    
5541 michael 967 if (conf_parser_ctx.pass == 2)
5542 michael 913 {
5543     struct split_nuh_item nuh;
5544    
5545     nuh.nuhmask = yylval.string;
5546     nuh.nickptr = NULL;
5547 michael 1647 nuh.userptr = block_state.user.buf;
5548     nuh.hostptr = block_state.host.buf;
5549 michael 913
5550     nuh.nicksize = 0;
5551 michael 1647 nuh.usersize = sizeof(block_state.user.buf);
5552     nuh.hostsize = sizeof(block_state.host.buf);
5553 michael 913
5554     split_nuh(&nuh);
5555     }
5556     }
5557 michael 7061 #line 5558 "conf_parser.c" /* yacc.c:1646 */
5558 michael 913 break;
5559    
5560 michael 7061 case 446:
5561     #line 2401 "conf_parser.y" /* yacc.c:1646 */
5562 michael 913 {
5563 michael 967 if (conf_parser_ctx.pass == 2)
5564 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5565 michael 913 }
5566 michael 7061 #line 5567 "conf_parser.c" /* yacc.c:1646 */
5567 michael 913 break;
5568    
5569 michael 7061 case 447:
5570     #line 2411 "conf_parser.y" /* yacc.c:1646 */
5571 michael 913 {
5572 michael 967 if (conf_parser_ctx.pass == 2)
5573 michael 1646 reset_block_state();
5574 michael 913 }
5575 michael 7061 #line 5576 "conf_parser.c" /* yacc.c:1646 */
5576 michael 913 break;
5577    
5578 michael 7061 case 448:
5579     #line 2415 "conf_parser.y" /* yacc.c:1646 */
5580 michael 913 {
5581 michael 1646 struct MaskItem *conf = NULL;
5582    
5583     if (conf_parser_ctx.pass != 2)
5584     break;
5585    
5586     if (!block_state.addr.buf[0])
5587     break;
5588    
5589     if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5590 michael 913 {
5591 michael 1646 conf = conf_make(CONF_DLINE);
5592     conf->host = xstrdup(block_state.addr.buf);
5593 michael 1005
5594 michael 1647 if (block_state.rpass.buf[0])
5595     conf->reason = xstrdup(block_state.rpass.buf);
5596 michael 1646 else
5597     conf->reason = xstrdup(CONF_NOREASON);
5598     add_conf_by_address(CONF_DLINE, conf);
5599 michael 913 }
5600     }
5601 michael 7061 #line 5602 "conf_parser.c" /* yacc.c:1646 */
5602 michael 913 break;
5603    
5604 michael 7061 case 454:
5605     #line 2441 "conf_parser.y" /* yacc.c:1646 */
5606 michael 913 {
5607 michael 967 if (conf_parser_ctx.pass == 2)
5608 michael 1646 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5609 michael 913 }
5610 michael 7061 #line 5611 "conf_parser.c" /* yacc.c:1646 */
5611 michael 913 break;
5612    
5613 michael 7061 case 455:
5614     #line 2447 "conf_parser.y" /* yacc.c:1646 */
5615 michael 913 {
5616 michael 967 if (conf_parser_ctx.pass == 2)
5617 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5618 michael 913 }
5619 michael 7061 #line 5620 "conf_parser.c" /* yacc.c:1646 */
5620 michael 913 break;
5621    
5622 michael 7061 case 461:
5623     #line 2462 "conf_parser.y" /* yacc.c:1646 */
5624 michael 913 {
5625 michael 967 if (conf_parser_ctx.pass == 2)
5626 michael 913 {
5627 michael 6671 if (*yylval.string && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5628 michael 913 {
5629 michael 1646 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5630     conf->host = xstrdup(yylval.string);
5631 michael 913
5632 michael 1646 add_conf_by_address(CONF_EXEMPT, conf);
5633 michael 913 }
5634     }
5635     }
5636 michael 7061 #line 5637 "conf_parser.c" /* yacc.c:1646 */
5637 michael 913 break;
5638    
5639 michael 7061 case 462:
5640     #line 2479 "conf_parser.y" /* yacc.c:1646 */
5641 michael 913 {
5642 michael 967 if (conf_parser_ctx.pass == 2)
5643 michael 1646 reset_block_state();
5644 michael 913 }
5645 michael 7061 #line 5646 "conf_parser.c" /* yacc.c:1646 */
5646 michael 913 break;
5647    
5648 michael 7061 case 463:
5649     #line 2483 "conf_parser.y" /* yacc.c:1646 */
5650 michael 913 {
5651 michael 1646 struct MaskItem *conf = NULL;
5652    
5653     if (conf_parser_ctx.pass != 2)
5654     break;
5655    
5656     if (!block_state.name.buf[0])
5657     break;
5658    
5659 michael 1921 conf = conf_make(CONF_XLINE);
5660 michael 1646 conf->name = xstrdup(block_state.name.buf);
5661 michael 913
5662 michael 1647 if (block_state.rpass.buf[0])
5663     conf->reason = xstrdup(block_state.rpass.buf);
5664 michael 1646 else
5665     conf->reason = xstrdup(CONF_NOREASON);
5666 michael 913 }
5667 michael 7061 #line 5668 "conf_parser.c" /* yacc.c:1646 */
5668 michael 913 break;
5669    
5670 michael 7061 case 469:
5671     #line 2505 "conf_parser.y" /* yacc.c:1646 */
5672 michael 913 {
5673 michael 1646 if (conf_parser_ctx.pass == 2)
5674     strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5675 michael 913 }
5676 michael 7061 #line 5677 "conf_parser.c" /* yacc.c:1646 */
5677 michael 913 break;
5678    
5679 michael 7061 case 470:
5680     #line 2511 "conf_parser.y" /* yacc.c:1646 */
5681 michael 913 {
5682 michael 967 if (conf_parser_ctx.pass == 2)
5683 michael 1647 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5684 michael 913 }
5685 michael 7061 #line 5686 "conf_parser.c" /* yacc.c:1646 */
5686 michael 1118 break;
5687    
5688 michael 7061 case 520:
5689     #line 2572 "conf_parser.y" /* yacc.c:1646 */
5690 michael 2283 {
5691 michael 6490 ConfigGeneral.away_count = (yyvsp[-1].number);
5692 michael 1459 }
5693 michael 7061 #line 5694 "conf_parser.c" /* yacc.c:1646 */
5694 michael 1459 break;
5695    
5696 michael 7061 case 521:
5697     #line 2577 "conf_parser.y" /* yacc.c:1646 */
5698 michael 1459 {
5699 michael 6490 ConfigGeneral.away_time = (yyvsp[-1].number);
5700 michael 1459 }
5701 michael 7061 #line 5702 "conf_parser.c" /* yacc.c:1646 */
5702 michael 1459 break;
5703    
5704 michael 7061 case 522:
5705     #line 2582 "conf_parser.y" /* yacc.c:1646 */
5706 michael 1459 {
5707 michael 6490 ConfigGeneral.max_watch = (yyvsp[-1].number);
5708 michael 1459 }
5709 michael 7061 #line 5710 "conf_parser.c" /* yacc.c:1646 */
5710 michael 2185 break;
5711    
5712 michael 7061 case 523:
5713     #line 2587 "conf_parser.y" /* yacc.c:1646 */
5714 michael 913 {
5715 michael 6490 if (conf_parser_ctx.pass == 2)
5716     ConfigGeneral.cycle_on_host_change = yylval.number;
5717 michael 913 }
5718 michael 7061 #line 5719 "conf_parser.c" /* yacc.c:1646 */
5719 michael 913 break;
5720    
5721 michael 7061 case 524:
5722     #line 2593 "conf_parser.y" /* yacc.c:1646 */
5723 michael 913 {
5724 michael 6490 ConfigGeneral.dline_min_cidr = (yyvsp[-1].number);
5725 michael 913 }
5726 michael 7061 #line 5727 "conf_parser.c" /* yacc.c:1646 */
5727 michael 913 break;
5728    
5729 michael 7061 case 525:
5730     #line 2598 "conf_parser.y" /* yacc.c:1646 */
5731 michael 913 {
5732 michael 6490 ConfigGeneral.dline_min_cidr6 = (yyvsp[-1].number);
5733 michael 913 }
5734 michael 7061 #line 5735 "conf_parser.c" /* yacc.c:1646 */
5735 michael 913 break;
5736    
5737 michael 7061 case 526:
5738     #line 2603 "conf_parser.y" /* yacc.c:1646 */
5739 michael 913 {
5740 michael 6490 ConfigGeneral.kline_min_cidr = (yyvsp[-1].number);
5741 michael 913 }
5742 michael 7061 #line 5743 "conf_parser.c" /* yacc.c:1646 */
5743 michael 913 break;
5744    
5745 michael 7061 case 527:
5746     #line 2608 "conf_parser.y" /* yacc.c:1646 */
5747 michael 913 {
5748 michael 6490 ConfigGeneral.kline_min_cidr6 = (yyvsp[-1].number);
5749 michael 913 }
5750 michael 7061 #line 5751 "conf_parser.c" /* yacc.c:1646 */
5751 michael 913 break;
5752    
5753 michael 7061 case 528:
5754     #line 2613 "conf_parser.y" /* yacc.c:1646 */
5755 michael 913 {
5756 michael 6490 ConfigGeneral.tkline_expire_notices = yylval.number;
5757 michael 913 }
5758 michael 7061 #line 5759 "conf_parser.c" /* yacc.c:1646 */
5759 michael 913 break;
5760    
5761 michael 7061 case 529:
5762     #line 2618 "conf_parser.y" /* yacc.c:1646 */
5763 michael 913 {
5764 michael 6490 ConfigGeneral.kill_chase_time_limit = (yyvsp[-1].number);
5765 michael 913 }
5766 michael 7061 #line 5767 "conf_parser.c" /* yacc.c:1646 */
5767 michael 913 break;
5768    
5769 michael 7061 case 530:
5770     #line 2623 "conf_parser.y" /* yacc.c:1646 */
5771 michael 913 {
5772 michael 6490 ConfigGeneral.ignore_bogus_ts = yylval.number;
5773 michael 913 }
5774 michael 7061 #line 5775 "conf_parser.c" /* yacc.c:1646 */
5775 michael 913 break;
5776    
5777 michael 7061 case 531:
5778     #line 2628 "conf_parser.y" /* yacc.c:1646 */
5779 michael 913 {
5780 michael 6490 ConfigGeneral.failed_oper_notice = yylval.number;
5781 michael 913 }
5782 michael 7061 #line 5783 "conf_parser.c" /* yacc.c:1646 */
5783 michael 913 break;
5784    
5785 michael 7061 case 532:
5786     #line 2633 "conf_parser.y" /* yacc.c:1646 */
5787 michael 913 {
5788 michael 6490 ConfigGeneral.anti_nick_flood = yylval.number;
5789 michael 2853 }
5790 michael 7061 #line 5791 "conf_parser.c" /* yacc.c:1646 */
5791 michael 2853 break;
5792    
5793 michael 7061 case 533:
5794     #line 2638 "conf_parser.y" /* yacc.c:1646 */
5795 michael 2853 {
5796 michael 6490 ConfigGeneral.max_nick_time = (yyvsp[-1].number);
5797 michael 3506 }
5798 michael 7061 #line 5799 "conf_parser.c" /* yacc.c:1646 */
5799 michael 3506 break;
5800    
5801 michael 7061 case 534:
5802     #line 2643 "conf_parser.y" /* yacc.c:1646 */
5803 michael 3506 {
5804 michael 6490 ConfigGeneral.max_nick_changes = (yyvsp[-1].number);
5805 michael 3513 }
5806 michael 7061 #line 5807 "conf_parser.c" /* yacc.c:1646 */
5807 michael 3513 break;
5808    
5809 michael 7061 case 535:
5810     #line 2648 "conf_parser.y" /* yacc.c:1646 */
5811 michael 3513 {
5812 michael 6490 ConfigGeneral.max_accept = (yyvsp[-1].number);
5813 michael 5004 }
5814 michael 7061 #line 5815 "conf_parser.c" /* yacc.c:1646 */
5815 michael 5004 break;
5816    
5817 michael 7061 case 536:
5818     #line 2653 "conf_parser.y" /* yacc.c:1646 */
5819 michael 5004 {
5820 michael 6490 ConfigGeneral.anti_spam_exit_message_time = (yyvsp[-1].number);
5821 michael 913 }
5822 michael 7061 #line 5823 "conf_parser.c" /* yacc.c:1646 */
5823 michael 913 break;
5824    
5825 michael 7061 case 537:
5826     #line 2658 "conf_parser.y" /* yacc.c:1646 */
5827 michael 913 {
5828 michael 6490 ConfigGeneral.ts_warn_delta = (yyvsp[-1].number);
5829 michael 913 }
5830 michael 7061 #line 5831 "conf_parser.c" /* yacc.c:1646 */
5831 michael 913 break;
5832    
5833 michael 7061 case 538:
5834     #line 2663 "conf_parser.y" /* yacc.c:1646 */
5835 michael 913 {
5836 michael 6490 if (conf_parser_ctx.pass == 2)
5837     ConfigGeneral.ts_max_delta = (yyvsp[-1].number);
5838 michael 2269 }
5839 michael 7061 #line 5840 "conf_parser.c" /* yacc.c:1646 */
5840 michael 2269 break;
5841    
5842 michael 7061 case 539:
5843     #line 2669 "conf_parser.y" /* yacc.c:1646 */
5844 michael 2269 {
5845 michael 6490 ConfigGeneral.invisible_on_connect = yylval.number;
5846 michael 913 }
5847 michael 7061 #line 5848 "conf_parser.c" /* yacc.c:1646 */
5848 michael 913 break;
5849    
5850 michael 7061 case 540:
5851     #line 2674 "conf_parser.y" /* yacc.c:1646 */
5852 michael 913 {
5853 michael 6490 ConfigGeneral.warn_no_connect_block = yylval.number;
5854 michael 5025 }
5855 michael 7061 #line 5856 "conf_parser.c" /* yacc.c:1646 */
5856 michael 5025 break;
5857    
5858 michael 7061 case 541:
5859     #line 2679 "conf_parser.y" /* yacc.c:1646 */
5860 michael 5025 {
5861 michael 6490 ConfigGeneral.stats_e_disabled = yylval.number;
5862 michael 913 }
5863 michael 7061 #line 5864 "conf_parser.c" /* yacc.c:1646 */
5864 michael 913 break;
5865    
5866 michael 7061 case 542:
5867     #line 2684 "conf_parser.y" /* yacc.c:1646 */
5868 michael 913 {
5869 michael 6490 ConfigGeneral.stats_m_oper_only = yylval.number;
5870 michael 913 }
5871 michael 7061 #line 5872 "conf_parser.c" /* yacc.c:1646 */
5872 michael 913 break;
5873    
5874 michael 7061 case 543:
5875     #line 2689 "conf_parser.y" /* yacc.c:1646 */
5876 michael 913 {
5877 michael 6490 ConfigGeneral.stats_o_oper_only = yylval.number;
5878 michael 913 }
5879 michael 7061 #line 5880 "conf_parser.c" /* yacc.c:1646 */
5880 michael 913 break;
5881    
5882 michael 7061 case 544:
5883     #line 2694 "conf_parser.y" /* yacc.c:1646 */
5884 michael 913 {
5885 michael 6490 ConfigGeneral.stats_P_oper_only = yylval.number;
5886 michael 913 }
5887 michael 7061 #line 5888 "conf_parser.c" /* yacc.c:1646 */
5888 michael 913 break;
5889    
5890 michael 7061 case 545:
5891     #line 2699 "conf_parser.y" /* yacc.c:1646 */
5892 michael 913 {
5893 michael 6490 ConfigGeneral.stats_u_oper_only = yylval.number;
5894 michael 913 }
5895 michael 7061 #line 5896 "conf_parser.c" /* yacc.c:1646 */
5896 michael 913 break;
5897    
5898 michael 7061 case 546:
5899     #line 2704 "conf_parser.y" /* yacc.c:1646 */
5900 michael 913 {
5901 michael 6490 ConfigGeneral.stats_k_oper_only = 2 * yylval.number;
5902 michael 913 }
5903 michael 7061 #line 5904 "conf_parser.c" /* yacc.c:1646 */
5904 michael 913 break;
5905    
5906 michael 7061 case 547:
5907     #line 2707 "conf_parser.y" /* yacc.c:1646 */
5908 michael 913 {
5909 michael 6490 ConfigGeneral.stats_k_oper_only = 1;
5910 michael 913 }
5911 michael 7061 #line 5912 "conf_parser.c" /* yacc.c:1646 */
5912 michael 913 break;
5913    
5914 michael 7061 case 548:
5915     #line 2712 "conf_parser.y" /* yacc.c:1646 */
5916 michael 913 {
5917 michael 6490 ConfigGeneral.stats_i_oper_only = 2 * yylval.number;
5918 michael 913 }
5919 michael 7061 #line 5920 "conf_parser.c" /* yacc.c:1646 */
5920 michael 913 break;
5921    
5922 michael 7061 case 549:
5923     #line 2715 "conf_parser.y" /* yacc.c:1646 */
5924 michael 913 {
5925 michael 6490 ConfigGeneral.stats_i_oper_only = 1;
5926 michael 913 }
5927 michael 7061 #line 5928 "conf_parser.c" /* yacc.c:1646 */
5928 michael 913 break;
5929    
5930 michael 7061 case 550:
5931     #line 2720 "conf_parser.y" /* yacc.c:1646 */
5932 michael 913 {
5933 michael 6490 ConfigGeneral.pace_wait = (yyvsp[-1].number);
5934 michael 913 }
5935 michael 7061 #line 5936 "conf_parser.c" /* yacc.c:1646 */
5936 michael 913 break;
5937    
5938 michael 7061 case 551:
5939     #line 2725 "conf_parser.y" /* yacc.c:1646 */
5940 michael 913 {
5941 michael 6490 ConfigGeneral.caller_id_wait = (yyvsp[-1].number);
5942 michael 913 }
5943 michael 7061 #line 5944 "conf_parser.c" /* yacc.c:1646 */
5944 michael 913 break;
5945    
5946 michael 7061 case 552:
5947     #line 2730 "conf_parser.y" /* yacc.c:1646 */
5948 michael 913 {
5949 michael 6490 ConfigGeneral.opers_bypass_callerid = yylval.number;
5950 michael 1715 }
5951 michael 7061 #line 5952 "conf_parser.c" /* yacc.c:1646 */
5952 michael 1715 break;
5953    
5954 michael 7061 case 553:
5955     #line 2735 "conf_parser.y" /* yacc.c:1646 */
5956 michael 1715 {
5957 michael 6490 ConfigGeneral.pace_wait_simple = (yyvsp[-1].number);
5958 michael 913 }
5959 michael 7061 #line 5960 "conf_parser.c" /* yacc.c:1646 */
5960 michael 913 break;
5961    
5962 michael 7061 case 554:
5963     #line 2740 "conf_parser.y" /* yacc.c:1646 */
5964 michael 913 {
5965 michael 6490 ConfigGeneral.short_motd = yylval.number;
5966 michael 2853 }
5967 michael 7061 #line 5968 "conf_parser.c" /* yacc.c:1646 */
5968 michael 2853 break;
5969    
5970 michael 7061 case 555:
5971     #line 2745 "conf_parser.y" /* yacc.c:1646 */
5972 michael 4254 {
5973 michael 6490 ConfigGeneral.no_oper_flood = yylval.number;
5974 michael 4254 }
5975 michael 7061 #line 5976 "conf_parser.c" /* yacc.c:1646 */
5976 michael 4254 break;
5977    
5978 michael 7061 case 556:
5979     #line 2750 "conf_parser.y" /* yacc.c:1646 */
5980 michael 3506 {
5981 michael 6490 ConfigGeneral.dots_in_ident = (yyvsp[-1].number);
5982 michael 3513 }
5983 michael 7061 #line 5984 "conf_parser.c" /* yacc.c:1646 */
5984 michael 3513 break;
5985    
5986 michael 7061 case 557:
5987     #line 2755 "conf_parser.y" /* yacc.c:1646 */
5988 michael 3513 {
5989 michael 6490 ConfigGeneral.max_targets = (yyvsp[-1].number);
5990 michael 913 }
5991 michael 7061 #line 5992 "conf_parser.c" /* yacc.c:1646 */
5992 michael 913 break;
5993    
5994 michael 7061 case 558:
5995     #line 2760 "conf_parser.y" /* yacc.c:1646 */
5996 michael 913 {
5997 michael 6490 ConfigGeneral.ping_cookie = yylval.number;
5998 michael 1157 }
5999 michael 7061 #line 6000 "conf_parser.c" /* yacc.c:1646 */
6000 michael 913 break;
6001    
6002 michael 7061 case 559:
6003     #line 2765 "conf_parser.y" /* yacc.c:1646 */
6004 michael 913 {
6005 michael 6490 ConfigGeneral.disable_auth = yylval.number;
6006 michael 913 }
6007 michael 7061 #line 6008 "conf_parser.c" /* yacc.c:1646 */
6008 michael 913 break;
6009    
6010 michael 7061 case 560:
6011     #line 2770 "conf_parser.y" /* yacc.c:1646 */
6012 michael 4967 {
6013 michael 6490 ConfigGeneral.throttle_count = (yyvsp[-1].number);
6014 michael 4967 }
6015 michael 7061 #line 6016 "conf_parser.c" /* yacc.c:1646 */
6016 michael 4967 break;
6017    
6018 michael 7061 case 561:
6019     #line 2775 "conf_parser.y" /* yacc.c:1646 */
6020 michael 4967 {
6021 michael 6490 ConfigGeneral.throttle_time = (yyvsp[-1].number);
6022 michael 4967 }
6023 michael 7061 #line 6024 "conf_parser.c" /* yacc.c:1646 */
6024 michael 4967 break;
6025    
6026 michael 7061 case 562:
6027     #line 2780 "conf_parser.y" /* yacc.c:1646 */
6028 michael 913 {
6029 michael 6490 ConfigGeneral.oper_umodes = 0;
6030 michael 913 }
6031 michael 7061 #line 6032 "conf_parser.c" /* yacc.c:1646 */
6032 michael 913 break;
6033    
6034 michael 7061 case 566:
6035     #line 2786 "conf_parser.y" /* yacc.c:1646 */
6036 michael 2196 {
6037 michael 6490 ConfigGeneral.oper_umodes |= UMODE_BOTS;
6038 michael 3877 }
6039 michael 7061 #line 6040 "conf_parser.c" /* yacc.c:1646 */
6040 michael 3877 break;
6041    
6042 michael 7061 case 567:
6043     #line 2789 "conf_parser.y" /* yacc.c:1646 */
6044 michael 3877 {
6045 michael 6490 ConfigGeneral.oper_umodes |= UMODE_CCONN;
6046 michael 2196 }
6047 michael 7061 #line 6048 "conf_parser.c" /* yacc.c:1646 */
6048 michael 2196 break;
6049    
6050 michael 7061 case 568:
6051     #line 2792 "conf_parser.y" /* yacc.c:1646 */
6052 michael 2196 {
6053 michael 6490 ConfigGeneral.oper_umodes |= UMODE_DEAF;
6054 michael 2196 }
6055 michael 7061 #line 6056 "conf_parser.c" /* yacc.c:1646 */
6056 michael 2196 break;
6057    
6058 michael 7061 case 569:
6059     #line 2795 "conf_parser.y" /* yacc.c:1646 */
6060 michael 1547 {
6061 michael 6490 ConfigGeneral.oper_umodes |= UMODE_DEBUG;
6062 michael 1547 }
6063 michael 7061 #line 6064 "conf_parser.c" /* yacc.c:1646 */
6064 michael 1547 break;
6065    
6066 michael 7061 case 570:
6067     #line 2798 "conf_parser.y" /* yacc.c:1646 */
6068 michael 1547 {
6069 michael 6490 ConfigGeneral.oper_umodes |= UMODE_FULL;
6070 michael 1547 }
6071 michael 7061 #line 6072 "conf_parser.c" /* yacc.c:1646 */
6072 michael 1547 break;
6073    
6074 michael 7061 case 571:
6075     #line 2801 "conf_parser.y" /* yacc.c:1646 */
6076 michael 913 {
6077 michael 6490 ConfigGeneral.oper_umodes |= UMODE_HIDDEN;
6078 michael 913 }
6079 michael 7061 #line 6080 "conf_parser.c" /* yacc.c:1646 */
6080 michael 913 break;
6081    
6082 michael 7061 case 572:
6083     #line 2804 "conf_parser.y" /* yacc.c:1646 */
6084 michael 913 {
6085 michael 6490 ConfigGeneral.oper_umodes |= UMODE_HIDECHANS;
6086 michael 913 }
6087 michael 7061 #line 6088 "conf_parser.c" /* yacc.c:1646 */
6088 michael 913 break;
6089    
6090 michael 7061 case 573:
6091     #line 2807 "conf_parser.y" /* yacc.c:1646 */
6092 michael 913 {
6093 michael 6490 ConfigGeneral.oper_umodes |= UMODE_HIDEIDLE;
6094 michael 913 }
6095 michael 7061 #line 6096 "conf_parser.c" /* yacc.c:1646 */
6096 michael 913 break;
6097    
6098 michael 7061 case 574:
6099     #line 2810 "conf_parser.y" /* yacc.c:1646 */
6100 michael 913 {
6101 michael 6490 ConfigGeneral.oper_umodes |= UMODE_SKILL;
6102 michael 3506 }
6103 michael 7061 #line 6104 "conf_parser.c" /* yacc.c:1646 */
6104 michael 3506 break;
6105    
6106 michael 7061 case 575:
6107     #line 2813 "conf_parser.y" /* yacc.c:1646 */
6108 michael 3506 {
6109 michael 6490 ConfigGeneral.oper_umodes |= UMODE_NCHANGE;
6110 michael 913 }
6111 michael 7061 #line 6112 "conf_parser.c" /* yacc.c:1646 */
6112 michael 913 break;
6113    
6114 michael 7061 case 576:
6115     #line 2816 "conf_parser.y" /* yacc.c:1646 */
6116 michael 913 {
6117 michael 6490 ConfigGeneral.oper_umodes |= UMODE_REJ;
6118 michael 913 }
6119 michael 7061 #line 6120 "conf_parser.c" /* yacc.c:1646 */
6120 michael 913 break;
6121    
6122 michael 7061 case 577:
6123     #line 2819 "conf_parser.y" /* yacc.c:1646 */
6124 michael 1294 {
6125 michael 6490 ConfigGeneral.oper_umodes |= UMODE_UNAUTH;
6126 michael 1294 }
6127 michael 7061 #line 6128 "conf_parser.c" /* yacc.c:1646 */
6128 michael 1294 break;
6129    
6130 michael 7061 case 578:
6131     #line 2822 "conf_parser.y" /* yacc.c:1646 */
6132 michael 913 {
6133 michael 6490 ConfigGeneral.oper_umodes |= UMODE_SPY;
6134 michael 913 }
6135 michael 7061 #line 6136 "conf_parser.c" /* yacc.c:1646 */
6136 michael 913 break;
6137    
6138 michael 7061 case 579:
6139     #line 2825 "conf_parser.y" /* yacc.c:1646 */
6140 michael 913 {
6141 michael 6490 ConfigGeneral.oper_umodes |= UMODE_EXTERNAL;
6142 michael 913 }
6143 michael 7061 #line 6144 "conf_parser.c" /* yacc.c:1646 */
6144 michael 913 break;
6145    
6146 michael 7061 case 580:
6147     #line 2828 "conf_parser.y" /* yacc.c:1646 */
6148 michael 913 {
6149 michael 6490 ConfigGeneral.oper_umodes |= UMODE_SERVNOTICE;
6150 michael 913 }
6151 michael 7061 #line 6152 "conf_parser.c" /* yacc.c:1646 */
6152 michael 913 break;
6153    
6154 michael 7061 case 581:
6155     #line 2831 "conf_parser.y" /* yacc.c:1646 */
6156 michael 913 {
6157 michael 6490 ConfigGeneral.oper_umodes |= UMODE_INVISIBLE;
6158 michael 913 }
6159 michael 7061 #line 6160 "conf_parser.c" /* yacc.c:1646 */
6160 michael 913 break;
6161    
6162 michael 7061 case 582:
6163     #line 2834 "conf_parser.y" /* yacc.c:1646 */
6164 michael 913 {
6165 michael 6490 ConfigGeneral.oper_umodes |= UMODE_WALLOP;
6166 michael 913 }
6167 michael 7061 #line 6168 "conf_parser.c" /* yacc.c:1646 */
6168 michael 913 break;
6169    
6170 michael 7061 case 583:
6171     #line 2837 "conf_parser.y" /* yacc.c:1646 */
6172 michael 913 {
6173 michael 6490 ConfigGeneral.oper_umodes |= UMODE_SOFTCALLERID;
6174 michael 913 }
6175 michael 7061 #line 6176 "conf_parser.c" /* yacc.c:1646 */
6176 michael 913 break;
6177    
6178 michael 7061 case 584:
6179     #line 2840 "conf_parser.y" /* yacc.c:1646 */
6180 michael 913 {
6181 michael 6490 ConfigGeneral.oper_umodes |= UMODE_CALLERID;
6182 michael 913 }
6183 michael 7061 #line 6184 "conf_parser.c" /* yacc.c:1646 */
6184 michael 913 break;
6185    
6186 michael 7061 case 585:
6187     #line 2843 "conf_parser.y" /* yacc.c:1646 */
6188 michael 913 {
6189 michael 6490 ConfigGeneral.oper_umodes |= UMODE_LOCOPS;
6190 michael 913 }
6191 michael 7061 #line 6192 "conf_parser.c" /* yacc.c:1646 */
6192 michael 913 break;
6193    
6194 michael 7061 case 586:
6195     #line 2846 "conf_parser.y" /* yacc.c:1646 */
6196 michael 913 {
6197 michael 6490 ConfigGeneral.oper_umodes |= UMODE_REGONLY;
6198 michael 913 }
6199 michael 7061 #line 6200 "conf_parser.c" /* yacc.c:1646 */
6200 michael 913 break;
6201    
6202 michael 7061 case 587:
6203     #line 2849 "conf_parser.y" /* yacc.c:1646 */
6204 michael 913 {
6205 michael 6490 ConfigGeneral.oper_umodes |= UMODE_FARCONNECT;
6206 michael 913 }
6207 michael 7061 #line 6208 "conf_parser.c" /* yacc.c:1646 */
6208 michael 913 break;
6209    
6210 michael 7061 case 588:
6211     #line 2854 "conf_parser.y" /* yacc.c:1646 */
6212 michael 913 {
6213 michael 6490 ConfigGeneral.oper_only_umodes = 0;
6214 michael 913 }
6215 michael 7061 #line 6216 "conf_parser.c" /* yacc.c:1646 */
6216 michael 913 break;
6217    
6218 michael 7061 case 592:
6219     #line 2860 "conf_parser.y" /* yacc.c:1646 */
6220 michael 913 {
6221 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_BOTS;
6222 michael 913 }
6223 michael 7061 #line 6224 "conf_parser.c" /* yacc.c:1646 */
6224 michael 913 break;
6225    
6226 michael 7061 case 593:
6227     #line 2863 "conf_parser.y" /* yacc.c:1646 */
6228 michael 913 {
6229 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_CCONN;
6230 michael 1981 }
6231 michael 7061 #line 6232 "conf_parser.c" /* yacc.c:1646 */
6232 michael 1981 break;
6233    
6234 michael 7061 case 594:
6235     #line 2866 "conf_parser.y" /* yacc.c:1646 */
6236 michael 1981 {
6237 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_DEAF;
6238 michael 1981 }
6239 michael 7061 #line 6240 "conf_parser.c" /* yacc.c:1646 */
6240 michael 1981 break;
6241    
6242 michael 7061 case 595:
6243     #line 2869 "conf_parser.y" /* yacc.c:1646 */
6244 michael 1981 {
6245 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_DEBUG;
6246 michael 913 }
6247 michael 7061 #line 6248 "conf_parser.c" /* yacc.c:1646 */
6248 michael 913 break;
6249    
6250 michael 7061 case 596:
6251     #line 2872 "conf_parser.y" /* yacc.c:1646 */
6252 michael 913 {
6253 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_FULL;
6254 michael 913 }
6255 michael 7061 #line 6256 "conf_parser.c" /* yacc.c:1646 */
6256 michael 913 break;
6257    
6258 michael 7061 case 597:
6259     #line 2875 "conf_parser.y" /* yacc.c:1646 */
6260 michael 2853 {
6261 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_SKILL;
6262 michael 913 }
6263 michael 7061 #line 6264 "conf_parser.c" /* yacc.c:1646 */
6264 michael 913 break;
6265    
6266 michael 7061 case 598:
6267     #line 2878 "conf_parser.y" /* yacc.c:1646 */
6268 michael 3229 {
6269 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_HIDDEN;
6270 michael 913 }
6271 michael 7061 #line 6272 "conf_parser.c" /* yacc.c:1646 */
6272 michael 913 break;
6273    
6274 michael 7061 case 599:
6275     #line 2881 "conf_parser.y" /* yacc.c:1646 */
6276 michael 2196 {
6277 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_NCHANGE;
6278 michael 913 }
6279 michael 7061 #line 6280 "conf_parser.c" /* yacc.c:1646 */
6280 michael 913 break;
6281    
6282 michael 7061 case 600:
6283     #line 2884 "conf_parser.y" /* yacc.c:1646 */
6284 michael 913 {
6285 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_REJ;
6286 michael 913 }
6287 michael 7061 #line 6288 "conf_parser.c" /* yacc.c:1646 */
6288 michael 913 break;
6289    
6290 michael 7061 case 601:
6291     #line 2887 "conf_parser.y" /* yacc.c:1646 */
6292 michael 1547 {
6293 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_UNAUTH;
6294 michael 913 }
6295 michael 7061 #line 6296 "conf_parser.c" /* yacc.c:1646 */
6296 michael 913 break;
6297    
6298 michael 7061 case 602:
6299     #line 2890 "conf_parser.y" /* yacc.c:1646 */
6300 michael 913 {
6301 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_SPY;
6302 michael 913 }
6303 michael 7061 #line 6304 "conf_parser.c" /* yacc.c:1646 */
6304 michael 913 break;
6305    
6306 michael 7061 case 603:
6307     #line 2893 "conf_parser.y" /* yacc.c:1646 */
6308 michael 1294 {
6309 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_EXTERNAL;
6310 michael 1294 }
6311 michael 7061 #line 6312 "conf_parser.c" /* yacc.c:1646 */
6312 michael 1294 break;
6313    
6314 michael 7061 case 604:
6315     #line 2896 "conf_parser.y" /* yacc.c:1646 */
6316 michael 913 {
6317 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_SERVNOTICE;
6318 michael 913 }
6319 michael 7061 #line 6320 "conf_parser.c" /* yacc.c:1646 */
6320 michael 913 break;
6321    
6322 michael 7061 case 605:
6323     #line 2899 "conf_parser.y" /* yacc.c:1646 */
6324 michael 913 {
6325 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_INVISIBLE;
6326 michael 913 }
6327 michael 7061 #line 6328 "conf_parser.c" /* yacc.c:1646 */
6328 michael 913 break;
6329    
6330 michael 7061 case 606:
6331     #line 2902 "conf_parser.y" /* yacc.c:1646 */
6332 michael 913 {
6333 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_WALLOP;
6334 michael 913 }
6335 michael 7061 #line 6336 "conf_parser.c" /* yacc.c:1646 */
6336 michael 913 break;
6337    
6338 michael 7061 case 607:
6339     #line 2905 "conf_parser.y" /* yacc.c:1646 */
6340 michael 913 {
6341 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_SOFTCALLERID;
6342 michael 913 }
6343 michael 7061 #line 6344 "conf_parser.c" /* yacc.c:1646 */
6344 michael 913 break;
6345    
6346 michael 7061 case 608:
6347     #line 2908 "conf_parser.y" /* yacc.c:1646 */
6348 michael 913 {
6349 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_CALLERID;
6350 michael 913 }
6351 michael 7061 #line 6352 "conf_parser.c" /* yacc.c:1646 */
6352 michael 913 break;
6353    
6354 michael 7061 case 609:
6355     #line 2911 "conf_parser.y" /* yacc.c:1646 */
6356 michael 913 {
6357 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_LOCOPS;
6358 michael 913 }
6359 michael 7061 #line 6360 "conf_parser.c" /* yacc.c:1646 */
6360 michael 913 break;
6361    
6362 michael 7061 case 610:
6363     #line 2914 "conf_parser.y" /* yacc.c:1646 */
6364 michael 913 {
6365 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_REGONLY;
6366 michael 913 }
6367 michael 7061 #line 6368 "conf_parser.c" /* yacc.c:1646 */
6368 michael 913 break;
6369    
6370 michael 7061 case 611:
6371     #line 2917 "conf_parser.y" /* yacc.c:1646 */
6372 michael 913 {
6373 michael 6490 ConfigGeneral.oper_only_umodes |= UMODE_FARCONNECT;
6374 michael 1855 }
6375 michael 7061 #line 6376 "conf_parser.c" /* yacc.c:1646 */
6376 michael 1855 break;
6377    
6378 michael 7061 case 612:
6379     #line 2922 "conf_parser.y" /* yacc.c:1646 */
6380 michael 1855 {
6381 michael 6490 ConfigGeneral.min_nonwildcard = (yyvsp[-1].number);
6382 michael 913 }
6383 michael 7061 #line 6384 "conf_parser.c" /* yacc.c:1646 */
6384 michael 913 break;
6385    
6386 michael 7061 case 613:
6387     #line 2927 "conf_parser.y" /* yacc.c:1646 */
6388 michael 913 {
6389 michael 6490 ConfigGeneral.min_nonwildcard_simple = (yyvsp[-1].number);
6390 michael 913 }
6391 michael 7061 #line 6392 "conf_parser.c" /* yacc.c:1646 */
6392 michael 913 break;
6393    
6394 michael 7061 case 614:
6395     #line 2932 "conf_parser.y" /* yacc.c:1646 */
6396 michael 1519 {
6397 michael 6490 ConfigGeneral.default_floodcount = (yyvsp[-1].number);
6398 michael 1519 }
6399 michael 7061 #line 6400 "conf_parser.c" /* yacc.c:1646 */
6400 michael 1519 break;
6401    
6402 michael 7061 case 630:
6403     #line 2957 "conf_parser.y" /* yacc.c:1646 */
6404 michael 1118 {
6405 michael 6490 ConfigChannel.disable_fake_channels = yylval.number;
6406 michael 913 }
6407 michael 7061 #line 6408 "conf_parser.c" /* yacc.c:1646 */
6408 michael 913 break;
6409    
6410 michael 7061 case 631:
6411     #line 2962 "conf_parser.y" /* yacc.c:1646 */
6412 michael 913 {
6413 michael 6490 ConfigChannel.invite_client_count = (yyvsp[-1].number);
6414 michael 3762 }
6415 michael 7061 #line 6416 "conf_parser.c" /* yacc.c:1646 */
6416 michael 3762 break;
6417    
6418 michael 7061 case 632:
6419     #line 2967 "conf_parser.y" /* yacc.c:1646 */
6420 michael 3762 {
6421 michael 6490 ConfigChannel.invite_client_time = (yyvsp[-1].number);
6422 michael 3762 }
6423 michael 7061 #line 6424 "conf_parser.c" /* yacc.c:1646 */
6424 michael 3762 break;
6425    
6426 michael 7061 case 633:
6427     #line 2972 "conf_parser.y" /* yacc.c:1646 */
6428 michael 913 {
6429 michael 6801 ConfigChannel.invite_delay_channel = (yyvsp[-1].number);
6430     }
6431 michael 7061 #line 6432 "conf_parser.c" /* yacc.c:1646 */
6432 michael 6801 break;
6433    
6434 michael 7061 case 634:
6435     #line 2977 "conf_parser.y" /* yacc.c:1646 */
6436 michael 6801 {
6437 michael 6490 ConfigChannel.knock_client_count = (yyvsp[-1].number);
6438 michael 913 }
6439 michael 7061 #line 6440 "conf_parser.c" /* yacc.c:1646 */
6440 michael 913 break;
6441    
6442 michael 7061 case 635:
6443     #line 2982 "conf_parser.y" /* yacc.c:1646 */
6444 michael 913 {
6445 michael 6490 ConfigChannel.knock_client_time = (yyvsp[-1].number);
6446 michael 913 }
6447 michael 7061 #line 6448 "conf_parser.c" /* yacc.c:1646 */
6448 michael 913 break;
6449    
6450 michael 7061 case 636:
6451     #line 2987 "conf_parser.y" /* yacc.c:1646 */
6452 michael 913 {
6453 michael 6490 ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6454 michael 913 }
6455 michael 7061 #line 6456 "conf_parser.c" /* yacc.c:1646 */
6456 michael 913 break;
6457    
6458 michael 7061 case 637:
6459     #line 2992 "conf_parser.y" /* yacc.c:1646 */
6460 michael 913 {
6461 michael 6490 ConfigChannel.max_channels = (yyvsp[-1].number);
6462 michael 913 }
6463 michael 7061 #line 6464 "conf_parser.c" /* yacc.c:1646 */
6464 michael 913 break;
6465    
6466 michael 7061 case 638:
6467     #line 2997 "conf_parser.y" /* yacc.c:1646 */
6468 michael 913 {
6469 michael 6490 ConfigChannel.max_bans = (yyvsp[-1].number);
6470 michael 5987 }
6471 michael 7061 #line 6472 "conf_parser.c" /* yacc.c:1646 */
6472 michael 5987 break;
6473    
6474 michael 7061 case 639:
6475     #line 3002 "conf_parser.y" /* yacc.c:1646 */
6476 michael 5987 {
6477 michael 6490 ConfigChannel.default_join_flood_count = yylval.number;
6478     }
6479 michael 7061 #line 6480 "conf_parser.c" /* yacc.c:1646 */
6480 michael 6490 break;
6481    
6482 michael 7061 case 640:
6483     #line 3007 "conf_parser.y" /* yacc.c:1646 */
6484 michael 6490 {
6485 michael 5490 ConfigChannel.default_join_flood_time = (yyvsp[-1].number);
6486 michael 3860 }
6487 michael 7061 #line 6488 "conf_parser.c" /* yacc.c:1646 */
6488 michael 3860 break;
6489    
6490 michael 7061 case 654:
6491     #line 3030 "conf_parser.y" /* yacc.c:1646 */
6492 michael 3860 {
6493 michael 2196 if (conf_parser_ctx.pass == 2)
6494     ConfigServerHide.flatten_links = yylval.number;
6495 michael 913 }
6496 michael 7061 #line 6497 "conf_parser.c" /* yacc.c:1646 */
6497 michael 913 break;
6498    
6499 michael 7061 case 655:
6500     #line 3036 "conf_parser.y" /* yacc.c:1646 */
6501 michael 913 {
6502 michael 967 if (conf_parser_ctx.pass == 2)
6503 michael 6637 {
6504     if ((yyvsp[-1].number) > 0)
6505     {
6506     event_write_links_file.when = (yyvsp[-1].number);
6507     event_add(&event_write_links_file, NULL);
6508     }
6509     else
6510     event_delete(&event_write_links_file);
6511    
6512     ConfigServerHide.flatten_links_delay = (yyvsp[-1].number);
6513     }
6514 michael 913 }
6515 michael 7061 #line 6516 "conf_parser.c" /* yacc.c:1646 */
6516 michael 913 break;
6517    
6518 michael 7061 case 656:
6519     #line 3052 "conf_parser.y" /* yacc.c:1646 */
6520 michael 913 {
6521 michael 967 if (conf_parser_ctx.pass == 2)
6522 michael 6637 {
6523 michael 7032 xfree(ConfigServerHide.flatten_links_file);
6524 michael 6637 ConfigServerHide.flatten_links_file = xstrdup(yylval.string);
6525     }
6526 michael 913 }
6527 michael 7061 #line 6528 "conf_parser.c" /* yacc.c:1646 */
6528 michael 913 break;
6529    
6530 michael 7061 case 657:
6531     #line 3061 "conf_parser.y" /* yacc.c:1646 */
6532 michael 913 {
6533 michael 967 if (conf_parser_ctx.pass == 2)
6534 michael 6637 ConfigServerHide.disable_remote_commands = yylval.number;
6535 michael 1851 }
6536 michael 7061 #line 6537 "conf_parser.c" /* yacc.c:1646 */
6537 michael 1851 break;
6538    
6539 michael 7061 case 658:
6540     #line 3067 "conf_parser.y" /* yacc.c:1646 */
6541 michael 1851 {
6542     if (conf_parser_ctx.pass == 2)
6543 michael 6637 ConfigServerHide.hide_servers = yylval.number;
6544 michael 913 }
6545 michael 7061 #line 6546 "conf_parser.c" /* yacc.c:1646 */
6546 michael 913 break;
6547    
6548 michael 7061 case 659:
6549     #line 3073 "conf_parser.y" /* yacc.c:1646 */
6550 michael 913 {
6551 michael 967 if (conf_parser_ctx.pass == 2)
6552 michael 6637 ConfigServerHide.hide_services = yylval.number;
6553 michael 913 }
6554 michael 7061 #line 6555 "conf_parser.c" /* yacc.c:1646 */
6555 michael 913 break;
6556    
6557 michael 7061 case 660:
6558     #line 3079 "conf_parser.y" /* yacc.c:1646 */
6559 michael 913 {
6560 michael 967 if (conf_parser_ctx.pass == 2)
6561 michael 6603 {
6562 michael 7032 xfree(ConfigServerHide.hidden_name);
6563 michael 6637 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6564 michael 6603 }
6565     }
6566 michael 7061 #line 6567 "conf_parser.c" /* yacc.c:1646 */
6567 michael 6603 break;
6568    
6569 michael 7061 case 661:
6570     #line 3088 "conf_parser.y" /* yacc.c:1646 */
6571 michael 6603 {
6572     if (conf_parser_ctx.pass == 2)
6573 michael 913 ConfigServerHide.hidden = yylval.number;
6574     }
6575 michael 7061 #line 6576 "conf_parser.c" /* yacc.c:1646 */
6576 michael 913 break;
6577    
6578 michael 7061 case 662:
6579     #line 3094 "conf_parser.y" /* yacc.c:1646 */
6580 michael 913 {
6581 michael 967 if (conf_parser_ctx.pass == 2)
6582 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
6583     }
6584 michael 7061 #line 6585 "conf_parser.c" /* yacc.c:1646 */
6585 michael 913 break;
6586    
6587    
6588 michael 7061 #line 6589 "conf_parser.c" /* yacc.c:1646 */
6589 michael 913 default: break;
6590     }
6591 michael 1133 /* User semantic actions sometimes alter yychar, and that requires
6592     that yytoken be updated with the new translation. We take the
6593     approach of translating immediately before every use of yytoken.
6594     One alternative is translating here after every semantic action,
6595     but that translation would be missed if the semantic action invokes
6596     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6597     if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6598     incorrect destructor might then be invoked immediately. In the
6599     case of YYERROR or YYBACKUP, subsequent parser actions might lead
6600     to an incorrect destructor call or verbose syntax error message
6601     before the lookahead is translated. */
6602 michael 913 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6603    
6604     YYPOPSTACK (yylen);
6605     yylen = 0;
6606     YY_STACK_PRINT (yyss, yyssp);
6607    
6608     *++yyvsp = yyval;
6609    
6610 michael 2473 /* Now 'shift' the result of the reduction. Determine what state
6611 michael 913 that goes to, based on the state we popped back to and the rule
6612     number reduced by. */
6613    
6614     yyn = yyr1[yyn];
6615    
6616     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6617     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6618     yystate = yytable[yystate];
6619     else
6620     yystate = yydefgoto[yyn - YYNTOKENS];
6621    
6622     goto yynewstate;
6623    
6624    
6625 michael 2473 /*--------------------------------------.
6626     | yyerrlab -- here on detecting error. |
6627     `--------------------------------------*/
6628 michael 913 yyerrlab:
6629 michael 1133 /* Make sure we have latest lookahead translation. See comments at
6630     user semantic actions for why this is necessary. */
6631     yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6632    
6633 michael 913 /* If not already recovering from an error, report this error. */
6634     if (!yyerrstatus)
6635     {
6636     ++yynerrs;
6637     #if ! YYERROR_VERBOSE
6638     yyerror (YY_("syntax error"));
6639     #else
6640 michael 1133 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6641     yyssp, yytoken)
6642 michael 913 {
6643 michael 1133 char const *yymsgp = YY_("syntax error");
6644     int yysyntax_error_status;
6645     yysyntax_error_status = YYSYNTAX_ERROR;
6646     if (yysyntax_error_status == 0)
6647     yymsgp = yymsg;
6648     else if (yysyntax_error_status == 1)
6649     {
6650     if (yymsg != yymsgbuf)
6651     YYSTACK_FREE (yymsg);
6652     yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6653     if (!yymsg)
6654     {
6655     yymsg = yymsgbuf;
6656     yymsg_alloc = sizeof yymsgbuf;
6657     yysyntax_error_status = 2;
6658     }
6659     else
6660     {
6661     yysyntax_error_status = YYSYNTAX_ERROR;
6662     yymsgp = yymsg;
6663     }
6664     }
6665     yyerror (yymsgp);
6666     if (yysyntax_error_status == 2)
6667     goto yyexhaustedlab;
6668 michael 913 }
6669 michael 1133 # undef YYSYNTAX_ERROR
6670 michael 913 #endif
6671     }
6672    
6673    
6674    
6675     if (yyerrstatus == 3)
6676     {
6677 michael 967 /* If just tried and failed to reuse lookahead token after an
6678 michael 2473 error, discard it. */
6679 michael 913
6680     if (yychar <= YYEOF)
6681 michael 2473 {
6682     /* Return failure if at end of input. */
6683     if (yychar == YYEOF)
6684     YYABORT;
6685     }
6686 michael 913 else
6687 michael 2473 {
6688     yydestruct ("Error: discarding",
6689     yytoken, &yylval);
6690     yychar = YYEMPTY;
6691     }
6692 michael 913 }
6693    
6694 michael 967 /* Else will try to reuse lookahead token after shifting the error
6695 michael 913 token. */
6696     goto yyerrlab1;
6697    
6698    
6699     /*---------------------------------------------------.
6700     | yyerrorlab -- error raised explicitly by YYERROR. |
6701     `---------------------------------------------------*/
6702     yyerrorlab:
6703    
6704     /* Pacify compilers like GCC when the user code never invokes
6705     YYERROR and the label yyerrorlab therefore never appears in user
6706     code. */
6707     if (/*CONSTCOND*/ 0)
6708     goto yyerrorlab;
6709    
6710 michael 2473 /* Do not reclaim the symbols of the rule whose action triggered
6711 michael 913 this YYERROR. */
6712     YYPOPSTACK (yylen);
6713     yylen = 0;
6714     YY_STACK_PRINT (yyss, yyssp);
6715     yystate = *yyssp;
6716     goto yyerrlab1;
6717    
6718    
6719     /*-------------------------------------------------------------.
6720     | yyerrlab1 -- common code for both syntax error and YYERROR. |
6721     `-------------------------------------------------------------*/
6722     yyerrlab1:
6723 michael 2473 yyerrstatus = 3; /* Each real token shifted decrements this. */
6724 michael 913
6725     for (;;)
6726     {
6727     yyn = yypact[yystate];
6728 michael 1133 if (!yypact_value_is_default (yyn))
6729 michael 2473 {
6730     yyn += YYTERROR;
6731     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6732     {
6733     yyn = yytable[yyn];
6734     if (0 < yyn)
6735     break;
6736     }
6737     }
6738 michael 913
6739     /* Pop the current state because it cannot handle the error token. */
6740     if (yyssp == yyss)
6741 michael 2473 YYABORT;
6742 michael 913
6743    
6744     yydestruct ("Error: popping",
6745 michael 2473 yystos[yystate], yyvsp);
6746 michael 913 YYPOPSTACK (1);
6747     yystate = *yyssp;
6748     YY_STACK_PRINT (yyss, yyssp);
6749     }
6750    
6751 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6752 michael 913 *++yyvsp = yylval;
6753 michael 1619 YY_IGNORE_MAYBE_UNINITIALIZED_END
6754 michael 913
6755    
6756     /* Shift the error token. */
6757     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6758    
6759     yystate = yyn;
6760     goto yynewstate;
6761    
6762    
6763     /*-------------------------------------.
6764     | yyacceptlab -- YYACCEPT comes here. |
6765     `-------------------------------------*/
6766     yyacceptlab:
6767     yyresult = 0;
6768     goto yyreturn;
6769    
6770     /*-----------------------------------.
6771     | yyabortlab -- YYABORT comes here. |
6772     `-----------------------------------*/
6773     yyabortlab:
6774     yyresult = 1;
6775     goto yyreturn;
6776    
6777 michael 1425 #if !defined yyoverflow || YYERROR_VERBOSE
6778 michael 913 /*-------------------------------------------------.
6779     | yyexhaustedlab -- memory exhaustion comes here. |
6780     `-------------------------------------------------*/
6781     yyexhaustedlab:
6782     yyerror (YY_("memory exhausted"));
6783     yyresult = 2;
6784     /* Fall through. */
6785     #endif
6786    
6787     yyreturn:
6788 michael 967 if (yychar != YYEMPTY)
6789 michael 1133 {
6790     /* Make sure we have latest lookahead translation. See comments at
6791     user semantic actions for why this is necessary. */
6792     yytoken = YYTRANSLATE (yychar);
6793     yydestruct ("Cleanup: discarding lookahead",
6794     yytoken, &yylval);
6795     }
6796 michael 2473 /* Do not reclaim the symbols of the rule whose action triggered
6797 michael 913 this YYABORT or YYACCEPT. */
6798     YYPOPSTACK (yylen);
6799     YY_STACK_PRINT (yyss, yyssp);
6800     while (yyssp != yyss)
6801     {
6802     yydestruct ("Cleanup: popping",
6803 michael 2473 yystos[*yyssp], yyvsp);
6804 michael 913 YYPOPSTACK (1);
6805     }
6806     #ifndef yyoverflow
6807     if (yyss != yyssa)
6808     YYSTACK_FREE (yyss);
6809     #endif
6810     #if YYERROR_VERBOSE
6811     if (yymsg != yymsgbuf)
6812     YYSTACK_FREE (yymsg);
6813     #endif
6814 michael 2473 return yyresult;
6815 michael 913 }

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision