ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4121
Committed: Tue Jul 1 17:01:33 2014 UTC (11 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 224892 byte(s)
Log Message:
- conf_parser.y: fixed stupid bug. no comment there...

File Contents

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

Properties

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