ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 8459
Committed: Sat Mar 31 15:35:52 2018 UTC (8 years, 6 months ago) by michael
Content type: text/x-csrc
File size: 220785 byte(s)
Log Message:
- Recreate conf_parser

File Contents

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

Properties

Name Value
svn:eol-style native