ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 7283
Committed: Sun Feb 7 18:25:22 2016 UTC (10 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 222736 byte(s)
Log Message:
- Re-create parser files

File Contents

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

Properties

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