ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 7675
Committed: Wed Jul 20 19:31:22 2016 UTC (9 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 221514 byte(s)
Log Message:
- Fixed more svn properties as pointed out by jackal

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

Properties

Name Value
svn:eol-style native