ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/src/conf_parser.c
Revision: 6670
Committed: Mon Oct 26 19:56:21 2015 UTC (10 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 219984 byte(s)
Log Message:
- Rebuilt parser file

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

Properties

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