ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 9333
Committed: Sat Apr 11 17:01:43 2020 UTC (5 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 218036 byte(s)
Log Message:
- Removed 'spoof_notice' from auth::flags. Spoofs are not 'hard spoofs' anymore as they used to be back in the days.
  The real host can always be seen via /whois. Also with vhosts now this notice doesn't make much sense anyway

File Contents

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

Properties

Name Value
svn:eol-style native