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

File Contents

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

Properties

Name Value
svn:eol-style native