ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1904
Committed: Sat Apr 27 21:16:22 2013 UTC (12 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 223928 byte(s)
Log Message:
- Removed operflag 'nick_changes'. Operators can now set +n at will

File Contents

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

Properties

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