ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4258
Committed: Fri Jul 18 20:46:48 2014 UTC (11 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 221765 byte(s)
Log Message:
- conf_parser.y: do some logging if the dh param file can't be opened/read

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, 602, 610, 624, 652, 667,
1028 682, 691, 705, 714, 742, 772, 797, 819, 841, 850,
1029 852, 852, 853, 854, 855, 856, 858, 867, 876, 889,
1030 888, 906, 906, 907, 907, 907, 909, 915, 924, 925,
1031 925, 927, 927, 928, 930, 937, 937, 950, 951, 953,
1032 953, 954, 954, 956, 964, 967, 973, 972, 978, 978,
1033 979, 983, 987, 991, 995, 999, 1003, 1007, 1011, 1022,
1034 1021, 1107, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
1035 1115, 1116, 1117, 1118, 1120, 1126, 1132, 1138, 1149, 1155,
1036 1161, 1172, 1179, 1178, 1184, 1184, 1185, 1189, 1193, 1197,
1037 1201, 1205, 1209, 1213, 1217, 1221, 1225, 1229, 1233, 1237,
1038 1241, 1245, 1249, 1253, 1257, 1261, 1265, 1269, 1276, 1275,
1039 1281, 1281, 1282, 1286, 1290, 1294, 1298, 1302, 1306, 1310,
1040 1314, 1318, 1322, 1326, 1330, 1334, 1338, 1342, 1346, 1350,
1041 1354, 1358, 1362, 1366, 1370, 1381, 1380, 1442, 1442, 1443,
1042 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453,
1043 1454, 1455, 1455, 1456, 1457, 1458, 1459, 1461, 1467, 1473,
1044 1479, 1485, 1491, 1497, 1503, 1509, 1515, 1521, 1528, 1534,
1045 1540, 1546, 1555, 1565, 1564, 1570, 1570, 1571, 1575, 1586,
1046 1585, 1592, 1591, 1596, 1596, 1597, 1601, 1605, 1611, 1611,
1047 1612, 1612, 1612, 1612, 1612, 1614, 1614, 1616, 1616, 1618,
1048 1632, 1650, 1656, 1666, 1665, 1707, 1707, 1708, 1709, 1710,
1049 1711, 1712, 1713, 1714, 1715, 1716, 1718, 1724, 1730, 1736,
1050 1748, 1747, 1753, 1753, 1754, 1758, 1762, 1766, 1770, 1774,
1051 1778, 1782, 1786, 1790, 1796, 1810, 1819, 1833, 1832, 1847,
1052 1847, 1848, 1848, 1848, 1848, 1850, 1856, 1862, 1872, 1874,
1053 1874, 1875, 1875, 1877, 1893, 1892, 1917, 1917, 1918, 1918,
1054 1918, 1918, 1920, 1926, 1946, 1945, 1951, 1951, 1952, 1956,
1055 1960, 1964, 1968, 1972, 1976, 1980, 1984, 1988, 1998, 1997,
1056 2018, 2018, 2019, 2019, 2019, 2021, 2028, 2027, 2033, 2033,
1057 2034, 2038, 2042, 2046, 2050, 2054, 2058, 2062, 2066, 2070,
1058 2080, 2079, 2151, 2151, 2152, 2153, 2154, 2155, 2156, 2157,
1059 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2168,
1060 2174, 2180, 2186, 2199, 2212, 2218, 2224, 2228, 2237, 2236,
1061 2241, 2241, 2242, 2246, 2252, 2263, 2269, 2275, 2281, 2297,
1062 2296, 2322, 2322, 2323, 2323, 2323, 2325, 2345, 2355, 2354,
1063 2381, 2381, 2382, 2382, 2382, 2384, 2390, 2399, 2401, 2401,
1064 2402, 2402, 2404, 2422, 2421, 2444, 2444, 2445, 2445, 2445,
1065 2447, 2453, 2462, 2465, 2465, 2466, 2467, 2468, 2469, 2470,
1066 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480,
1067 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490,
1068 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500,
1069 2501, 2502, 2503, 2504, 2505, 2506, 2507, 2508, 2509, 2510,
1070 2511, 2512, 2513, 2514, 2517, 2522, 2528, 2534, 2540, 2546,
1071 2551, 2556, 2561, 2566, 2571, 2576, 2581, 2586, 2591, 2596,
1072 2601, 2606, 2611, 2617, 2628, 2633, 2638, 2643, 2648, 2653,
1073 2658, 2661, 2666, 2669, 2674, 2679, 2684, 2689, 2694, 2699,
1074 2704, 2709, 2714, 2719, 2724, 2733, 2738, 2743, 2748, 2754,
1075 2753, 2758, 2758, 2759, 2762, 2765, 2768, 2771, 2774, 2777,
1076 2780, 2783, 2786, 2789, 2792, 2795, 2798, 2801, 2804, 2807,
1077 2810, 2813, 2816, 2819, 2822, 2828, 2827, 2832, 2832, 2833,
1078 2836, 2839, 2842, 2845, 2848, 2851, 2854, 2857, 2860, 2863,
1079 2866, 2869, 2872, 2875, 2878, 2881, 2884, 2887, 2890, 2895,
1080 2900, 2905, 2914, 2917, 2917, 2918, 2919, 2920, 2921, 2922,
1081 2923, 2924, 2925, 2926, 2927, 2928, 2929, 2930, 2931, 2932,
1082 2934, 2939, 2944, 2949, 2954, 2959, 2964, 2969, 2974, 2979,
1083 2984, 2989, 2994, 2999, 3007, 3010, 3010, 3011, 3012, 3013,
1084 3014, 3015, 3016, 3017, 3018, 3019, 3021, 3027, 3033, 3039,
1085 3045, 3054, 3069, 3075
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 #ifdef HAVE_LIBCRYPTO
3067 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3068 {
3069 BIO *file = BIO_new_file(yylval.string, "r");
3070
3071 if (file)
3072 {
3073 DH *dh = PEM_read_bio_DHparams(file, NULL, NULL, NULL);
3074
3075 BIO_free(file);
3076
3077 if (dh)
3078 {
3079 if (DH_size(dh) < 128)
3080 conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3081 else
3082 SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3083
3084 DH_free(dh);
3085 }
3086 }
3087 else
3088 conf_error_report("Ignoring serverinfo::ssl_dh_param_file -- could not open/read Diffie-Hellman parameter file");
3089 }
3090 #endif
3091 }
3092 #line 3093 "conf_parser.c" /* yacc.c:1646 */
3093 break;
3094
3095 case 75:
3096 #line 603 "conf_parser.y" /* yacc.c:1646 */
3097 {
3098 #ifdef HAVE_LIBCRYPTO
3099 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3100 SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
3101 #endif
3102 }
3103 #line 3104 "conf_parser.c" /* yacc.c:1646 */
3104 break;
3105
3106 case 76:
3107 #line 611 "conf_parser.y" /* yacc.c:1646 */
3108 {
3109 #ifdef HAVE_LIBCRYPTO
3110 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3111 {
3112 if ((ServerInfo.message_digest_algorithm = EVP_get_digestbyname(yylval.string)) == NULL)
3113 {
3114 ServerInfo.message_digest_algorithm = EVP_sha256();
3115 conf_error_report("Ignoring serverinfo::ssl_message_digest_algorithm -- unknown message digest algorithm");
3116 }
3117 }
3118 #endif
3119 }
3120 #line 3121 "conf_parser.c" /* yacc.c:1646 */
3121 break;
3122
3123 case 77:
3124 #line 625 "conf_parser.y" /* yacc.c:1646 */
3125 {
3126 #ifdef HAVE_LIBCRYPTO
3127 #if OPENSSL_VERSION_NUMBER >= 0x1000005FL && !defined(OPENSSL_NO_ECDH)
3128 int nid = 0;
3129 EC_KEY *key = NULL;
3130
3131 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3132 {
3133 if ((nid = OBJ_sn2nid(yylval.string)) == 0)
3134 {
3135 conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- unknown curve name");
3136 break;
3137 }
3138
3139 if ((key = EC_KEY_new_by_curve_name(nid)) == NULL)
3140 {
3141 conf_error_report("Ignoring serverinfo::serverinfo_ssl_dh_elliptic_curve -- could not create curve");
3142 break;
3143 }
3144
3145 SSL_CTX_set_tmp_ecdh(ServerInfo.server_ctx, key);
3146 EC_KEY_free(key);
3147 }
3148 #endif
3149 #endif
3150 }
3151 #line 3152 "conf_parser.c" /* yacc.c:1646 */
3152 break;
3153
3154 case 78:
3155 #line 653 "conf_parser.y" /* yacc.c:1646 */
3156 {
3157 /* this isn't rehashable */
3158 if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3159 {
3160 if (valid_servname(yylval.string))
3161 ServerInfo.name = xstrdup(yylval.string);
3162 else
3163 {
3164 conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3165 exit(0);
3166 }
3167 }
3168 }
3169 #line 3170 "conf_parser.c" /* yacc.c:1646 */
3170 break;
3171
3172 case 79:
3173 #line 668 "conf_parser.y" /* yacc.c:1646 */
3174 {
3175 /* this isn't rehashable */
3176 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3177 {
3178 if (valid_sid(yylval.string))
3179 ServerInfo.sid = xstrdup(yylval.string);
3180 else
3181 {
3182 conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3183 exit(0);
3184 }
3185 }
3186 }
3187 #line 3188 "conf_parser.c" /* yacc.c:1646 */
3188 break;
3189
3190 case 80:
3191 #line 683 "conf_parser.y" /* yacc.c:1646 */
3192 {
3193 if (conf_parser_ctx.pass == 2)
3194 {
3195 MyFree(ServerInfo.description);
3196 ServerInfo.description = xstrdup(yylval.string);
3197 }
3198 }
3199 #line 3200 "conf_parser.c" /* yacc.c:1646 */
3200 break;
3201
3202 case 81:
3203 #line 692 "conf_parser.y" /* yacc.c:1646 */
3204 {
3205 if (conf_parser_ctx.pass == 2)
3206 {
3207 char *p;
3208
3209 if ((p = strchr(yylval.string, ' ')))
3210 *p = '\0';
3211
3212 MyFree(ServerInfo.network_name);
3213 ServerInfo.network_name = xstrdup(yylval.string);
3214 }
3215 }
3216 #line 3217 "conf_parser.c" /* yacc.c:1646 */
3217 break;
3218
3219 case 82:
3220 #line 706 "conf_parser.y" /* yacc.c:1646 */
3221 {
3222 if (conf_parser_ctx.pass != 2)
3223 break;
3224
3225 MyFree(ServerInfo.network_desc);
3226 ServerInfo.network_desc = xstrdup(yylval.string);
3227 }
3228 #line 3229 "conf_parser.c" /* yacc.c:1646 */
3229 break;
3230
3231 case 83:
3232 #line 715 "conf_parser.y" /* yacc.c:1646 */
3233 {
3234 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3235 {
3236 struct addrinfo hints, *res;
3237
3238 memset(&hints, 0, sizeof(hints));
3239
3240 hints.ai_family = AF_UNSPEC;
3241 hints.ai_socktype = SOCK_STREAM;
3242 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3243
3244 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3245 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3246 else
3247 {
3248 assert(res);
3249
3250 memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3251 ServerInfo.ip.ss.ss_family = res->ai_family;
3252 ServerInfo.ip.ss_len = res->ai_addrlen;
3253 freeaddrinfo(res);
3254
3255 ServerInfo.specific_ipv4_vhost = 1;
3256 }
3257 }
3258 }
3259 #line 3260 "conf_parser.c" /* yacc.c:1646 */
3260 break;
3261
3262 case 84:
3263 #line 743 "conf_parser.y" /* yacc.c:1646 */
3264 {
3265 #ifdef IPV6
3266 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3267 {
3268 struct addrinfo hints, *res;
3269
3270 memset(&hints, 0, sizeof(hints));
3271
3272 hints.ai_family = AF_UNSPEC;
3273 hints.ai_socktype = SOCK_STREAM;
3274 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3275
3276 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3277 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3278 else
3279 {
3280 assert(res);
3281
3282 memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3283 ServerInfo.ip6.ss.ss_family = res->ai_family;
3284 ServerInfo.ip6.ss_len = res->ai_addrlen;
3285 freeaddrinfo(res);
3286
3287 ServerInfo.specific_ipv6_vhost = 1;
3288 }
3289 }
3290 #endif
3291 }
3292 #line 3293 "conf_parser.c" /* yacc.c:1646 */
3293 break;
3294
3295 case 85:
3296 #line 773 "conf_parser.y" /* yacc.c:1646 */
3297 {
3298 if (conf_parser_ctx.pass != 2)
3299 break;
3300
3301 if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3302 {
3303 char buf[IRCD_BUFSIZE] = "";
3304
3305 snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3306 conf_error_report(buf);
3307 ServerInfo.max_clients = MAXCLIENTS_MIN;
3308 }
3309 else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3310 {
3311 char buf[IRCD_BUFSIZE] = "";
3312
3313 snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3314 conf_error_report(buf);
3315 ServerInfo.max_clients = MAXCLIENTS_MAX;
3316 }
3317 else
3318 ServerInfo.max_clients = (yyvsp[-1].number);
3319 }
3320 #line 3321 "conf_parser.c" /* yacc.c:1646 */
3321 break;
3322
3323 case 86:
3324 #line 798 "conf_parser.y" /* yacc.c:1646 */
3325 {
3326 if (conf_parser_ctx.pass != 2)
3327 break;
3328
3329 if ((yyvsp[-1].number) < 9)
3330 {
3331 conf_error_report("max_nick_length too low, setting to 9");
3332 ServerInfo.max_nick_length = 9;
3333 }
3334 else if ((yyvsp[-1].number) > NICKLEN)
3335 {
3336 char buf[IRCD_BUFSIZE] = "";
3337
3338 snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3339 conf_error_report(buf);
3340 ServerInfo.max_nick_length = NICKLEN;
3341 }
3342 else
3343 ServerInfo.max_nick_length = (yyvsp[-1].number);
3344 }
3345 #line 3346 "conf_parser.c" /* yacc.c:1646 */
3346 break;
3347
3348 case 87:
3349 #line 820 "conf_parser.y" /* yacc.c:1646 */
3350 {
3351 if (conf_parser_ctx.pass != 2)
3352 break;
3353
3354 if ((yyvsp[-1].number) < 80)
3355 {
3356 conf_error_report("max_topic_length too low, setting to 80");
3357 ServerInfo.max_topic_length = 80;
3358 }
3359 else if ((yyvsp[-1].number) > TOPICLEN)
3360 {
3361 char buf[IRCD_BUFSIZE] = "";
3362
3363 snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3364 conf_error_report(buf);
3365 ServerInfo.max_topic_length = TOPICLEN;
3366 }
3367 else
3368 ServerInfo.max_topic_length = (yyvsp[-1].number);
3369 }
3370 #line 3371 "conf_parser.c" /* yacc.c:1646 */
3371 break;
3372
3373 case 88:
3374 #line 842 "conf_parser.y" /* yacc.c:1646 */
3375 {
3376 if (conf_parser_ctx.pass == 2)
3377 ServerInfo.hub = yylval.number;
3378 }
3379 #line 3380 "conf_parser.c" /* yacc.c:1646 */
3380 break;
3381
3382 case 96:
3383 #line 859 "conf_parser.y" /* yacc.c:1646 */
3384 {
3385 if (conf_parser_ctx.pass != 2)
3386 break;
3387
3388 MyFree(AdminInfo.name);
3389 AdminInfo.name = xstrdup(yylval.string);
3390 }
3391 #line 3392 "conf_parser.c" /* yacc.c:1646 */
3392 break;
3393
3394 case 97:
3395 #line 868 "conf_parser.y" /* yacc.c:1646 */
3396 {
3397 if (conf_parser_ctx.pass != 2)
3398 break;
3399
3400 MyFree(AdminInfo.email);
3401 AdminInfo.email = xstrdup(yylval.string);
3402 }
3403 #line 3404 "conf_parser.c" /* yacc.c:1646 */
3404 break;
3405
3406 case 98:
3407 #line 877 "conf_parser.y" /* yacc.c:1646 */
3408 {
3409 if (conf_parser_ctx.pass != 2)
3410 break;
3411
3412 MyFree(AdminInfo.description);
3413 AdminInfo.description = xstrdup(yylval.string);
3414 }
3415 #line 3416 "conf_parser.c" /* yacc.c:1646 */
3416 break;
3417
3418 case 99:
3419 #line 889 "conf_parser.y" /* yacc.c:1646 */
3420 {
3421 if (conf_parser_ctx.pass == 2)
3422 reset_block_state();
3423 }
3424 #line 3425 "conf_parser.c" /* yacc.c:1646 */
3425 break;
3426
3427 case 100:
3428 #line 893 "conf_parser.y" /* yacc.c:1646 */
3429 {
3430 dlink_node *ptr = NULL;
3431
3432 if (conf_parser_ctx.pass != 2)
3433 break;
3434
3435 if (!block_state.file.buf[0])
3436 break;
3437
3438 DLINK_FOREACH(ptr, block_state.mask.list.head)
3439 motd_add(ptr->data, block_state.file.buf);
3440 }
3441 #line 3442 "conf_parser.c" /* yacc.c:1646 */
3442 break;
3443
3444 case 106:
3445 #line 910 "conf_parser.y" /* yacc.c:1646 */
3446 {
3447 if (conf_parser_ctx.pass == 2)
3448 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3449 }
3450 #line 3451 "conf_parser.c" /* yacc.c:1646 */
3451 break;
3452
3453 case 107:
3454 #line 916 "conf_parser.y" /* yacc.c:1646 */
3455 {
3456 if (conf_parser_ctx.pass == 2)
3457 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3458 }
3459 #line 3460 "conf_parser.c" /* yacc.c:1646 */
3460 break;
3461
3462 case 114:
3463 #line 931 "conf_parser.y" /* yacc.c:1646 */
3464 {
3465 if (conf_parser_ctx.pass == 2)
3466 ConfigLoggingEntry.use_logging = yylval.number;
3467 }
3468 #line 3469 "conf_parser.c" /* yacc.c:1646 */
3469 break;
3470
3471 case 115:
3472 #line 937 "conf_parser.y" /* yacc.c:1646 */
3473 {
3474 if (conf_parser_ctx.pass == 2)
3475 reset_block_state();
3476 }
3477 #line 3478 "conf_parser.c" /* yacc.c:1646 */
3478 break;
3479
3480 case 116:
3481 #line 941 "conf_parser.y" /* yacc.c:1646 */
3482 {
3483 if (conf_parser_ctx.pass != 2)
3484 break;
3485
3486 if (block_state.type.value && block_state.file.buf[0])
3487 log_set_file(block_state.type.value, block_state.size.value,
3488 block_state.file.buf);
3489 }
3490 #line 3491 "conf_parser.c" /* yacc.c:1646 */
3491 break;
3492
3493 case 123:
3494 #line 957 "conf_parser.y" /* yacc.c:1646 */
3495 {
3496 if (conf_parser_ctx.pass != 2)
3497 break;
3498
3499 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3500 }
3501 #line 3502 "conf_parser.c" /* yacc.c:1646 */
3502 break;
3503
3504 case 124:
3505 #line 965 "conf_parser.y" /* yacc.c:1646 */
3506 {
3507 block_state.size.value = (yyvsp[-1].number);
3508 }
3509 #line 3510 "conf_parser.c" /* yacc.c:1646 */
3510 break;
3511
3512 case 125:
3513 #line 968 "conf_parser.y" /* yacc.c:1646 */
3514 {
3515 block_state.size.value = 0;
3516 }
3517 #line 3518 "conf_parser.c" /* yacc.c:1646 */
3518 break;
3519
3520 case 126:
3521 #line 973 "conf_parser.y" /* yacc.c:1646 */
3522 {
3523 if (conf_parser_ctx.pass == 2)
3524 block_state.type.value = 0;
3525 }
3526 #line 3527 "conf_parser.c" /* yacc.c:1646 */
3527 break;
3528
3529 case 130:
3530 #line 980 "conf_parser.y" /* yacc.c:1646 */
3531 {
3532 if (conf_parser_ctx.pass == 2)
3533 block_state.type.value = LOG_TYPE_USER;
3534 }
3535 #line 3536 "conf_parser.c" /* yacc.c:1646 */
3536 break;
3537
3538 case 131:
3539 #line 984 "conf_parser.y" /* yacc.c:1646 */
3540 {
3541 if (conf_parser_ctx.pass == 2)
3542 block_state.type.value = LOG_TYPE_OPER;
3543 }
3544 #line 3545 "conf_parser.c" /* yacc.c:1646 */
3545 break;
3546
3547 case 132:
3548 #line 988 "conf_parser.y" /* yacc.c:1646 */
3549 {
3550 if (conf_parser_ctx.pass == 2)
3551 block_state.type.value = LOG_TYPE_GLINE;
3552 }
3553 #line 3554 "conf_parser.c" /* yacc.c:1646 */
3554 break;
3555
3556 case 133:
3557 #line 992 "conf_parser.y" /* yacc.c:1646 */
3558 {
3559 if (conf_parser_ctx.pass == 2)
3560 block_state.type.value = LOG_TYPE_XLINE;
3561 }
3562 #line 3563 "conf_parser.c" /* yacc.c:1646 */
3563 break;
3564
3565 case 134:
3566 #line 996 "conf_parser.y" /* yacc.c:1646 */
3567 {
3568 if (conf_parser_ctx.pass == 2)
3569 block_state.type.value = LOG_TYPE_RESV;
3570 }
3571 #line 3572 "conf_parser.c" /* yacc.c:1646 */
3572 break;
3573
3574 case 135:
3575 #line 1000 "conf_parser.y" /* yacc.c:1646 */
3576 {
3577 if (conf_parser_ctx.pass == 2)
3578 block_state.type.value = LOG_TYPE_DLINE;
3579 }
3580 #line 3581 "conf_parser.c" /* yacc.c:1646 */
3581 break;
3582
3583 case 136:
3584 #line 1004 "conf_parser.y" /* yacc.c:1646 */
3585 {
3586 if (conf_parser_ctx.pass == 2)
3587 block_state.type.value = LOG_TYPE_KLINE;
3588 }
3589 #line 3590 "conf_parser.c" /* yacc.c:1646 */
3590 break;
3591
3592 case 137:
3593 #line 1008 "conf_parser.y" /* yacc.c:1646 */
3594 {
3595 if (conf_parser_ctx.pass == 2)
3596 block_state.type.value = LOG_TYPE_KILL;
3597 }
3598 #line 3599 "conf_parser.c" /* yacc.c:1646 */
3599 break;
3600
3601 case 138:
3602 #line 1012 "conf_parser.y" /* yacc.c:1646 */
3603 {
3604 if (conf_parser_ctx.pass == 2)
3605 block_state.type.value = LOG_TYPE_DEBUG;
3606 }
3607 #line 3608 "conf_parser.c" /* yacc.c:1646 */
3608 break;
3609
3610 case 139:
3611 #line 1022 "conf_parser.y" /* yacc.c:1646 */
3612 {
3613 if (conf_parser_ctx.pass != 2)
3614 break;
3615
3616 reset_block_state();
3617 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3618 }
3619 #line 3620 "conf_parser.c" /* yacc.c:1646 */
3620 break;
3621
3622 case 140:
3623 #line 1029 "conf_parser.y" /* yacc.c:1646 */
3624 {
3625 dlink_node *ptr = NULL;
3626
3627 if (conf_parser_ctx.pass != 2)
3628 break;
3629
3630 if (!block_state.name.buf[0])
3631 break;
3632 #ifdef HAVE_LIBCRYPTO
3633 if (!block_state.file.buf[0] &&
3634 !block_state.rpass.buf[0])
3635 break;
3636 #else
3637 if (!block_state.rpass.buf[0])
3638 break;
3639 #endif
3640
3641 DLINK_FOREACH(ptr, block_state.mask.list.head)
3642 {
3643 struct MaskItem *conf = NULL;
3644 struct split_nuh_item nuh;
3645
3646 nuh.nuhmask = ptr->data;
3647 nuh.nickptr = NULL;
3648 nuh.userptr = block_state.user.buf;
3649 nuh.hostptr = block_state.host.buf;
3650 nuh.nicksize = 0;
3651 nuh.usersize = sizeof(block_state.user.buf);
3652 nuh.hostsize = sizeof(block_state.host.buf);
3653 split_nuh(&nuh);
3654
3655 conf = conf_make(CONF_OPER);
3656 conf->name = xstrdup(block_state.name.buf);
3657 conf->user = xstrdup(block_state.user.buf);
3658 conf->host = xstrdup(block_state.host.buf);
3659
3660 if (block_state.cert.buf[0])
3661 conf->certfp = xstrdup(block_state.cert.buf);
3662
3663 if (block_state.rpass.buf[0])
3664 conf->passwd = xstrdup(block_state.rpass.buf);
3665
3666 conf->flags = block_state.flags.value;
3667 conf->modes = block_state.modes.value;
3668 conf->port = block_state.port.value;
3669 conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3670
3671 conf_add_class_to_conf(conf, block_state.class.buf);
3672
3673 #ifdef HAVE_LIBCRYPTO
3674 if (block_state.file.buf[0])
3675 {
3676 BIO *file = NULL;
3677 RSA *pkey = NULL;
3678
3679 if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
3680 {
3681 ilog(LOG_TYPE_IRCD, "Ignoring rsa_public_key_file -- file doesn't exist");
3682 break;
3683 }
3684
3685 if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
3686 ilog(LOG_TYPE_IRCD, "Ignoring rsa_public_key_file -- key invalid; check key syntax");
3687 else
3688 {
3689 if (RSA_size(pkey) > 128)
3690 ilog(LOG_TYPE_IRCD, "Ignoring rsa_public_key_file -- key size must be 1024 or below");
3691 else
3692 conf->rsa_public_key = pkey;
3693 }
3694
3695 BIO_set_close(file, BIO_CLOSE);
3696 BIO_free(file);
3697 }
3698 #endif /* HAVE_LIBCRYPTO */
3699 }
3700 }
3701 #line 3702 "conf_parser.c" /* yacc.c:1646 */
3702 break;
3703
3704 case 154:
3705 #line 1121 "conf_parser.y" /* yacc.c:1646 */
3706 {
3707 if (conf_parser_ctx.pass == 2)
3708 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3709 }
3710 #line 3711 "conf_parser.c" /* yacc.c:1646 */
3711 break;
3712
3713 case 155:
3714 #line 1127 "conf_parser.y" /* yacc.c:1646 */
3715 {
3716 if (conf_parser_ctx.pass == 2)
3717 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3718 }
3719 #line 3720 "conf_parser.c" /* yacc.c:1646 */
3720 break;
3721
3722 case 156:
3723 #line 1133 "conf_parser.y" /* yacc.c:1646 */
3724 {
3725 if (conf_parser_ctx.pass == 2)
3726 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3727 }
3728 #line 3729 "conf_parser.c" /* yacc.c:1646 */
3729 break;
3730
3731 case 157:
3732 #line 1139 "conf_parser.y" /* yacc.c:1646 */
3733 {
3734 if (conf_parser_ctx.pass != 2)
3735 break;
3736
3737 if (yylval.number)
3738 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3739 else
3740 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3741 }
3742 #line 3743 "conf_parser.c" /* yacc.c:1646 */
3743 break;
3744
3745 case 158:
3746 #line 1150 "conf_parser.y" /* yacc.c:1646 */
3747 {
3748 if (conf_parser_ctx.pass == 2)
3749 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3750 }
3751 #line 3752 "conf_parser.c" /* yacc.c:1646 */
3752 break;
3753
3754 case 159:
3755 #line 1156 "conf_parser.y" /* yacc.c:1646 */
3756 {
3757 if (conf_parser_ctx.pass == 2)
3758 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3759 }
3760 #line 3761 "conf_parser.c" /* yacc.c:1646 */
3761 break;
3762
3763 case 160:
3764 #line 1162 "conf_parser.y" /* yacc.c:1646 */
3765 {
3766 if (conf_parser_ctx.pass != 2)
3767 break;
3768
3769 if (yylval.number)
3770 block_state.flags.value |= CONF_FLAGS_SSL;
3771 else
3772 block_state.flags.value &= ~CONF_FLAGS_SSL;
3773 }
3774 #line 3775 "conf_parser.c" /* yacc.c:1646 */
3775 break;
3776
3777 case 161:
3778 #line 1173 "conf_parser.y" /* yacc.c:1646 */
3779 {
3780 if (conf_parser_ctx.pass == 2)
3781 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3782 }
3783 #line 3784 "conf_parser.c" /* yacc.c:1646 */
3784 break;
3785
3786 case 162:
3787 #line 1179 "conf_parser.y" /* yacc.c:1646 */
3788 {
3789 if (conf_parser_ctx.pass == 2)
3790 block_state.modes.value = 0;
3791 }
3792 #line 3793 "conf_parser.c" /* yacc.c:1646 */
3793 break;
3794
3795 case 166:
3796 #line 1186 "conf_parser.y" /* yacc.c:1646 */
3797 {
3798 if (conf_parser_ctx.pass == 2)
3799 block_state.modes.value |= UMODE_BOTS;
3800 }
3801 #line 3802 "conf_parser.c" /* yacc.c:1646 */
3802 break;
3803
3804 case 167:
3805 #line 1190 "conf_parser.y" /* yacc.c:1646 */
3806 {
3807 if (conf_parser_ctx.pass == 2)
3808 block_state.modes.value |= UMODE_CCONN;
3809 }
3810 #line 3811 "conf_parser.c" /* yacc.c:1646 */
3811 break;
3812
3813 case 168:
3814 #line 1194 "conf_parser.y" /* yacc.c:1646 */
3815 {
3816 if (conf_parser_ctx.pass == 2)
3817 block_state.modes.value |= UMODE_DEAF;
3818 }
3819 #line 3820 "conf_parser.c" /* yacc.c:1646 */
3820 break;
3821
3822 case 169:
3823 #line 1198 "conf_parser.y" /* yacc.c:1646 */
3824 {
3825 if (conf_parser_ctx.pass == 2)
3826 block_state.modes.value |= UMODE_DEBUG;
3827 }
3828 #line 3829 "conf_parser.c" /* yacc.c:1646 */
3829 break;
3830
3831 case 170:
3832 #line 1202 "conf_parser.y" /* yacc.c:1646 */
3833 {
3834 if (conf_parser_ctx.pass == 2)
3835 block_state.modes.value |= UMODE_FULL;
3836 }
3837 #line 3838 "conf_parser.c" /* yacc.c:1646 */
3838 break;
3839
3840 case 171:
3841 #line 1206 "conf_parser.y" /* yacc.c:1646 */
3842 {
3843 if (conf_parser_ctx.pass == 2)
3844 block_state.modes.value |= UMODE_HIDDEN;
3845 }
3846 #line 3847 "conf_parser.c" /* yacc.c:1646 */
3847 break;
3848
3849 case 172:
3850 #line 1210 "conf_parser.y" /* yacc.c:1646 */
3851 {
3852 if (conf_parser_ctx.pass == 2)
3853 block_state.modes.value |= UMODE_HIDECHANS;
3854 }
3855 #line 3856 "conf_parser.c" /* yacc.c:1646 */
3856 break;
3857
3858 case 173:
3859 #line 1214 "conf_parser.y" /* yacc.c:1646 */
3860 {
3861 if (conf_parser_ctx.pass == 2)
3862 block_state.modes.value |= UMODE_HIDEIDLE;
3863 }
3864 #line 3865 "conf_parser.c" /* yacc.c:1646 */
3865 break;
3866
3867 case 174:
3868 #line 1218 "conf_parser.y" /* yacc.c:1646 */
3869 {
3870 if (conf_parser_ctx.pass == 2)
3871 block_state.modes.value |= UMODE_SKILL;
3872 }
3873 #line 3874 "conf_parser.c" /* yacc.c:1646 */
3874 break;
3875
3876 case 175:
3877 #line 1222 "conf_parser.y" /* yacc.c:1646 */
3878 {
3879 if (conf_parser_ctx.pass == 2)
3880 block_state.modes.value |= UMODE_NCHANGE;
3881 }
3882 #line 3883 "conf_parser.c" /* yacc.c:1646 */
3883 break;
3884
3885 case 176:
3886 #line 1226 "conf_parser.y" /* yacc.c:1646 */
3887 {
3888 if (conf_parser_ctx.pass == 2)
3889 block_state.modes.value |= UMODE_REJ;
3890 }
3891 #line 3892 "conf_parser.c" /* yacc.c:1646 */
3892 break;
3893
3894 case 177:
3895 #line 1230 "conf_parser.y" /* yacc.c:1646 */
3896 {
3897 if (conf_parser_ctx.pass == 2)
3898 block_state.modes.value |= UMODE_UNAUTH;
3899 }
3900 #line 3901 "conf_parser.c" /* yacc.c:1646 */
3901 break;
3902
3903 case 178:
3904 #line 1234 "conf_parser.y" /* yacc.c:1646 */
3905 {
3906 if (conf_parser_ctx.pass == 2)
3907 block_state.modes.value |= UMODE_SPY;
3908 }
3909 #line 3910 "conf_parser.c" /* yacc.c:1646 */
3910 break;
3911
3912 case 179:
3913 #line 1238 "conf_parser.y" /* yacc.c:1646 */
3914 {
3915 if (conf_parser_ctx.pass == 2)
3916 block_state.modes.value |= UMODE_EXTERNAL;
3917 }
3918 #line 3919 "conf_parser.c" /* yacc.c:1646 */
3919 break;
3920
3921 case 180:
3922 #line 1242 "conf_parser.y" /* yacc.c:1646 */
3923 {
3924 if (conf_parser_ctx.pass == 2)
3925 block_state.modes.value |= UMODE_SERVNOTICE;
3926 }
3927 #line 3928 "conf_parser.c" /* yacc.c:1646 */
3928 break;
3929
3930 case 181:
3931 #line 1246 "conf_parser.y" /* yacc.c:1646 */
3932 {
3933 if (conf_parser_ctx.pass == 2)
3934 block_state.modes.value |= UMODE_INVISIBLE;
3935 }
3936 #line 3937 "conf_parser.c" /* yacc.c:1646 */
3937 break;
3938
3939 case 182:
3940 #line 1250 "conf_parser.y" /* yacc.c:1646 */
3941 {
3942 if (conf_parser_ctx.pass == 2)
3943 block_state.modes.value |= UMODE_WALLOP;
3944 }
3945 #line 3946 "conf_parser.c" /* yacc.c:1646 */
3946 break;
3947
3948 case 183:
3949 #line 1254 "conf_parser.y" /* yacc.c:1646 */
3950 {
3951 if (conf_parser_ctx.pass == 2)
3952 block_state.modes.value |= UMODE_SOFTCALLERID;
3953 }
3954 #line 3955 "conf_parser.c" /* yacc.c:1646 */
3955 break;
3956
3957 case 184:
3958 #line 1258 "conf_parser.y" /* yacc.c:1646 */
3959 {
3960 if (conf_parser_ctx.pass == 2)
3961 block_state.modes.value |= UMODE_CALLERID;
3962 }
3963 #line 3964 "conf_parser.c" /* yacc.c:1646 */
3964 break;
3965
3966 case 185:
3967 #line 1262 "conf_parser.y" /* yacc.c:1646 */
3968 {
3969 if (conf_parser_ctx.pass == 2)
3970 block_state.modes.value |= UMODE_LOCOPS;
3971 }
3972 #line 3973 "conf_parser.c" /* yacc.c:1646 */
3973 break;
3974
3975 case 186:
3976 #line 1266 "conf_parser.y" /* yacc.c:1646 */
3977 {
3978 if (conf_parser_ctx.pass == 2)
3979 block_state.modes.value |= UMODE_REGONLY;
3980 }
3981 #line 3982 "conf_parser.c" /* yacc.c:1646 */
3982 break;
3983
3984 case 187:
3985 #line 1270 "conf_parser.y" /* yacc.c:1646 */
3986 {
3987 if (conf_parser_ctx.pass == 2)
3988 block_state.modes.value |= UMODE_FARCONNECT;
3989 }
3990 #line 3991 "conf_parser.c" /* yacc.c:1646 */
3991 break;
3992
3993 case 188:
3994 #line 1276 "conf_parser.y" /* yacc.c:1646 */
3995 {
3996 if (conf_parser_ctx.pass == 2)
3997 block_state.port.value = 0;
3998 }
3999 #line 4000 "conf_parser.c" /* yacc.c:1646 */
4000 break;
4001
4002 case 192:
4003 #line 1283 "conf_parser.y" /* yacc.c:1646 */
4004 {
4005 if (conf_parser_ctx.pass == 2)
4006 block_state.port.value |= OPER_FLAG_KILL_REMOTE;
4007 }
4008 #line 4009 "conf_parser.c" /* yacc.c:1646 */
4009 break;
4010
4011 case 193:
4012 #line 1287 "conf_parser.y" /* yacc.c:1646 */
4013 {
4014 if (conf_parser_ctx.pass == 2)
4015 block_state.port.value |= OPER_FLAG_KILL;
4016 }
4017 #line 4018 "conf_parser.c" /* yacc.c:1646 */
4018 break;
4019
4020 case 194:
4021 #line 1291 "conf_parser.y" /* yacc.c:1646 */
4022 {
4023 if (conf_parser_ctx.pass == 2)
4024 block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
4025 }
4026 #line 4027 "conf_parser.c" /* yacc.c:1646 */
4027 break;
4028
4029 case 195:
4030 #line 1295 "conf_parser.y" /* yacc.c:1646 */
4031 {
4032 if (conf_parser_ctx.pass == 2)
4033 block_state.port.value |= OPER_FLAG_CONNECT;
4034 }
4035 #line 4036 "conf_parser.c" /* yacc.c:1646 */
4036 break;
4037
4038 case 196:
4039 #line 1299 "conf_parser.y" /* yacc.c:1646 */
4040 {
4041 if (conf_parser_ctx.pass == 2)
4042 block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
4043 }
4044 #line 4045 "conf_parser.c" /* yacc.c:1646 */
4045 break;
4046
4047 case 197:
4048 #line 1303 "conf_parser.y" /* yacc.c:1646 */
4049 {
4050 if (conf_parser_ctx.pass == 2)
4051 block_state.port.value |= OPER_FLAG_SQUIT;
4052 }
4053 #line 4054 "conf_parser.c" /* yacc.c:1646 */
4054 break;
4055
4056 case 198:
4057 #line 1307 "conf_parser.y" /* yacc.c:1646 */
4058 {
4059 if (conf_parser_ctx.pass == 2)
4060 block_state.port.value |= OPER_FLAG_KLINE;
4061 }
4062 #line 4063 "conf_parser.c" /* yacc.c:1646 */
4063 break;
4064
4065 case 199:
4066 #line 1311 "conf_parser.y" /* yacc.c:1646 */
4067 {
4068 if (conf_parser_ctx.pass == 2)
4069 block_state.port.value |= OPER_FLAG_UNKLINE;
4070 }
4071 #line 4072 "conf_parser.c" /* yacc.c:1646 */
4072 break;
4073
4074 case 200:
4075 #line 1315 "conf_parser.y" /* yacc.c:1646 */
4076 {
4077 if (conf_parser_ctx.pass == 2)
4078 block_state.port.value |= OPER_FLAG_DLINE;
4079 }
4080 #line 4081 "conf_parser.c" /* yacc.c:1646 */
4081 break;
4082
4083 case 201:
4084 #line 1319 "conf_parser.y" /* yacc.c:1646 */
4085 {
4086 if (conf_parser_ctx.pass == 2)
4087 block_state.port.value |= OPER_FLAG_UNDLINE;
4088 }
4089 #line 4090 "conf_parser.c" /* yacc.c:1646 */
4090 break;
4091
4092 case 202:
4093 #line 1323 "conf_parser.y" /* yacc.c:1646 */
4094 {
4095 if (conf_parser_ctx.pass == 2)
4096 block_state.port.value |= OPER_FLAG_XLINE;
4097 }
4098 #line 4099 "conf_parser.c" /* yacc.c:1646 */
4099 break;
4100
4101 case 203:
4102 #line 1327 "conf_parser.y" /* yacc.c:1646 */
4103 {
4104 if (conf_parser_ctx.pass == 2)
4105 block_state.port.value |= OPER_FLAG_UNXLINE;
4106 }
4107 #line 4108 "conf_parser.c" /* yacc.c:1646 */
4108 break;
4109
4110 case 204:
4111 #line 1331 "conf_parser.y" /* yacc.c:1646 */
4112 {
4113 if (conf_parser_ctx.pass == 2)
4114 block_state.port.value |= OPER_FLAG_GLINE;
4115 }
4116 #line 4117 "conf_parser.c" /* yacc.c:1646 */
4117 break;
4118
4119 case 205:
4120 #line 1335 "conf_parser.y" /* yacc.c:1646 */
4121 {
4122 if (conf_parser_ctx.pass == 2)
4123 block_state.port.value |= OPER_FLAG_DIE;
4124 }
4125 #line 4126 "conf_parser.c" /* yacc.c:1646 */
4126 break;
4127
4128 case 206:
4129 #line 1339 "conf_parser.y" /* yacc.c:1646 */
4130 {
4131 if (conf_parser_ctx.pass == 2)
4132 block_state.port.value |= OPER_FLAG_RESTART;
4133 }
4134 #line 4135 "conf_parser.c" /* yacc.c:1646 */
4135 break;
4136
4137 case 207:
4138 #line 1343 "conf_parser.y" /* yacc.c:1646 */
4139 {
4140 if (conf_parser_ctx.pass == 2)
4141 block_state.port.value |= OPER_FLAG_REHASH;
4142 }
4143 #line 4144 "conf_parser.c" /* yacc.c:1646 */
4144 break;
4145
4146 case 208:
4147 #line 1347 "conf_parser.y" /* yacc.c:1646 */
4148 {
4149 if (conf_parser_ctx.pass == 2)
4150 block_state.port.value |= OPER_FLAG_ADMIN;
4151 }
4152 #line 4153 "conf_parser.c" /* yacc.c:1646 */
4153 break;
4154
4155 case 209:
4156 #line 1351 "conf_parser.y" /* yacc.c:1646 */
4157 {
4158 if (conf_parser_ctx.pass == 2)
4159 block_state.port.value |= OPER_FLAG_GLOBOPS;
4160 }
4161 #line 4162 "conf_parser.c" /* yacc.c:1646 */
4162 break;
4163
4164 case 210:
4165 #line 1355 "conf_parser.y" /* yacc.c:1646 */
4166 {
4167 if (conf_parser_ctx.pass == 2)
4168 block_state.port.value |= OPER_FLAG_WALLOPS;
4169 }
4170 #line 4171 "conf_parser.c" /* yacc.c:1646 */
4171 break;
4172
4173 case 211:
4174 #line 1359 "conf_parser.y" /* yacc.c:1646 */
4175 {
4176 if (conf_parser_ctx.pass == 2)
4177 block_state.port.value |= OPER_FLAG_LOCOPS;
4178 }
4179 #line 4180 "conf_parser.c" /* yacc.c:1646 */
4180 break;
4181
4182 case 212:
4183 #line 1363 "conf_parser.y" /* yacc.c:1646 */
4184 {
4185 if (conf_parser_ctx.pass == 2)
4186 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4187 }
4188 #line 4189 "conf_parser.c" /* yacc.c:1646 */
4189 break;
4190
4191 case 213:
4192 #line 1367 "conf_parser.y" /* yacc.c:1646 */
4193 {
4194 if (conf_parser_ctx.pass == 2)
4195 block_state.port.value |= OPER_FLAG_SET;
4196 }
4197 #line 4198 "conf_parser.c" /* yacc.c:1646 */
4198 break;
4199
4200 case 214:
4201 #line 1371 "conf_parser.y" /* yacc.c:1646 */
4202 {
4203 if (conf_parser_ctx.pass == 2)
4204 block_state.port.value |= OPER_FLAG_MODULE;
4205 }
4206 #line 4207 "conf_parser.c" /* yacc.c:1646 */
4207 break;
4208
4209 case 215:
4210 #line 1381 "conf_parser.y" /* yacc.c:1646 */
4211 {
4212 if (conf_parser_ctx.pass != 1)
4213 break;
4214
4215 reset_block_state();
4216
4217 block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4218 block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4219 block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4220 block_state.max_sendq.value = DEFAULT_SENDQ;
4221 block_state.max_recvq.value = DEFAULT_RECVQ;
4222 }
4223 #line 4224 "conf_parser.c" /* yacc.c:1646 */
4224 break;
4225
4226 case 216:
4227 #line 1393 "conf_parser.y" /* yacc.c:1646 */
4228 {
4229 struct ClassItem *class = NULL;
4230
4231 if (conf_parser_ctx.pass != 1)
4232 break;
4233
4234 if (!block_state.class.buf[0])
4235 break;
4236
4237 if (!(class = class_find(block_state.class.buf, 0)))
4238 class = class_make();
4239
4240 class->active = 1;
4241 MyFree(class->name);
4242 class->name = xstrdup(block_state.class.buf);
4243 class->ping_freq = block_state.ping_freq.value;
4244 class->max_perip = block_state.max_perip.value;
4245 class->con_freq = block_state.con_freq.value;
4246 class->max_total = block_state.max_total.value;
4247 class->max_global = block_state.max_global.value;
4248 class->max_local = block_state.max_local.value;
4249 class->max_ident = block_state.max_ident.value;
4250 class->max_sendq = block_state.max_sendq.value;
4251 class->max_recvq = block_state.max_recvq.value;
4252 class->max_channels = block_state.max_channels.value;
4253
4254 if (block_state.min_idle.value > block_state.max_idle.value)
4255 {
4256 block_state.min_idle.value = 0;
4257 block_state.max_idle.value = 0;
4258 block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4259 }
4260
4261 class->flags = block_state.flags.value;
4262 class->min_idle = block_state.min_idle.value;
4263 class->max_idle = block_state.max_idle.value;
4264
4265 if (class->number_per_cidr && block_state.number_per_cidr.value)
4266 if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4267 (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4268 if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4269 (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4270 rebuild_cidr_list(class);
4271
4272 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4273 class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4274 class->number_per_cidr = block_state.number_per_cidr.value;
4275 }
4276 #line 4277 "conf_parser.c" /* yacc.c:1646 */
4277 break;
4278
4279 case 237:
4280 #line 1462 "conf_parser.y" /* yacc.c:1646 */
4281 {
4282 if (conf_parser_ctx.pass == 1)
4283 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4284 }
4285 #line 4286 "conf_parser.c" /* yacc.c:1646 */
4286 break;
4287
4288 case 238:
4289 #line 1468 "conf_parser.y" /* yacc.c:1646 */
4290 {
4291 if (conf_parser_ctx.pass == 1)
4292 block_state.ping_freq.value = (yyvsp[-1].number);
4293 }
4294 #line 4295 "conf_parser.c" /* yacc.c:1646 */
4295 break;
4296
4297 case 239:
4298 #line 1474 "conf_parser.y" /* yacc.c:1646 */
4299 {
4300 if (conf_parser_ctx.pass == 1)
4301 block_state.max_perip.value = (yyvsp[-1].number);
4302 }
4303 #line 4304 "conf_parser.c" /* yacc.c:1646 */
4304 break;
4305
4306 case 240:
4307 #line 1480 "conf_parser.y" /* yacc.c:1646 */
4308 {
4309 if (conf_parser_ctx.pass == 1)
4310 block_state.con_freq.value = (yyvsp[-1].number);
4311 }
4312 #line 4313 "conf_parser.c" /* yacc.c:1646 */
4313 break;
4314
4315 case 241:
4316 #line 1486 "conf_parser.y" /* yacc.c:1646 */
4317 {
4318 if (conf_parser_ctx.pass == 1)
4319 block_state.max_channels.value = (yyvsp[-1].number);
4320 }
4321 #line 4322 "conf_parser.c" /* yacc.c:1646 */
4322 break;
4323
4324 case 242:
4325 #line 1492 "conf_parser.y" /* yacc.c:1646 */
4326 {
4327 if (conf_parser_ctx.pass == 1)
4328 block_state.max_total.value = (yyvsp[-1].number);
4329 }
4330 #line 4331 "conf_parser.c" /* yacc.c:1646 */
4331 break;
4332
4333 case 243:
4334 #line 1498 "conf_parser.y" /* yacc.c:1646 */
4335 {
4336 if (conf_parser_ctx.pass == 1)
4337 block_state.max_global.value = (yyvsp[-1].number);
4338 }
4339 #line 4340 "conf_parser.c" /* yacc.c:1646 */
4340 break;
4341
4342 case 244:
4343 #line 1504 "conf_parser.y" /* yacc.c:1646 */
4344 {
4345 if (conf_parser_ctx.pass == 1)
4346 block_state.max_local.value = (yyvsp[-1].number);
4347 }
4348 #line 4349 "conf_parser.c" /* yacc.c:1646 */
4349 break;
4350
4351 case 245:
4352 #line 1510 "conf_parser.y" /* yacc.c:1646 */
4353 {
4354 if (conf_parser_ctx.pass == 1)
4355 block_state.max_ident.value = (yyvsp[-1].number);
4356 }
4357 #line 4358 "conf_parser.c" /* yacc.c:1646 */
4358 break;
4359
4360 case 246:
4361 #line 1516 "conf_parser.y" /* yacc.c:1646 */
4362 {
4363 if (conf_parser_ctx.pass == 1)
4364 block_state.max_sendq.value = (yyvsp[-1].number);
4365 }
4366 #line 4367 "conf_parser.c" /* yacc.c:1646 */
4367 break;
4368
4369 case 247:
4370 #line 1522 "conf_parser.y" /* yacc.c:1646 */
4371 {
4372 if (conf_parser_ctx.pass == 1)
4373 if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4374 block_state.max_recvq.value = (yyvsp[-1].number);
4375 }
4376 #line 4377 "conf_parser.c" /* yacc.c:1646 */
4377 break;
4378
4379 case 248:
4380 #line 1529 "conf_parser.y" /* yacc.c:1646 */
4381 {
4382 if (conf_parser_ctx.pass == 1)
4383 block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4384 }
4385 #line 4386 "conf_parser.c" /* yacc.c:1646 */
4386 break;
4387
4388 case 249:
4389 #line 1535 "conf_parser.y" /* yacc.c:1646 */
4390 {
4391 if (conf_parser_ctx.pass == 1)
4392 block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4393 }
4394 #line 4395 "conf_parser.c" /* yacc.c:1646 */
4395 break;
4396
4397 case 250:
4398 #line 1541 "conf_parser.y" /* yacc.c:1646 */
4399 {
4400 if (conf_parser_ctx.pass == 1)
4401 block_state.number_per_cidr.value = (yyvsp[-1].number);
4402 }
4403 #line 4404 "conf_parser.c" /* yacc.c:1646 */
4404 break;
4405
4406 case 251:
4407 #line 1547 "conf_parser.y" /* yacc.c:1646 */
4408 {
4409 if (conf_parser_ctx.pass != 1)
4410 break;
4411
4412 block_state.min_idle.value = (yyvsp[-1].number);
4413 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4414 }
4415 #line 4416 "conf_parser.c" /* yacc.c:1646 */
4416 break;
4417
4418 case 252:
4419 #line 1556 "conf_parser.y" /* yacc.c:1646 */
4420 {
4421 if (conf_parser_ctx.pass != 1)
4422 break;
4423
4424 block_state.max_idle.value = (yyvsp[-1].number);
4425 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4426 }
4427 #line 4428 "conf_parser.c" /* yacc.c:1646 */
4428 break;
4429
4430 case 253:
4431 #line 1565 "conf_parser.y" /* yacc.c:1646 */
4432 {
4433 if (conf_parser_ctx.pass == 1)
4434 block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4435 }
4436 #line 4437 "conf_parser.c" /* yacc.c:1646 */
4437 break;
4438
4439 case 257:
4440 #line 1572 "conf_parser.y" /* yacc.c:1646 */
4441 {
4442 if (conf_parser_ctx.pass == 1)
4443 block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4444 }
4445 #line 4446 "conf_parser.c" /* yacc.c:1646 */
4446 break;
4447
4448 case 258:
4449 #line 1576 "conf_parser.y" /* yacc.c:1646 */
4450 {
4451 if (conf_parser_ctx.pass == 1)
4452 block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4453 }
4454 #line 4455 "conf_parser.c" /* yacc.c:1646 */
4455 break;
4456
4457 case 259:
4458 #line 1586 "conf_parser.y" /* yacc.c:1646 */
4459 {
4460 if (conf_parser_ctx.pass == 2)
4461 reset_block_state();
4462 }
4463 #line 4464 "conf_parser.c" /* yacc.c:1646 */
4464 break;
4465
4466 case 261:
4467 #line 1592 "conf_parser.y" /* yacc.c:1646 */
4468 {
4469 block_state.flags.value = 0;
4470 }
4471 #line 4472 "conf_parser.c" /* yacc.c:1646 */
4472 break;
4473
4474 case 265:
4475 #line 1598 "conf_parser.y" /* yacc.c:1646 */
4476 {
4477 if (conf_parser_ctx.pass == 2)
4478 block_state.flags.value |= LISTENER_SSL;
4479 }
4480 #line 4481 "conf_parser.c" /* yacc.c:1646 */
4481 break;
4482
4483 case 266:
4484 #line 1602 "conf_parser.y" /* yacc.c:1646 */
4485 {
4486 if (conf_parser_ctx.pass == 2)
4487 block_state.flags.value |= LISTENER_HIDDEN;
4488 }
4489 #line 4490 "conf_parser.c" /* yacc.c:1646 */
4490 break;
4491
4492 case 267:
4493 #line 1606 "conf_parser.y" /* yacc.c:1646 */
4494 {
4495 if (conf_parser_ctx.pass == 2)
4496 block_state.flags.value |= LISTENER_SERVER;
4497 }
4498 #line 4499 "conf_parser.c" /* yacc.c:1646 */
4499 break;
4500
4501 case 275:
4502 #line 1614 "conf_parser.y" /* yacc.c:1646 */
4503 { block_state.flags.value = 0; }
4504 #line 4505 "conf_parser.c" /* yacc.c:1646 */
4505 break;
4506
4507 case 279:
4508 #line 1619 "conf_parser.y" /* yacc.c:1646 */
4509 {
4510 if (conf_parser_ctx.pass == 2)
4511 {
4512 if (block_state.flags.value & LISTENER_SSL)
4513 #ifdef HAVE_LIBCRYPTO
4514 if (!ServerInfo.server_ctx)
4515 #endif
4516 {
4517 conf_error_report("SSL not available - port closed");
4518 break;
4519 }
4520 add_listener((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4521 }
4522 }
4523 #line 4524 "conf_parser.c" /* yacc.c:1646 */
4524 break;
4525
4526 case 280:
4527 #line 1633 "conf_parser.y" /* yacc.c:1646 */
4528 {
4529 if (conf_parser_ctx.pass == 2)
4530 {
4531 if (block_state.flags.value & LISTENER_SSL)
4532 #ifdef HAVE_LIBCRYPTO
4533 if (!ServerInfo.server_ctx)
4534 #endif
4535 {
4536 conf_error_report("SSL not available - port closed");
4537 break;
4538 }
4539
4540 for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4541 add_listener(i, block_state.addr.buf, block_state.flags.value);
4542 }
4543 }
4544 #line 4545 "conf_parser.c" /* yacc.c:1646 */
4545 break;
4546
4547 case 281:
4548 #line 1651 "conf_parser.y" /* yacc.c:1646 */
4549 {
4550 if (conf_parser_ctx.pass == 2)
4551 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4552 }
4553 #line 4554 "conf_parser.c" /* yacc.c:1646 */
4554 break;
4555
4556 case 282:
4557 #line 1657 "conf_parser.y" /* yacc.c:1646 */
4558 {
4559 if (conf_parser_ctx.pass == 2)
4560 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4561 }
4562 #line 4563 "conf_parser.c" /* yacc.c:1646 */
4563 break;
4564
4565 case 283:
4566 #line 1666 "conf_parser.y" /* yacc.c:1646 */
4567 {
4568 if (conf_parser_ctx.pass == 2)
4569 reset_block_state();
4570 }
4571 #line 4572 "conf_parser.c" /* yacc.c:1646 */
4572 break;
4573
4574 case 284:
4575 #line 1670 "conf_parser.y" /* yacc.c:1646 */
4576 {
4577 dlink_node *ptr = NULL;
4578
4579 if (conf_parser_ctx.pass != 2)
4580 break;
4581
4582 DLINK_FOREACH(ptr, block_state.mask.list.head)
4583 {
4584 struct MaskItem *conf = NULL;
4585 struct split_nuh_item nuh;
4586
4587 nuh.nuhmask = ptr->data;
4588 nuh.nickptr = NULL;
4589 nuh.userptr = block_state.user.buf;
4590 nuh.hostptr = block_state.host.buf;
4591 nuh.nicksize = 0;
4592 nuh.usersize = sizeof(block_state.user.buf);
4593 nuh.hostsize = sizeof(block_state.host.buf);
4594 split_nuh(&nuh);
4595
4596 conf = conf_make(CONF_CLIENT);
4597 conf->user = xstrdup(block_state.user.buf);
4598 conf->host = xstrdup(block_state.host.buf);
4599
4600 if (block_state.rpass.buf[0])
4601 conf->passwd = xstrdup(block_state.rpass.buf);
4602 if (block_state.name.buf[0])
4603 conf->name = xstrdup(block_state.name.buf);
4604
4605 conf->flags = block_state.flags.value;
4606 conf->port = block_state.port.value;
4607
4608 conf_add_class_to_conf(conf, block_state.class.buf);
4609 add_conf_by_address(CONF_CLIENT, conf);
4610 }
4611 }
4612 #line 4613 "conf_parser.c" /* yacc.c:1646 */
4613 break;
4614
4615 case 296:
4616 #line 1719 "conf_parser.y" /* yacc.c:1646 */
4617 {
4618 if (conf_parser_ctx.pass == 2)
4619 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4620 }
4621 #line 4622 "conf_parser.c" /* yacc.c:1646 */
4622 break;
4623
4624 case 297:
4625 #line 1725 "conf_parser.y" /* yacc.c:1646 */
4626 {
4627 if (conf_parser_ctx.pass == 2)
4628 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4629 }
4630 #line 4631 "conf_parser.c" /* yacc.c:1646 */
4631 break;
4632
4633 case 298:
4634 #line 1731 "conf_parser.y" /* yacc.c:1646 */
4635 {
4636 if (conf_parser_ctx.pass == 2)
4637 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4638 }
4639 #line 4640 "conf_parser.c" /* yacc.c:1646 */
4640 break;
4641
4642 case 299:
4643 #line 1737 "conf_parser.y" /* yacc.c:1646 */
4644 {
4645 if (conf_parser_ctx.pass == 2)
4646 {
4647 if (yylval.number)
4648 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4649 else
4650 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4651 }
4652 }
4653 #line 4654 "conf_parser.c" /* yacc.c:1646 */
4654 break;
4655
4656 case 300:
4657 #line 1748 "conf_parser.y" /* yacc.c:1646 */
4658 {
4659 if (conf_parser_ctx.pass == 2)
4660 block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4661 }
4662 #line 4663 "conf_parser.c" /* yacc.c:1646 */
4663 break;
4664
4665 case 304:
4666 #line 1755 "conf_parser.y" /* yacc.c:1646 */
4667 {
4668 if (conf_parser_ctx.pass == 2)
4669 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4670 }
4671 #line 4672 "conf_parser.c" /* yacc.c:1646 */
4672 break;
4673
4674 case 305:
4675 #line 1759 "conf_parser.y" /* yacc.c:1646 */
4676 {
4677 if (conf_parser_ctx.pass == 2)
4678 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4679 }
4680 #line 4681 "conf_parser.c" /* yacc.c:1646 */
4681 break;
4682
4683 case 306:
4684 #line 1763 "conf_parser.y" /* yacc.c:1646 */
4685 {
4686 if (conf_parser_ctx.pass == 2)
4687 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4688 }
4689 #line 4690 "conf_parser.c" /* yacc.c:1646 */
4690 break;
4691
4692 case 307:
4693 #line 1767 "conf_parser.y" /* yacc.c:1646 */
4694 {
4695 if (conf_parser_ctx.pass == 2)
4696 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4697 }
4698 #line 4699 "conf_parser.c" /* yacc.c:1646 */
4699 break;
4700
4701 case 308:
4702 #line 1771 "conf_parser.y" /* yacc.c:1646 */
4703 {
4704 if (conf_parser_ctx.pass == 2)
4705 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4706 }
4707 #line 4708 "conf_parser.c" /* yacc.c:1646 */
4708 break;
4709
4710 case 309:
4711 #line 1775 "conf_parser.y" /* yacc.c:1646 */
4712 {
4713 if (conf_parser_ctx.pass == 2)
4714 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4715 }
4716 #line 4717 "conf_parser.c" /* yacc.c:1646 */
4717 break;
4718
4719 case 310:
4720 #line 1779 "conf_parser.y" /* yacc.c:1646 */
4721 {
4722 if (conf_parser_ctx.pass == 2)
4723 block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4724 }
4725 #line 4726 "conf_parser.c" /* yacc.c:1646 */
4726 break;
4727
4728 case 311:
4729 #line 1783 "conf_parser.y" /* yacc.c:1646 */
4730 {
4731 if (conf_parser_ctx.pass == 2)
4732 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4733 }
4734 #line 4735 "conf_parser.c" /* yacc.c:1646 */
4735 break;
4736
4737 case 312:
4738 #line 1787 "conf_parser.y" /* yacc.c:1646 */
4739 {
4740 if (conf_parser_ctx.pass == 2)
4741 block_state.flags.value |= CONF_FLAGS_WEBIRC;
4742 }
4743 #line 4744 "conf_parser.c" /* yacc.c:1646 */
4744 break;
4745
4746 case 313:
4747 #line 1791 "conf_parser.y" /* yacc.c:1646 */
4748 {
4749 if (conf_parser_ctx.pass == 2)
4750 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4751 }
4752 #line 4753 "conf_parser.c" /* yacc.c:1646 */
4753 break;
4754
4755 case 314:
4756 #line 1797 "conf_parser.y" /* yacc.c:1646 */
4757 {
4758 if (conf_parser_ctx.pass != 2)
4759 break;
4760
4761 if (valid_hostname(yylval.string))
4762 {
4763 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4764 block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4765 }
4766 else
4767 ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4768 }
4769 #line 4770 "conf_parser.c" /* yacc.c:1646 */
4770 break;
4771
4772 case 315:
4773 #line 1811 "conf_parser.y" /* yacc.c:1646 */
4774 {
4775 if (conf_parser_ctx.pass != 2)
4776 break;
4777
4778 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4779 block_state.flags.value |= CONF_FLAGS_REDIR;
4780 }
4781 #line 4782 "conf_parser.c" /* yacc.c:1646 */
4782 break;
4783
4784 case 316:
4785 #line 1820 "conf_parser.y" /* yacc.c:1646 */
4786 {
4787 if (conf_parser_ctx.pass != 2)
4788 break;
4789
4790 block_state.flags.value |= CONF_FLAGS_REDIR;
4791 block_state.port.value = (yyvsp[-1].number);
4792 }
4793 #line 4794 "conf_parser.c" /* yacc.c:1646 */
4794 break;
4795
4796 case 317:
4797 #line 1833 "conf_parser.y" /* yacc.c:1646 */
4798 {
4799 if (conf_parser_ctx.pass != 2)
4800 break;
4801
4802 reset_block_state();
4803 strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4804 }
4805 #line 4806 "conf_parser.c" /* yacc.c:1646 */
4806 break;
4807
4808 case 318:
4809 #line 1840 "conf_parser.y" /* yacc.c:1646 */
4810 {
4811 if (conf_parser_ctx.pass != 2)
4812 break;
4813
4814 create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4815 }
4816 #line 4817 "conf_parser.c" /* yacc.c:1646 */
4817 break;
4818
4819 case 325:
4820 #line 1851 "conf_parser.y" /* yacc.c:1646 */
4821 {
4822 if (conf_parser_ctx.pass == 2)
4823 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4824 }
4825 #line 4826 "conf_parser.c" /* yacc.c:1646 */
4826 break;
4827
4828 case 326:
4829 #line 1857 "conf_parser.y" /* yacc.c:1646 */
4830 {
4831 if (conf_parser_ctx.pass == 2)
4832 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4833 }
4834 #line 4835 "conf_parser.c" /* yacc.c:1646 */
4835 break;
4836
4837 case 327:
4838 #line 1863 "conf_parser.y" /* yacc.c:1646 */
4839 {
4840 if (conf_parser_ctx.pass == 2)
4841 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4842 }
4843 #line 4844 "conf_parser.c" /* yacc.c:1646 */
4844 break;
4845
4846 case 333:
4847 #line 1878 "conf_parser.y" /* yacc.c:1646 */
4848 {
4849 if (conf_parser_ctx.pass != 2)
4850 break;
4851
4852 if (valid_servname(yylval.string))
4853 {
4854 struct MaskItem *conf = conf_make(CONF_SERVICE);
4855 conf->name = xstrdup(yylval.string);
4856 }
4857 }
4858 #line 4859 "conf_parser.c" /* yacc.c:1646 */
4859 break;
4860
4861 case 334:
4862 #line 1893 "conf_parser.y" /* yacc.c:1646 */
4863 {
4864 if (conf_parser_ctx.pass != 2)
4865 break;
4866
4867 reset_block_state();
4868
4869 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4870 strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4871 strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4872 block_state.flags.value = SHARED_ALL;
4873 }
4874 #line 4875 "conf_parser.c" /* yacc.c:1646 */
4875 break;
4876
4877 case 335:
4878 #line 1904 "conf_parser.y" /* yacc.c:1646 */
4879 {
4880 struct MaskItem *conf = NULL;
4881
4882 if (conf_parser_ctx.pass != 2)
4883 break;
4884
4885 conf = conf_make(CONF_ULINE);
4886 conf->flags = block_state.flags.value;
4887 conf->name = xstrdup(block_state.name.buf);
4888 conf->user = xstrdup(block_state.user.buf);
4889 conf->host = xstrdup(block_state.host.buf);
4890 }
4891 #line 4892 "conf_parser.c" /* yacc.c:1646 */
4892 break;
4893
4894 case 342:
4895 #line 1921 "conf_parser.y" /* yacc.c:1646 */
4896 {
4897 if (conf_parser_ctx.pass == 2)
4898 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4899 }
4900 #line 4901 "conf_parser.c" /* yacc.c:1646 */
4901 break;
4902
4903 case 343:
4904 #line 1927 "conf_parser.y" /* yacc.c:1646 */
4905 {
4906 if (conf_parser_ctx.pass == 2)
4907 {
4908 struct split_nuh_item nuh;
4909
4910 nuh.nuhmask = yylval.string;
4911 nuh.nickptr = NULL;
4912 nuh.userptr = block_state.user.buf;
4913 nuh.hostptr = block_state.host.buf;
4914
4915 nuh.nicksize = 0;
4916 nuh.usersize = sizeof(block_state.user.buf);
4917 nuh.hostsize = sizeof(block_state.host.buf);
4918
4919 split_nuh(&nuh);
4920 }
4921 }
4922 #line 4923 "conf_parser.c" /* yacc.c:1646 */
4923 break;
4924
4925 case 344:
4926 #line 1946 "conf_parser.y" /* yacc.c:1646 */
4927 {
4928 if (conf_parser_ctx.pass == 2)
4929 block_state.flags.value = 0;
4930 }
4931 #line 4932 "conf_parser.c" /* yacc.c:1646 */
4932 break;
4933
4934 case 348:
4935 #line 1953 "conf_parser.y" /* yacc.c:1646 */
4936 {
4937 if (conf_parser_ctx.pass == 2)
4938 block_state.flags.value |= SHARED_KLINE;
4939 }
4940 #line 4941 "conf_parser.c" /* yacc.c:1646 */
4941 break;
4942
4943 case 349:
4944 #line 1957 "conf_parser.y" /* yacc.c:1646 */
4945 {
4946 if (conf_parser_ctx.pass == 2)
4947 block_state.flags.value |= SHARED_UNKLINE;
4948 }
4949 #line 4950 "conf_parser.c" /* yacc.c:1646 */
4950 break;
4951
4952 case 350:
4953 #line 1961 "conf_parser.y" /* yacc.c:1646 */
4954 {
4955 if (conf_parser_ctx.pass == 2)
4956 block_state.flags.value |= SHARED_DLINE;
4957 }
4958 #line 4959 "conf_parser.c" /* yacc.c:1646 */
4959 break;
4960
4961 case 351:
4962 #line 1965 "conf_parser.y" /* yacc.c:1646 */
4963 {
4964 if (conf_parser_ctx.pass == 2)
4965 block_state.flags.value |= SHARED_UNDLINE;
4966 }
4967 #line 4968 "conf_parser.c" /* yacc.c:1646 */
4968 break;
4969
4970 case 352:
4971 #line 1969 "conf_parser.y" /* yacc.c:1646 */
4972 {
4973 if (conf_parser_ctx.pass == 2)
4974 block_state.flags.value |= SHARED_XLINE;
4975 }
4976 #line 4977 "conf_parser.c" /* yacc.c:1646 */
4977 break;
4978
4979 case 353:
4980 #line 1973 "conf_parser.y" /* yacc.c:1646 */
4981 {
4982 if (conf_parser_ctx.pass == 2)
4983 block_state.flags.value |= SHARED_UNXLINE;
4984 }
4985 #line 4986 "conf_parser.c" /* yacc.c:1646 */
4986 break;
4987
4988 case 354:
4989 #line 1977 "conf_parser.y" /* yacc.c:1646 */
4990 {
4991 if (conf_parser_ctx.pass == 2)
4992 block_state.flags.value |= SHARED_RESV;
4993 }
4994 #line 4995 "conf_parser.c" /* yacc.c:1646 */
4995 break;
4996
4997 case 355:
4998 #line 1981 "conf_parser.y" /* yacc.c:1646 */
4999 {
5000 if (conf_parser_ctx.pass == 2)
5001 block_state.flags.value |= SHARED_UNRESV;
5002 }
5003 #line 5004 "conf_parser.c" /* yacc.c:1646 */
5004 break;
5005
5006 case 356:
5007 #line 1985 "conf_parser.y" /* yacc.c:1646 */
5008 {
5009 if (conf_parser_ctx.pass == 2)
5010 block_state.flags.value |= SHARED_LOCOPS;
5011 }
5012 #line 5013 "conf_parser.c" /* yacc.c:1646 */
5013 break;
5014
5015 case 357:
5016 #line 1989 "conf_parser.y" /* yacc.c:1646 */
5017 {
5018 if (conf_parser_ctx.pass == 2)
5019 block_state.flags.value = SHARED_ALL;
5020 }
5021 #line 5022 "conf_parser.c" /* yacc.c:1646 */
5022 break;
5023
5024 case 358:
5025 #line 1998 "conf_parser.y" /* yacc.c:1646 */
5026 {
5027 if (conf_parser_ctx.pass != 2)
5028 break;
5029
5030 reset_block_state();
5031
5032 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5033 block_state.flags.value = SHARED_ALL;
5034 }
5035 #line 5036 "conf_parser.c" /* yacc.c:1646 */
5036 break;
5037
5038 case 359:
5039 #line 2007 "conf_parser.y" /* yacc.c:1646 */
5040 {
5041 struct MaskItem *conf = NULL;
5042
5043 if (conf_parser_ctx.pass != 2)
5044 break;
5045
5046 conf = conf_make(CONF_CLUSTER);
5047 conf->flags = block_state.flags.value;
5048 conf->name = xstrdup(block_state.name.buf);
5049 }
5050 #line 5051 "conf_parser.c" /* yacc.c:1646 */
5051 break;
5052
5053 case 365:
5054 #line 2022 "conf_parser.y" /* yacc.c:1646 */
5055 {
5056 if (conf_parser_ctx.pass == 2)
5057 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5058 }
5059 #line 5060 "conf_parser.c" /* yacc.c:1646 */
5060 break;
5061
5062 case 366:
5063 #line 2028 "conf_parser.y" /* yacc.c:1646 */
5064 {
5065 if (conf_parser_ctx.pass == 2)
5066 block_state.flags.value = 0;
5067 }
5068 #line 5069 "conf_parser.c" /* yacc.c:1646 */
5069 break;
5070
5071 case 370:
5072 #line 2035 "conf_parser.y" /* yacc.c:1646 */
5073 {
5074 if (conf_parser_ctx.pass == 2)
5075 block_state.flags.value |= SHARED_KLINE;
5076 }
5077 #line 5078 "conf_parser.c" /* yacc.c:1646 */
5078 break;
5079
5080 case 371:
5081 #line 2039 "conf_parser.y" /* yacc.c:1646 */
5082 {
5083 if (conf_parser_ctx.pass == 2)
5084 block_state.flags.value |= SHARED_UNKLINE;
5085 }
5086 #line 5087 "conf_parser.c" /* yacc.c:1646 */
5087 break;
5088
5089 case 372:
5090 #line 2043 "conf_parser.y" /* yacc.c:1646 */
5091 {
5092 if (conf_parser_ctx.pass == 2)
5093 block_state.flags.value |= SHARED_DLINE;
5094 }
5095 #line 5096 "conf_parser.c" /* yacc.c:1646 */
5096 break;
5097
5098 case 373:
5099 #line 2047 "conf_parser.y" /* yacc.c:1646 */
5100 {
5101 if (conf_parser_ctx.pass == 2)
5102 block_state.flags.value |= SHARED_UNDLINE;
5103 }
5104 #line 5105 "conf_parser.c" /* yacc.c:1646 */
5105 break;
5106
5107 case 374:
5108 #line 2051 "conf_parser.y" /* yacc.c:1646 */
5109 {
5110 if (conf_parser_ctx.pass == 2)
5111 block_state.flags.value |= SHARED_XLINE;
5112 }
5113 #line 5114 "conf_parser.c" /* yacc.c:1646 */
5114 break;
5115
5116 case 375:
5117 #line 2055 "conf_parser.y" /* yacc.c:1646 */
5118 {
5119 if (conf_parser_ctx.pass == 2)
5120 block_state.flags.value |= SHARED_UNXLINE;
5121 }
5122 #line 5123 "conf_parser.c" /* yacc.c:1646 */
5123 break;
5124
5125 case 376:
5126 #line 2059 "conf_parser.y" /* yacc.c:1646 */
5127 {
5128 if (conf_parser_ctx.pass == 2)
5129 block_state.flags.value |= SHARED_RESV;
5130 }
5131 #line 5132 "conf_parser.c" /* yacc.c:1646 */
5132 break;
5133
5134 case 377:
5135 #line 2063 "conf_parser.y" /* yacc.c:1646 */
5136 {
5137 if (conf_parser_ctx.pass == 2)
5138 block_state.flags.value |= SHARED_UNRESV;
5139 }
5140 #line 5141 "conf_parser.c" /* yacc.c:1646 */
5141 break;
5142
5143 case 378:
5144 #line 2067 "conf_parser.y" /* yacc.c:1646 */
5145 {
5146 if (conf_parser_ctx.pass == 2)
5147 block_state.flags.value |= SHARED_LOCOPS;
5148 }
5149 #line 5150 "conf_parser.c" /* yacc.c:1646 */
5150 break;
5151
5152 case 379:
5153 #line 2071 "conf_parser.y" /* yacc.c:1646 */
5154 {
5155 if (conf_parser_ctx.pass == 2)
5156 block_state.flags.value = SHARED_ALL;
5157 }
5158 #line 5159 "conf_parser.c" /* yacc.c:1646 */
5159 break;
5160
5161 case 380:
5162 #line 2080 "conf_parser.y" /* yacc.c:1646 */
5163 {
5164
5165 if (conf_parser_ctx.pass != 2)
5166 break;
5167
5168 reset_block_state();
5169 block_state.aftype.value = AF_INET;
5170 block_state.port.value = PORTNUM;
5171 }
5172 #line 5173 "conf_parser.c" /* yacc.c:1646 */
5173 break;
5174
5175 case 381:
5176 #line 2089 "conf_parser.y" /* yacc.c:1646 */
5177 {
5178 struct MaskItem *conf = NULL;
5179 struct addrinfo hints, *res;
5180
5181 if (conf_parser_ctx.pass != 2)
5182 break;
5183
5184 if (!block_state.name.buf[0] ||
5185 !block_state.host.buf[0])
5186 break;
5187
5188 if (!block_state.rpass.buf[0] ||
5189 !block_state.spass.buf[0])
5190 break;
5191
5192 if (has_wildcards(block_state.name.buf) ||
5193 has_wildcards(block_state.host.buf))
5194 break;
5195
5196 conf = conf_make(CONF_SERVER);
5197 conf->port = block_state.port.value;
5198 conf->flags = block_state.flags.value;
5199 conf->aftype = block_state.aftype.value;
5200 conf->host = xstrdup(block_state.host.buf);
5201 conf->name = xstrdup(block_state.name.buf);
5202 conf->passwd = xstrdup(block_state.rpass.buf);
5203 conf->spasswd = xstrdup(block_state.spass.buf);
5204
5205 if (block_state.cert.buf[0])
5206 conf->certfp = xstrdup(block_state.cert.buf);
5207
5208 if (block_state.ciph.buf[0])
5209 conf->cipher_list = xstrdup(block_state.ciph.buf);
5210
5211 dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5212 dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5213
5214 if (block_state.bind.buf[0])
5215 {
5216 memset(&hints, 0, sizeof(hints));
5217
5218 hints.ai_family = AF_UNSPEC;
5219 hints.ai_socktype = SOCK_STREAM;
5220 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5221
5222 if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5223 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5224 else
5225 {
5226 assert(res);
5227
5228 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5229 conf->bind.ss.ss_family = res->ai_family;
5230 conf->bind.ss_len = res->ai_addrlen;
5231 freeaddrinfo(res);
5232 }
5233 }
5234
5235 conf_add_class_to_conf(conf, block_state.class.buf);
5236 lookup_confhost(conf);
5237 }
5238 #line 5239 "conf_parser.c" /* yacc.c:1646 */
5239 break;
5240
5241 case 399:
5242 #line 2169 "conf_parser.y" /* yacc.c:1646 */
5243 {
5244 if (conf_parser_ctx.pass == 2)
5245 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5246 }
5247 #line 5248 "conf_parser.c" /* yacc.c:1646 */
5248 break;
5249
5250 case 400:
5251 #line 2175 "conf_parser.y" /* yacc.c:1646 */
5252 {
5253 if (conf_parser_ctx.pass == 2)
5254 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5255 }
5256 #line 5257 "conf_parser.c" /* yacc.c:1646 */
5257 break;
5258
5259 case 401:
5260 #line 2181 "conf_parser.y" /* yacc.c:1646 */
5261 {
5262 if (conf_parser_ctx.pass == 2)
5263 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5264 }
5265 #line 5266 "conf_parser.c" /* yacc.c:1646 */
5266 break;
5267
5268 case 402:
5269 #line 2187 "conf_parser.y" /* yacc.c:1646 */
5270 {
5271 if (conf_parser_ctx.pass != 2)
5272 break;
5273
5274 if ((yyvsp[-1].string)[0] == ':')
5275 conf_error_report("Server passwords cannot begin with a colon");
5276 else if (strchr((yyvsp[-1].string), ' '))
5277 conf_error_report("Server passwords cannot contain spaces");
5278 else
5279 strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5280 }
5281 #line 5282 "conf_parser.c" /* yacc.c:1646 */
5282 break;
5283
5284 case 403:
5285 #line 2200 "conf_parser.y" /* yacc.c:1646 */
5286 {
5287 if (conf_parser_ctx.pass != 2)
5288 break;
5289
5290 if ((yyvsp[-1].string)[0] == ':')
5291 conf_error_report("Server passwords cannot begin with a colon");
5292 else if (strchr((yyvsp[-1].string), ' '))
5293 conf_error_report("Server passwords cannot contain spaces");
5294 else
5295 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5296 }
5297 #line 5298 "conf_parser.c" /* yacc.c:1646 */
5298 break;
5299
5300 case 404:
5301 #line 2213 "conf_parser.y" /* yacc.c:1646 */
5302 {
5303 if (conf_parser_ctx.pass == 2)
5304 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5305 }
5306 #line 5307 "conf_parser.c" /* yacc.c:1646 */
5307 break;
5308
5309 case 405:
5310 #line 2219 "conf_parser.y" /* yacc.c:1646 */
5311 {
5312 if (conf_parser_ctx.pass == 2)
5313 block_state.port.value = (yyvsp[-1].number);
5314 }
5315 #line 5316 "conf_parser.c" /* yacc.c:1646 */
5316 break;
5317
5318 case 406:
5319 #line 2225 "conf_parser.y" /* yacc.c:1646 */
5320 {
5321 if (conf_parser_ctx.pass == 2)
5322 block_state.aftype.value = AF_INET;
5323 }
5324 #line 5325 "conf_parser.c" /* yacc.c:1646 */
5325 break;
5326
5327 case 407:
5328 #line 2229 "conf_parser.y" /* yacc.c:1646 */
5329 {
5330 #ifdef IPV6
5331 if (conf_parser_ctx.pass == 2)
5332 block_state.aftype.value = AF_INET6;
5333 #endif
5334 }
5335 #line 5336 "conf_parser.c" /* yacc.c:1646 */
5336 break;
5337
5338 case 408:
5339 #line 2237 "conf_parser.y" /* yacc.c:1646 */
5340 {
5341 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5342 }
5343 #line 5344 "conf_parser.c" /* yacc.c:1646 */
5344 break;
5345
5346 case 412:
5347 #line 2243 "conf_parser.y" /* yacc.c:1646 */
5348 {
5349 if (conf_parser_ctx.pass == 2)
5350 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5351 }
5352 #line 5353 "conf_parser.c" /* yacc.c:1646 */
5353 break;
5354
5355 case 413:
5356 #line 2247 "conf_parser.y" /* yacc.c:1646 */
5357 {
5358 if (conf_parser_ctx.pass == 2)
5359 block_state.flags.value |= CONF_FLAGS_SSL;
5360 }
5361 #line 5362 "conf_parser.c" /* yacc.c:1646 */
5362 break;
5363
5364 case 414:
5365 #line 2253 "conf_parser.y" /* yacc.c:1646 */
5366 {
5367 if (conf_parser_ctx.pass == 2)
5368 {
5369 if (yylval.number)
5370 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5371 else
5372 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5373 }
5374 }
5375 #line 5376 "conf_parser.c" /* yacc.c:1646 */
5376 break;
5377
5378 case 415:
5379 #line 2264 "conf_parser.y" /* yacc.c:1646 */
5380 {
5381 if (conf_parser_ctx.pass == 2)
5382 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5383 }
5384 #line 5385 "conf_parser.c" /* yacc.c:1646 */
5385 break;
5386
5387 case 416:
5388 #line 2270 "conf_parser.y" /* yacc.c:1646 */
5389 {
5390 if (conf_parser_ctx.pass == 2)
5391 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5392 }
5393 #line 5394 "conf_parser.c" /* yacc.c:1646 */
5394 break;
5395
5396 case 417:
5397 #line 2276 "conf_parser.y" /* yacc.c:1646 */
5398 {
5399 if (conf_parser_ctx.pass == 2)
5400 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5401 }
5402 #line 5403 "conf_parser.c" /* yacc.c:1646 */
5403 break;
5404
5405 case 418:
5406 #line 2282 "conf_parser.y" /* yacc.c:1646 */
5407 {
5408 #ifdef HAVE_LIBCRYPTO
5409 if (conf_parser_ctx.pass == 2)
5410 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5411 #else
5412 if (conf_parser_ctx.pass == 2)
5413 conf_error_report("Ignoring connect::ciphers -- no OpenSSL support");
5414 #endif
5415 }
5416 #line 5417 "conf_parser.c" /* yacc.c:1646 */
5417 break;
5418
5419 case 419:
5420 #line 2297 "conf_parser.y" /* yacc.c:1646 */
5421 {
5422 if (conf_parser_ctx.pass == 2)
5423 reset_block_state();
5424 }
5425 #line 5426 "conf_parser.c" /* yacc.c:1646 */
5426 break;
5427
5428 case 420:
5429 #line 2301 "conf_parser.y" /* yacc.c:1646 */
5430 {
5431 struct MaskItem *conf = NULL;
5432
5433 if (conf_parser_ctx.pass != 2)
5434 break;
5435
5436 if (!block_state.user.buf[0] ||
5437 !block_state.host.buf[0])
5438 break;
5439
5440 conf = conf_make(CONF_KLINE);
5441 conf->user = xstrdup(block_state.user.buf);
5442 conf->host = xstrdup(block_state.host.buf);
5443
5444 if (block_state.rpass.buf[0])
5445 conf->reason = xstrdup(block_state.rpass.buf);
5446 else
5447 conf->reason = xstrdup(CONF_NOREASON);
5448 add_conf_by_address(CONF_KLINE, conf);
5449 }
5450 #line 5451 "conf_parser.c" /* yacc.c:1646 */
5451 break;
5452
5453 case 426:
5454 #line 2326 "conf_parser.y" /* yacc.c:1646 */
5455 {
5456
5457 if (conf_parser_ctx.pass == 2)
5458 {
5459 struct split_nuh_item nuh;
5460
5461 nuh.nuhmask = yylval.string;
5462 nuh.nickptr = NULL;
5463 nuh.userptr = block_state.user.buf;
5464 nuh.hostptr = block_state.host.buf;
5465
5466 nuh.nicksize = 0;
5467 nuh.usersize = sizeof(block_state.user.buf);
5468 nuh.hostsize = sizeof(block_state.host.buf);
5469
5470 split_nuh(&nuh);
5471 }
5472 }
5473 #line 5474 "conf_parser.c" /* yacc.c:1646 */
5474 break;
5475
5476 case 427:
5477 #line 2346 "conf_parser.y" /* yacc.c:1646 */
5478 {
5479 if (conf_parser_ctx.pass == 2)
5480 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5481 }
5482 #line 5483 "conf_parser.c" /* yacc.c:1646 */
5483 break;
5484
5485 case 428:
5486 #line 2355 "conf_parser.y" /* yacc.c:1646 */
5487 {
5488 if (conf_parser_ctx.pass == 2)
5489 reset_block_state();
5490 }
5491 #line 5492 "conf_parser.c" /* yacc.c:1646 */
5492 break;
5493
5494 case 429:
5495 #line 2359 "conf_parser.y" /* yacc.c:1646 */
5496 {
5497 struct MaskItem *conf = NULL;
5498
5499 if (conf_parser_ctx.pass != 2)
5500 break;
5501
5502 if (!block_state.addr.buf[0])
5503 break;
5504
5505 if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5506 {
5507 conf = conf_make(CONF_DLINE);
5508 conf->host = xstrdup(block_state.addr.buf);
5509
5510 if (block_state.rpass.buf[0])
5511 conf->reason = xstrdup(block_state.rpass.buf);
5512 else
5513 conf->reason = xstrdup(CONF_NOREASON);
5514 add_conf_by_address(CONF_DLINE, conf);
5515 }
5516 }
5517 #line 5518 "conf_parser.c" /* yacc.c:1646 */
5518 break;
5519
5520 case 435:
5521 #line 2385 "conf_parser.y" /* yacc.c:1646 */
5522 {
5523 if (conf_parser_ctx.pass == 2)
5524 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5525 }
5526 #line 5527 "conf_parser.c" /* yacc.c:1646 */
5527 break;
5528
5529 case 436:
5530 #line 2391 "conf_parser.y" /* yacc.c:1646 */
5531 {
5532 if (conf_parser_ctx.pass == 2)
5533 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5534 }
5535 #line 5536 "conf_parser.c" /* yacc.c:1646 */
5536 break;
5537
5538 case 442:
5539 #line 2405 "conf_parser.y" /* yacc.c:1646 */
5540 {
5541 if (conf_parser_ctx.pass == 2)
5542 {
5543 if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5544 {
5545 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5546 conf->host = xstrdup(yylval.string);
5547
5548 add_conf_by_address(CONF_EXEMPT, conf);
5549 }
5550 }
5551 }
5552 #line 5553 "conf_parser.c" /* yacc.c:1646 */
5553 break;
5554
5555 case 443:
5556 #line 2422 "conf_parser.y" /* yacc.c:1646 */
5557 {
5558 if (conf_parser_ctx.pass == 2)
5559 reset_block_state();
5560 }
5561 #line 5562 "conf_parser.c" /* yacc.c:1646 */
5562 break;
5563
5564 case 444:
5565 #line 2426 "conf_parser.y" /* yacc.c:1646 */
5566 {
5567 struct MaskItem *conf = NULL;
5568
5569 if (conf_parser_ctx.pass != 2)
5570 break;
5571
5572 if (!block_state.name.buf[0])
5573 break;
5574
5575 conf = conf_make(CONF_XLINE);
5576 conf->name = xstrdup(block_state.name.buf);
5577
5578 if (block_state.rpass.buf[0])
5579 conf->reason = xstrdup(block_state.rpass.buf);
5580 else
5581 conf->reason = xstrdup(CONF_NOREASON);
5582 }
5583 #line 5584 "conf_parser.c" /* yacc.c:1646 */
5584 break;
5585
5586 case 450:
5587 #line 2448 "conf_parser.y" /* yacc.c:1646 */
5588 {
5589 if (conf_parser_ctx.pass == 2)
5590 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5591 }
5592 #line 5593 "conf_parser.c" /* yacc.c:1646 */
5593 break;
5594
5595 case 451:
5596 #line 2454 "conf_parser.y" /* yacc.c:1646 */
5597 {
5598 if (conf_parser_ctx.pass == 2)
5599 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5600 }
5601 #line 5602 "conf_parser.c" /* yacc.c:1646 */
5602 break;
5603
5604 case 504:
5605 #line 2518 "conf_parser.y" /* yacc.c:1646 */
5606 {
5607 ConfigFileEntry.max_watch = (yyvsp[-1].number);
5608 }
5609 #line 5610 "conf_parser.c" /* yacc.c:1646 */
5610 break;
5611
5612 case 505:
5613 #line 2523 "conf_parser.y" /* yacc.c:1646 */
5614 {
5615 if (conf_parser_ctx.pass == 2)
5616 ConfigFileEntry.cycle_on_host_change = yylval.number;
5617 }
5618 #line 5619 "conf_parser.c" /* yacc.c:1646 */
5619 break;
5620
5621 case 506:
5622 #line 2529 "conf_parser.y" /* yacc.c:1646 */
5623 {
5624 if (conf_parser_ctx.pass == 2)
5625 ConfigFileEntry.glines = yylval.number;
5626 }
5627 #line 5628 "conf_parser.c" /* yacc.c:1646 */
5628 break;
5629
5630 case 507:
5631 #line 2535 "conf_parser.y" /* yacc.c:1646 */
5632 {
5633 if (conf_parser_ctx.pass == 2)
5634 ConfigFileEntry.gline_time = (yyvsp[-1].number);
5635 }
5636 #line 5637 "conf_parser.c" /* yacc.c:1646 */
5637 break;
5638
5639 case 508:
5640 #line 2541 "conf_parser.y" /* yacc.c:1646 */
5641 {
5642 if (conf_parser_ctx.pass == 2)
5643 ConfigFileEntry.gline_request_time = (yyvsp[-1].number);
5644 }
5645 #line 5646 "conf_parser.c" /* yacc.c:1646 */
5646 break;
5647
5648 case 509:
5649 #line 2547 "conf_parser.y" /* yacc.c:1646 */
5650 {
5651 ConfigFileEntry.gline_min_cidr = (yyvsp[-1].number);
5652 }
5653 #line 5654 "conf_parser.c" /* yacc.c:1646 */
5654 break;
5655
5656 case 510:
5657 #line 2552 "conf_parser.y" /* yacc.c:1646 */
5658 {
5659 ConfigFileEntry.gline_min_cidr6 = (yyvsp[-1].number);
5660 }
5661 #line 5662 "conf_parser.c" /* yacc.c:1646 */
5662 break;
5663
5664 case 511:
5665 #line 2557 "conf_parser.y" /* yacc.c:1646 */
5666 {
5667 ConfigFileEntry.tkline_expire_notices = yylval.number;
5668 }
5669 #line 5670 "conf_parser.c" /* yacc.c:1646 */
5670 break;
5671
5672 case 512:
5673 #line 2562 "conf_parser.y" /* yacc.c:1646 */
5674 {
5675 ConfigFileEntry.kill_chase_time_limit = (yyvsp[-1].number);
5676 }
5677 #line 5678 "conf_parser.c" /* yacc.c:1646 */
5678 break;
5679
5680 case 513:
5681 #line 2567 "conf_parser.y" /* yacc.c:1646 */
5682 {
5683 ConfigFileEntry.hide_spoof_ips = yylval.number;
5684 }
5685 #line 5686 "conf_parser.c" /* yacc.c:1646 */
5686 break;
5687
5688 case 514:
5689 #line 2572 "conf_parser.y" /* yacc.c:1646 */
5690 {
5691 ConfigFileEntry.ignore_bogus_ts = yylval.number;
5692 }
5693 #line 5694 "conf_parser.c" /* yacc.c:1646 */
5694 break;
5695
5696 case 515:
5697 #line 2577 "conf_parser.y" /* yacc.c:1646 */
5698 {
5699 ConfigFileEntry.failed_oper_notice = yylval.number;
5700 }
5701 #line 5702 "conf_parser.c" /* yacc.c:1646 */
5702 break;
5703
5704 case 516:
5705 #line 2582 "conf_parser.y" /* yacc.c:1646 */
5706 {
5707 ConfigFileEntry.anti_nick_flood = yylval.number;
5708 }
5709 #line 5710 "conf_parser.c" /* yacc.c:1646 */
5710 break;
5711
5712 case 517:
5713 #line 2587 "conf_parser.y" /* yacc.c:1646 */
5714 {
5715 ConfigFileEntry.max_nick_time = (yyvsp[-1].number);
5716 }
5717 #line 5718 "conf_parser.c" /* yacc.c:1646 */
5718 break;
5719
5720 case 518:
5721 #line 2592 "conf_parser.y" /* yacc.c:1646 */
5722 {
5723 ConfigFileEntry.max_nick_changes = (yyvsp[-1].number);
5724 }
5725 #line 5726 "conf_parser.c" /* yacc.c:1646 */
5726 break;
5727
5728 case 519:
5729 #line 2597 "conf_parser.y" /* yacc.c:1646 */
5730 {
5731 ConfigFileEntry.max_accept = (yyvsp[-1].number);
5732 }
5733 #line 5734 "conf_parser.c" /* yacc.c:1646 */
5734 break;
5735
5736 case 520:
5737 #line 2602 "conf_parser.y" /* yacc.c:1646 */
5738 {
5739 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[-1].number);
5740 }
5741 #line 5742 "conf_parser.c" /* yacc.c:1646 */
5742 break;
5743
5744 case 521:
5745 #line 2607 "conf_parser.y" /* yacc.c:1646 */
5746 {
5747 ConfigFileEntry.ts_warn_delta = (yyvsp[-1].number);
5748 }
5749 #line 5750 "conf_parser.c" /* yacc.c:1646 */
5750 break;
5751
5752 case 522:
5753 #line 2612 "conf_parser.y" /* yacc.c:1646 */
5754 {
5755 if (conf_parser_ctx.pass == 2)
5756 ConfigFileEntry.ts_max_delta = (yyvsp[-1].number);
5757 }
5758 #line 5759 "conf_parser.c" /* yacc.c:1646 */
5759 break;
5760
5761 case 523:
5762 #line 2618 "conf_parser.y" /* yacc.c:1646 */
5763 {
5764 if (((yyvsp[-1].number) > 0) && conf_parser_ctx.pass == 1)
5765 {
5766 ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
5767 ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
5768 ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
5769 exit(0);
5770 }
5771 }
5772 #line 5773 "conf_parser.c" /* yacc.c:1646 */
5773 break;
5774
5775 case 524:
5776 #line 2629 "conf_parser.y" /* yacc.c:1646 */
5777 {
5778 ConfigFileEntry.invisible_on_connect = yylval.number;
5779 }
5780 #line 5781 "conf_parser.c" /* yacc.c:1646 */
5781 break;
5782
5783 case 525:
5784 #line 2634 "conf_parser.y" /* yacc.c:1646 */
5785 {
5786 ConfigFileEntry.warn_no_connect_block = yylval.number;
5787 }
5788 #line 5789 "conf_parser.c" /* yacc.c:1646 */
5789 break;
5790
5791 case 526:
5792 #line 2639 "conf_parser.y" /* yacc.c:1646 */
5793 {
5794 ConfigFileEntry.stats_e_disabled = yylval.number;
5795 }
5796 #line 5797 "conf_parser.c" /* yacc.c:1646 */
5797 break;
5798
5799 case 527:
5800 #line 2644 "conf_parser.y" /* yacc.c:1646 */
5801 {
5802 ConfigFileEntry.stats_o_oper_only = yylval.number;
5803 }
5804 #line 5805 "conf_parser.c" /* yacc.c:1646 */
5805 break;
5806
5807 case 528:
5808 #line 2649 "conf_parser.y" /* yacc.c:1646 */
5809 {
5810 ConfigFileEntry.stats_P_oper_only = yylval.number;
5811 }
5812 #line 5813 "conf_parser.c" /* yacc.c:1646 */
5813 break;
5814
5815 case 529:
5816 #line 2654 "conf_parser.y" /* yacc.c:1646 */
5817 {
5818 ConfigFileEntry.stats_u_oper_only = yylval.number;
5819 }
5820 #line 5821 "conf_parser.c" /* yacc.c:1646 */
5821 break;
5822
5823 case 530:
5824 #line 2659 "conf_parser.y" /* yacc.c:1646 */
5825 {
5826 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5827 }
5828 #line 5829 "conf_parser.c" /* yacc.c:1646 */
5829 break;
5830
5831 case 531:
5832 #line 2662 "conf_parser.y" /* yacc.c:1646 */
5833 {
5834 ConfigFileEntry.stats_k_oper_only = 1;
5835 }
5836 #line 5837 "conf_parser.c" /* yacc.c:1646 */
5837 break;
5838
5839 case 532:
5840 #line 2667 "conf_parser.y" /* yacc.c:1646 */
5841 {
5842 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5843 }
5844 #line 5845 "conf_parser.c" /* yacc.c:1646 */
5845 break;
5846
5847 case 533:
5848 #line 2670 "conf_parser.y" /* yacc.c:1646 */
5849 {
5850 ConfigFileEntry.stats_i_oper_only = 1;
5851 }
5852 #line 5853 "conf_parser.c" /* yacc.c:1646 */
5853 break;
5854
5855 case 534:
5856 #line 2675 "conf_parser.y" /* yacc.c:1646 */
5857 {
5858 ConfigFileEntry.pace_wait = (yyvsp[-1].number);
5859 }
5860 #line 5861 "conf_parser.c" /* yacc.c:1646 */
5861 break;
5862
5863 case 535:
5864 #line 2680 "conf_parser.y" /* yacc.c:1646 */
5865 {
5866 ConfigFileEntry.caller_id_wait = (yyvsp[-1].number);
5867 }
5868 #line 5869 "conf_parser.c" /* yacc.c:1646 */
5869 break;
5870
5871 case 536:
5872 #line 2685 "conf_parser.y" /* yacc.c:1646 */
5873 {
5874 ConfigFileEntry.opers_bypass_callerid = yylval.number;
5875 }
5876 #line 5877 "conf_parser.c" /* yacc.c:1646 */
5877 break;
5878
5879 case 537:
5880 #line 2690 "conf_parser.y" /* yacc.c:1646 */
5881 {
5882 ConfigFileEntry.pace_wait_simple = (yyvsp[-1].number);
5883 }
5884 #line 5885 "conf_parser.c" /* yacc.c:1646 */
5885 break;
5886
5887 case 538:
5888 #line 2695 "conf_parser.y" /* yacc.c:1646 */
5889 {
5890 ConfigFileEntry.short_motd = yylval.number;
5891 }
5892 #line 5893 "conf_parser.c" /* yacc.c:1646 */
5893 break;
5894
5895 case 539:
5896 #line 2700 "conf_parser.y" /* yacc.c:1646 */
5897 {
5898 ConfigFileEntry.no_oper_flood = yylval.number;
5899 }
5900 #line 5901 "conf_parser.c" /* yacc.c:1646 */
5901 break;
5902
5903 case 540:
5904 #line 2705 "conf_parser.y" /* yacc.c:1646 */
5905 {
5906 ConfigFileEntry.true_no_oper_flood = yylval.number;
5907 }
5908 #line 5909 "conf_parser.c" /* yacc.c:1646 */
5909 break;
5910
5911 case 541:
5912 #line 2710 "conf_parser.y" /* yacc.c:1646 */
5913 {
5914 ConfigFileEntry.oper_pass_resv = yylval.number;
5915 }
5916 #line 5917 "conf_parser.c" /* yacc.c:1646 */
5917 break;
5918
5919 case 542:
5920 #line 2715 "conf_parser.y" /* yacc.c:1646 */
5921 {
5922 ConfigFileEntry.dots_in_ident = (yyvsp[-1].number);
5923 }
5924 #line 5925 "conf_parser.c" /* yacc.c:1646 */
5925 break;
5926
5927 case 543:
5928 #line 2720 "conf_parser.y" /* yacc.c:1646 */
5929 {
5930 ConfigFileEntry.max_targets = (yyvsp[-1].number);
5931 }
5932 #line 5933 "conf_parser.c" /* yacc.c:1646 */
5933 break;
5934
5935 case 544:
5936 #line 2725 "conf_parser.y" /* yacc.c:1646 */
5937 {
5938 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
5939 {
5940 MyFree(ConfigFileEntry.service_name);
5941 ConfigFileEntry.service_name = xstrdup(yylval.string);
5942 }
5943 }
5944 #line 5945 "conf_parser.c" /* yacc.c:1646 */
5945 break;
5946
5947 case 545:
5948 #line 2734 "conf_parser.y" /* yacc.c:1646 */
5949 {
5950 ConfigFileEntry.ping_cookie = yylval.number;
5951 }
5952 #line 5953 "conf_parser.c" /* yacc.c:1646 */
5953 break;
5954
5955 case 546:
5956 #line 2739 "conf_parser.y" /* yacc.c:1646 */
5957 {
5958 ConfigFileEntry.disable_auth = yylval.number;
5959 }
5960 #line 5961 "conf_parser.c" /* yacc.c:1646 */
5961 break;
5962
5963 case 547:
5964 #line 2744 "conf_parser.y" /* yacc.c:1646 */
5965 {
5966 ConfigFileEntry.throttle_count = (yyvsp[-1].number);
5967 }
5968 #line 5969 "conf_parser.c" /* yacc.c:1646 */
5969 break;
5970
5971 case 548:
5972 #line 2749 "conf_parser.y" /* yacc.c:1646 */
5973 {
5974 ConfigFileEntry.throttle_time = (yyvsp[-1].number);
5975 }
5976 #line 5977 "conf_parser.c" /* yacc.c:1646 */
5977 break;
5978
5979 case 549:
5980 #line 2754 "conf_parser.y" /* yacc.c:1646 */
5981 {
5982 ConfigFileEntry.oper_umodes = 0;
5983 }
5984 #line 5985 "conf_parser.c" /* yacc.c:1646 */
5985 break;
5986
5987 case 553:
5988 #line 2760 "conf_parser.y" /* yacc.c:1646 */
5989 {
5990 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
5991 }
5992 #line 5993 "conf_parser.c" /* yacc.c:1646 */
5993 break;
5994
5995 case 554:
5996 #line 2763 "conf_parser.y" /* yacc.c:1646 */
5997 {
5998 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
5999 }
6000 #line 6001 "conf_parser.c" /* yacc.c:1646 */
6001 break;
6002
6003 case 555:
6004 #line 2766 "conf_parser.y" /* yacc.c:1646 */
6005 {
6006 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6007 }
6008 #line 6009 "conf_parser.c" /* yacc.c:1646 */
6009 break;
6010
6011 case 556:
6012 #line 2769 "conf_parser.y" /* yacc.c:1646 */
6013 {
6014 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6015 }
6016 #line 6017 "conf_parser.c" /* yacc.c:1646 */
6017 break;
6018
6019 case 557:
6020 #line 2772 "conf_parser.y" /* yacc.c:1646 */
6021 {
6022 ConfigFileEntry.oper_umodes |= UMODE_FULL;
6023 }
6024 #line 6025 "conf_parser.c" /* yacc.c:1646 */
6025 break;
6026
6027 case 558:
6028 #line 2775 "conf_parser.y" /* yacc.c:1646 */
6029 {
6030 ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6031 }
6032 #line 6033 "conf_parser.c" /* yacc.c:1646 */
6033 break;
6034
6035 case 559:
6036 #line 2778 "conf_parser.y" /* yacc.c:1646 */
6037 {
6038 ConfigFileEntry.oper_umodes |= UMODE_HIDECHANS;
6039 }
6040 #line 6041 "conf_parser.c" /* yacc.c:1646 */
6041 break;
6042
6043 case 560:
6044 #line 2781 "conf_parser.y" /* yacc.c:1646 */
6045 {
6046 ConfigFileEntry.oper_umodes |= UMODE_HIDEIDLE;
6047 }
6048 #line 6049 "conf_parser.c" /* yacc.c:1646 */
6049 break;
6050
6051 case 561:
6052 #line 2784 "conf_parser.y" /* yacc.c:1646 */
6053 {
6054 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6055 }
6056 #line 6057 "conf_parser.c" /* yacc.c:1646 */
6057 break;
6058
6059 case 562:
6060 #line 2787 "conf_parser.y" /* yacc.c:1646 */
6061 {
6062 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6063 }
6064 #line 6065 "conf_parser.c" /* yacc.c:1646 */
6065 break;
6066
6067 case 563:
6068 #line 2790 "conf_parser.y" /* yacc.c:1646 */
6069 {
6070 ConfigFileEntry.oper_umodes |= UMODE_REJ;
6071 }
6072 #line 6073 "conf_parser.c" /* yacc.c:1646 */
6073 break;
6074
6075 case 564:
6076 #line 2793 "conf_parser.y" /* yacc.c:1646 */
6077 {
6078 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6079 }
6080 #line 6081 "conf_parser.c" /* yacc.c:1646 */
6081 break;
6082
6083 case 565:
6084 #line 2796 "conf_parser.y" /* yacc.c:1646 */
6085 {
6086 ConfigFileEntry.oper_umodes |= UMODE_SPY;
6087 }
6088 #line 6089 "conf_parser.c" /* yacc.c:1646 */
6089 break;
6090
6091 case 566:
6092 #line 2799 "conf_parser.y" /* yacc.c:1646 */
6093 {
6094 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6095 }
6096 #line 6097 "conf_parser.c" /* yacc.c:1646 */
6097 break;
6098
6099 case 567:
6100 #line 2802 "conf_parser.y" /* yacc.c:1646 */
6101 {
6102 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6103 }
6104 #line 6105 "conf_parser.c" /* yacc.c:1646 */
6105 break;
6106
6107 case 568:
6108 #line 2805 "conf_parser.y" /* yacc.c:1646 */
6109 {
6110 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6111 }
6112 #line 6113 "conf_parser.c" /* yacc.c:1646 */
6113 break;
6114
6115 case 569:
6116 #line 2808 "conf_parser.y" /* yacc.c:1646 */
6117 {
6118 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6119 }
6120 #line 6121 "conf_parser.c" /* yacc.c:1646 */
6121 break;
6122
6123 case 570:
6124 #line 2811 "conf_parser.y" /* yacc.c:1646 */
6125 {
6126 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6127 }
6128 #line 6129 "conf_parser.c" /* yacc.c:1646 */
6129 break;
6130
6131 case 571:
6132 #line 2814 "conf_parser.y" /* yacc.c:1646 */
6133 {
6134 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6135 }
6136 #line 6137 "conf_parser.c" /* yacc.c:1646 */
6137 break;
6138
6139 case 572:
6140 #line 2817 "conf_parser.y" /* yacc.c:1646 */
6141 {
6142 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6143 }
6144 #line 6145 "conf_parser.c" /* yacc.c:1646 */
6145 break;
6146
6147 case 573:
6148 #line 2820 "conf_parser.y" /* yacc.c:1646 */
6149 {
6150 ConfigFileEntry.oper_umodes |= UMODE_REGONLY;
6151 }
6152 #line 6153 "conf_parser.c" /* yacc.c:1646 */
6153 break;
6154
6155 case 574:
6156 #line 2823 "conf_parser.y" /* yacc.c:1646 */
6157 {
6158 ConfigFileEntry.oper_umodes |= UMODE_FARCONNECT;
6159 }
6160 #line 6161 "conf_parser.c" /* yacc.c:1646 */
6161 break;
6162
6163 case 575:
6164 #line 2828 "conf_parser.y" /* yacc.c:1646 */
6165 {
6166 ConfigFileEntry.oper_only_umodes = 0;
6167 }
6168 #line 6169 "conf_parser.c" /* yacc.c:1646 */
6169 break;
6170
6171 case 579:
6172 #line 2834 "conf_parser.y" /* yacc.c:1646 */
6173 {
6174 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6175 }
6176 #line 6177 "conf_parser.c" /* yacc.c:1646 */
6177 break;
6178
6179 case 580:
6180 #line 2837 "conf_parser.y" /* yacc.c:1646 */
6181 {
6182 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6183 }
6184 #line 6185 "conf_parser.c" /* yacc.c:1646 */
6185 break;
6186
6187 case 581:
6188 #line 2840 "conf_parser.y" /* yacc.c:1646 */
6189 {
6190 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6191 }
6192 #line 6193 "conf_parser.c" /* yacc.c:1646 */
6193 break;
6194
6195 case 582:
6196 #line 2843 "conf_parser.y" /* yacc.c:1646 */
6197 {
6198 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6199 }
6200 #line 6201 "conf_parser.c" /* yacc.c:1646 */
6201 break;
6202
6203 case 583:
6204 #line 2846 "conf_parser.y" /* yacc.c:1646 */
6205 {
6206 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6207 }
6208 #line 6209 "conf_parser.c" /* yacc.c:1646 */
6209 break;
6210
6211 case 584:
6212 #line 2849 "conf_parser.y" /* yacc.c:1646 */
6213 {
6214 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6215 }
6216 #line 6217 "conf_parser.c" /* yacc.c:1646 */
6217 break;
6218
6219 case 585:
6220 #line 2852 "conf_parser.y" /* yacc.c:1646 */
6221 {
6222 ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6223 }
6224 #line 6225 "conf_parser.c" /* yacc.c:1646 */
6225 break;
6226
6227 case 586:
6228 #line 2855 "conf_parser.y" /* yacc.c:1646 */
6229 {
6230 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6231 }
6232 #line 6233 "conf_parser.c" /* yacc.c:1646 */
6233 break;
6234
6235 case 587:
6236 #line 2858 "conf_parser.y" /* yacc.c:1646 */
6237 {
6238 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6239 }
6240 #line 6241 "conf_parser.c" /* yacc.c:1646 */
6241 break;
6242
6243 case 588:
6244 #line 2861 "conf_parser.y" /* yacc.c:1646 */
6245 {
6246 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6247 }
6248 #line 6249 "conf_parser.c" /* yacc.c:1646 */
6249 break;
6250
6251 case 589:
6252 #line 2864 "conf_parser.y" /* yacc.c:1646 */
6253 {
6254 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6255 }
6256 #line 6257 "conf_parser.c" /* yacc.c:1646 */
6257 break;
6258
6259 case 590:
6260 #line 2867 "conf_parser.y" /* yacc.c:1646 */
6261 {
6262 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6263 }
6264 #line 6265 "conf_parser.c" /* yacc.c:1646 */
6265 break;
6266
6267 case 591:
6268 #line 2870 "conf_parser.y" /* yacc.c:1646 */
6269 {
6270 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6271 }
6272 #line 6273 "conf_parser.c" /* yacc.c:1646 */
6273 break;
6274
6275 case 592:
6276 #line 2873 "conf_parser.y" /* yacc.c:1646 */
6277 {
6278 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6279 }
6280 #line 6281 "conf_parser.c" /* yacc.c:1646 */
6281 break;
6282
6283 case 593:
6284 #line 2876 "conf_parser.y" /* yacc.c:1646 */
6285 {
6286 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6287 }
6288 #line 6289 "conf_parser.c" /* yacc.c:1646 */
6289 break;
6290
6291 case 594:
6292 #line 2879 "conf_parser.y" /* yacc.c:1646 */
6293 {
6294 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6295 }
6296 #line 6297 "conf_parser.c" /* yacc.c:1646 */
6297 break;
6298
6299 case 595:
6300 #line 2882 "conf_parser.y" /* yacc.c:1646 */
6301 {
6302 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6303 }
6304 #line 6305 "conf_parser.c" /* yacc.c:1646 */
6305 break;
6306
6307 case 596:
6308 #line 2885 "conf_parser.y" /* yacc.c:1646 */
6309 {
6310 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6311 }
6312 #line 6313 "conf_parser.c" /* yacc.c:1646 */
6313 break;
6314
6315 case 597:
6316 #line 2888 "conf_parser.y" /* yacc.c:1646 */
6317 {
6318 ConfigFileEntry.oper_only_umodes |= UMODE_REGONLY;
6319 }
6320 #line 6321 "conf_parser.c" /* yacc.c:1646 */
6321 break;
6322
6323 case 598:
6324 #line 2891 "conf_parser.y" /* yacc.c:1646 */
6325 {
6326 ConfigFileEntry.oper_only_umodes |= UMODE_FARCONNECT;
6327 }
6328 #line 6329 "conf_parser.c" /* yacc.c:1646 */
6329 break;
6330
6331 case 599:
6332 #line 2896 "conf_parser.y" /* yacc.c:1646 */
6333 {
6334 ConfigFileEntry.min_nonwildcard = (yyvsp[-1].number);
6335 }
6336 #line 6337 "conf_parser.c" /* yacc.c:1646 */
6337 break;
6338
6339 case 600:
6340 #line 2901 "conf_parser.y" /* yacc.c:1646 */
6341 {
6342 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[-1].number);
6343 }
6344 #line 6345 "conf_parser.c" /* yacc.c:1646 */
6345 break;
6346
6347 case 601:
6348 #line 2906 "conf_parser.y" /* yacc.c:1646 */
6349 {
6350 ConfigFileEntry.default_floodcount = (yyvsp[-1].number);
6351 }
6352 #line 6353 "conf_parser.c" /* yacc.c:1646 */
6353 break;
6354
6355 case 620:
6356 #line 2935 "conf_parser.y" /* yacc.c:1646 */
6357 {
6358 ConfigChannel.disable_fake_channels = yylval.number;
6359 }
6360 #line 6361 "conf_parser.c" /* yacc.c:1646 */
6361 break;
6362
6363 case 621:
6364 #line 2940 "conf_parser.y" /* yacc.c:1646 */
6365 {
6366 ConfigChannel.invite_client_count = (yyvsp[-1].number);
6367 }
6368 #line 6369 "conf_parser.c" /* yacc.c:1646 */
6369 break;
6370
6371 case 622:
6372 #line 2945 "conf_parser.y" /* yacc.c:1646 */
6373 {
6374 ConfigChannel.invite_client_time = (yyvsp[-1].number);
6375 }
6376 #line 6377 "conf_parser.c" /* yacc.c:1646 */
6377 break;
6378
6379 case 623:
6380 #line 2950 "conf_parser.y" /* yacc.c:1646 */
6381 {
6382 ConfigChannel.knock_client_count = (yyvsp[-1].number);
6383 }
6384 #line 6385 "conf_parser.c" /* yacc.c:1646 */
6385 break;
6386
6387 case 624:
6388 #line 2955 "conf_parser.y" /* yacc.c:1646 */
6389 {
6390 ConfigChannel.knock_client_time = (yyvsp[-1].number);
6391 }
6392 #line 6393 "conf_parser.c" /* yacc.c:1646 */
6393 break;
6394
6395 case 625:
6396 #line 2960 "conf_parser.y" /* yacc.c:1646 */
6397 {
6398 ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6399 }
6400 #line 6401 "conf_parser.c" /* yacc.c:1646 */
6401 break;
6402
6403 case 626:
6404 #line 2965 "conf_parser.y" /* yacc.c:1646 */
6405 {
6406 ConfigChannel.max_channels = (yyvsp[-1].number);
6407 }
6408 #line 6409 "conf_parser.c" /* yacc.c:1646 */
6409 break;
6410
6411 case 627:
6412 #line 2970 "conf_parser.y" /* yacc.c:1646 */
6413 {
6414 ConfigChannel.max_bans = (yyvsp[-1].number);
6415 }
6416 #line 6417 "conf_parser.c" /* yacc.c:1646 */
6417 break;
6418
6419 case 628:
6420 #line 2975 "conf_parser.y" /* yacc.c:1646 */
6421 {
6422 ConfigChannel.default_split_user_count = (yyvsp[-1].number);
6423 }
6424 #line 6425 "conf_parser.c" /* yacc.c:1646 */
6425 break;
6426
6427 case 629:
6428 #line 2980 "conf_parser.y" /* yacc.c:1646 */
6429 {
6430 ConfigChannel.default_split_server_count = (yyvsp[-1].number);
6431 }
6432 #line 6433 "conf_parser.c" /* yacc.c:1646 */
6433 break;
6434
6435 case 630:
6436 #line 2985 "conf_parser.y" /* yacc.c:1646 */
6437 {
6438 ConfigChannel.no_create_on_split = yylval.number;
6439 }
6440 #line 6441 "conf_parser.c" /* yacc.c:1646 */
6441 break;
6442
6443 case 631:
6444 #line 2990 "conf_parser.y" /* yacc.c:1646 */
6445 {
6446 ConfigChannel.no_join_on_split = yylval.number;
6447 }
6448 #line 6449 "conf_parser.c" /* yacc.c:1646 */
6449 break;
6450
6451 case 632:
6452 #line 2995 "conf_parser.y" /* yacc.c:1646 */
6453 {
6454 GlobalSetOptions.joinfloodcount = yylval.number;
6455 }
6456 #line 6457 "conf_parser.c" /* yacc.c:1646 */
6457 break;
6458
6459 case 633:
6460 #line 3000 "conf_parser.y" /* yacc.c:1646 */
6461 {
6462 GlobalSetOptions.joinfloodtime = (yyvsp[-1].number);
6463 }
6464 #line 6465 "conf_parser.c" /* yacc.c:1646 */
6465 break;
6466
6467 case 646:
6468 #line 3022 "conf_parser.y" /* yacc.c:1646 */
6469 {
6470 if (conf_parser_ctx.pass == 2)
6471 ConfigServerHide.flatten_links = yylval.number;
6472 }
6473 #line 6474 "conf_parser.c" /* yacc.c:1646 */
6474 break;
6475
6476 case 647:
6477 #line 3028 "conf_parser.y" /* yacc.c:1646 */
6478 {
6479 if (conf_parser_ctx.pass == 2)
6480 ConfigServerHide.disable_remote_commands = yylval.number;
6481 }
6482 #line 6483 "conf_parser.c" /* yacc.c:1646 */
6483 break;
6484
6485 case 648:
6486 #line 3034 "conf_parser.y" /* yacc.c:1646 */
6487 {
6488 if (conf_parser_ctx.pass == 2)
6489 ConfigServerHide.hide_servers = yylval.number;
6490 }
6491 #line 6492 "conf_parser.c" /* yacc.c:1646 */
6492 break;
6493
6494 case 649:
6495 #line 3040 "conf_parser.y" /* yacc.c:1646 */
6496 {
6497 if (conf_parser_ctx.pass == 2)
6498 ConfigServerHide.hide_services = yylval.number;
6499 }
6500 #line 6501 "conf_parser.c" /* yacc.c:1646 */
6501 break;
6502
6503 case 650:
6504 #line 3046 "conf_parser.y" /* yacc.c:1646 */
6505 {
6506 if (conf_parser_ctx.pass == 2)
6507 {
6508 MyFree(ConfigServerHide.hidden_name);
6509 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6510 }
6511 }
6512 #line 6513 "conf_parser.c" /* yacc.c:1646 */
6513 break;
6514
6515 case 651:
6516 #line 3055 "conf_parser.y" /* yacc.c:1646 */
6517 {
6518 if (conf_parser_ctx.pass == 2)
6519 {
6520 if (((yyvsp[-1].number) > 0) && ConfigServerHide.links_disabled == 1)
6521 {
6522 event_write_links_file.when = (yyvsp[-1].number);
6523 event_addish(&event_write_links_file, NULL);
6524 ConfigServerHide.links_disabled = 0;
6525 }
6526
6527 ConfigServerHide.links_delay = (yyvsp[-1].number);
6528 }
6529 }
6530 #line 6531 "conf_parser.c" /* yacc.c:1646 */
6531 break;
6532
6533 case 652:
6534 #line 3070 "conf_parser.y" /* yacc.c:1646 */
6535 {
6536 if (conf_parser_ctx.pass == 2)
6537 ConfigServerHide.hidden = yylval.number;
6538 }
6539 #line 6540 "conf_parser.c" /* yacc.c:1646 */
6540 break;
6541
6542 case 653:
6543 #line 3076 "conf_parser.y" /* yacc.c:1646 */
6544 {
6545 if (conf_parser_ctx.pass == 2)
6546 ConfigServerHide.hide_server_ips = yylval.number;
6547 }
6548 #line 6549 "conf_parser.c" /* yacc.c:1646 */
6549 break;
6550
6551
6552 #line 6553 "conf_parser.c" /* yacc.c:1646 */
6553 default: break;
6554 }
6555 /* User semantic actions sometimes alter yychar, and that requires
6556 that yytoken be updated with the new translation. We take the
6557 approach of translating immediately before every use of yytoken.
6558 One alternative is translating here after every semantic action,
6559 but that translation would be missed if the semantic action invokes
6560 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6561 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6562 incorrect destructor might then be invoked immediately. In the
6563 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6564 to an incorrect destructor call or verbose syntax error message
6565 before the lookahead is translated. */
6566 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6567
6568 YYPOPSTACK (yylen);
6569 yylen = 0;
6570 YY_STACK_PRINT (yyss, yyssp);
6571
6572 *++yyvsp = yyval;
6573
6574 /* Now 'shift' the result of the reduction. Determine what state
6575 that goes to, based on the state we popped back to and the rule
6576 number reduced by. */
6577
6578 yyn = yyr1[yyn];
6579
6580 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6581 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6582 yystate = yytable[yystate];
6583 else
6584 yystate = yydefgoto[yyn - YYNTOKENS];
6585
6586 goto yynewstate;
6587
6588
6589 /*--------------------------------------.
6590 | yyerrlab -- here on detecting error. |
6591 `--------------------------------------*/
6592 yyerrlab:
6593 /* Make sure we have latest lookahead translation. See comments at
6594 user semantic actions for why this is necessary. */
6595 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6596
6597 /* If not already recovering from an error, report this error. */
6598 if (!yyerrstatus)
6599 {
6600 ++yynerrs;
6601 #if ! YYERROR_VERBOSE
6602 yyerror (YY_("syntax error"));
6603 #else
6604 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6605 yyssp, yytoken)
6606 {
6607 char const *yymsgp = YY_("syntax error");
6608 int yysyntax_error_status;
6609 yysyntax_error_status = YYSYNTAX_ERROR;
6610 if (yysyntax_error_status == 0)
6611 yymsgp = yymsg;
6612 else if (yysyntax_error_status == 1)
6613 {
6614 if (yymsg != yymsgbuf)
6615 YYSTACK_FREE (yymsg);
6616 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6617 if (!yymsg)
6618 {
6619 yymsg = yymsgbuf;
6620 yymsg_alloc = sizeof yymsgbuf;
6621 yysyntax_error_status = 2;
6622 }
6623 else
6624 {
6625 yysyntax_error_status = YYSYNTAX_ERROR;
6626 yymsgp = yymsg;
6627 }
6628 }
6629 yyerror (yymsgp);
6630 if (yysyntax_error_status == 2)
6631 goto yyexhaustedlab;
6632 }
6633 # undef YYSYNTAX_ERROR
6634 #endif
6635 }
6636
6637
6638
6639 if (yyerrstatus == 3)
6640 {
6641 /* If just tried and failed to reuse lookahead token after an
6642 error, discard it. */
6643
6644 if (yychar <= YYEOF)
6645 {
6646 /* Return failure if at end of input. */
6647 if (yychar == YYEOF)
6648 YYABORT;
6649 }
6650 else
6651 {
6652 yydestruct ("Error: discarding",
6653 yytoken, &yylval);
6654 yychar = YYEMPTY;
6655 }
6656 }
6657
6658 /* Else will try to reuse lookahead token after shifting the error
6659 token. */
6660 goto yyerrlab1;
6661
6662
6663 /*---------------------------------------------------.
6664 | yyerrorlab -- error raised explicitly by YYERROR. |
6665 `---------------------------------------------------*/
6666 yyerrorlab:
6667
6668 /* Pacify compilers like GCC when the user code never invokes
6669 YYERROR and the label yyerrorlab therefore never appears in user
6670 code. */
6671 if (/*CONSTCOND*/ 0)
6672 goto yyerrorlab;
6673
6674 /* Do not reclaim the symbols of the rule whose action triggered
6675 this YYERROR. */
6676 YYPOPSTACK (yylen);
6677 yylen = 0;
6678 YY_STACK_PRINT (yyss, yyssp);
6679 yystate = *yyssp;
6680 goto yyerrlab1;
6681
6682
6683 /*-------------------------------------------------------------.
6684 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6685 `-------------------------------------------------------------*/
6686 yyerrlab1:
6687 yyerrstatus = 3; /* Each real token shifted decrements this. */
6688
6689 for (;;)
6690 {
6691 yyn = yypact[yystate];
6692 if (!yypact_value_is_default (yyn))
6693 {
6694 yyn += YYTERROR;
6695 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6696 {
6697 yyn = yytable[yyn];
6698 if (0 < yyn)
6699 break;
6700 }
6701 }
6702
6703 /* Pop the current state because it cannot handle the error token. */
6704 if (yyssp == yyss)
6705 YYABORT;
6706
6707
6708 yydestruct ("Error: popping",
6709 yystos[yystate], yyvsp);
6710 YYPOPSTACK (1);
6711 yystate = *yyssp;
6712 YY_STACK_PRINT (yyss, yyssp);
6713 }
6714
6715 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6716 *++yyvsp = yylval;
6717 YY_IGNORE_MAYBE_UNINITIALIZED_END
6718
6719
6720 /* Shift the error token. */
6721 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6722
6723 yystate = yyn;
6724 goto yynewstate;
6725
6726
6727 /*-------------------------------------.
6728 | yyacceptlab -- YYACCEPT comes here. |
6729 `-------------------------------------*/
6730 yyacceptlab:
6731 yyresult = 0;
6732 goto yyreturn;
6733
6734 /*-----------------------------------.
6735 | yyabortlab -- YYABORT comes here. |
6736 `-----------------------------------*/
6737 yyabortlab:
6738 yyresult = 1;
6739 goto yyreturn;
6740
6741 #if !defined yyoverflow || YYERROR_VERBOSE
6742 /*-------------------------------------------------.
6743 | yyexhaustedlab -- memory exhaustion comes here. |
6744 `-------------------------------------------------*/
6745 yyexhaustedlab:
6746 yyerror (YY_("memory exhausted"));
6747 yyresult = 2;
6748 /* Fall through. */
6749 #endif
6750
6751 yyreturn:
6752 if (yychar != YYEMPTY)
6753 {
6754 /* Make sure we have latest lookahead translation. See comments at
6755 user semantic actions for why this is necessary. */
6756 yytoken = YYTRANSLATE (yychar);
6757 yydestruct ("Cleanup: discarding lookahead",
6758 yytoken, &yylval);
6759 }
6760 /* Do not reclaim the symbols of the rule whose action triggered
6761 this YYABORT or YYACCEPT. */
6762 YYPOPSTACK (yylen);
6763 YY_STACK_PRINT (yyss, yyssp);
6764 while (yyssp != yyss)
6765 {
6766 yydestruct ("Cleanup: popping",
6767 yystos[*yyssp], yyvsp);
6768 YYPOPSTACK (1);
6769 }
6770 #ifndef yyoverflow
6771 if (yyss != yyssa)
6772 YYSTACK_FREE (yyss);
6773 #endif
6774 #if YYERROR_VERBOSE
6775 if (yymsg != yymsgbuf)
6776 YYSTACK_FREE (yymsg);
6777 #endif
6778 return yyresult;
6779 }

Properties

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