ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1825
Committed: Sun Apr 14 19:54:48 2013 UTC (12 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 224137 byte(s)
Log Message:
- Quarantined/reserved channels may now contain wildcards

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

Properties

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