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

File Contents

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

Properties

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