ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5398
Committed: Tue Jan 20 14:49:10 2015 UTC (10 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 224459 byte(s)
Log Message:
- bison 3.0.3

File Contents

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

Properties

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