ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 9776
Committed: Thu Dec 3 15:51:08 2020 UTC (4 years, 8 months ago) by michael
Content type: text/x-csrc
File size: 206529 byte(s)
Log Message:
- Re-create autogenerated parser files

File Contents

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

Properties

Name Value
svn:eol-style native