ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 7445
Committed: Thu Mar 10 20:49:32 2016 UTC (9 years, 5 months ago) by michael
Content type: text/x-csrc
File size: 223751 byte(s)
Log Message:
- Rebuilt autogenerated files

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

Properties

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