ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 3762
Committed: Sun Jun 1 19:35:16 2014 UTC (11 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 221340 byte(s)
Log Message:
- Added INVITE flood protection/throttling as requested by Adam. This basically
  works similar as the KNOCK throttling algorithm.

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

Properties

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