ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 7032
Committed: Sun Jan 3 14:34:39 2016 UTC (9 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 220255 byte(s)
Log Message:
- Renamed MyCalloc to xcalloc

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