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

Properties

Name Value
svn:eol-style native