ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5806
Committed: Tue Apr 21 21:51:26 2015 UTC (10 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 223170 byte(s)
Log Message:
- Recreate autogenerated files

File Contents

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

Properties

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