ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2570
Committed: Mon Nov 18 19:14:02 2013 UTC (11 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 218770 byte(s)
Log Message:
- bison 3.0.1

File Contents

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

Properties

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