ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5490
Committed: Sun Feb 8 14:53:44 2015 UTC (10 years, 6 months ago) by michael
Content type: text/x-csrc
File size: 224415 byte(s)
Log Message:
- Re-generate parser/lexer files

File Contents

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

Properties

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