ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 8437
Committed: Thu Mar 29 09:05:34 2018 UTC (7 years, 5 months ago) by michael
Content type: text/x-csrc
File size: 220766 byte(s)
Log Message:
- Stylistic changes

File Contents

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

Properties

Name Value
svn:eol-style native