ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4256
Committed: Fri Jul 18 20:37:01 2014 UTC (11 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 221634 byte(s)
Log Message:
- conf_parser.y: fixed logging of invalid private key

File Contents

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

Properties

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