ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1785
Committed: Sat Jan 26 22:40:55 2013 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 223876 byte(s)
Log Message:
- Forward-port -r1784 [Fix bug where idle time sometimes is 0 even if the
  client didn't send any private message]

File Contents

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

Properties

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