ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1858
Committed: Thu Apr 25 15:00:52 2013 UTC (12 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 225401 byte(s)
Log Message:
- Added basic support for libGeoIP
- Added exempt configuration option to resv{} blocks

File Contents

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

Properties

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