ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1832
Committed: Fri Apr 19 19:16:09 2013 UTC (12 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 223402 byte(s)
Log Message:
- Made all numeric defines use the actual string instead of the numeric value
  which allows to use gcc's printf format attribute
- Remove current message locale implementation

File Contents

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

Properties

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