ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 6450
Committed: Sat Aug 29 18:54:03 2015 UTC (10 years ago) by michael
Content type: text/x-csrc
File size: 221669 byte(s)
Log Message:
- Re-create parser files

File Contents

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

Properties

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