ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5801
Committed: Fri Apr 17 19:23:06 2015 UTC (10 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 226209 byte(s)
Log Message:
- conf_parser.c: rebuilt

File Contents

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

Properties

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