ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1851
Committed: Wed Apr 24 18:31:06 2013 UTC (10 years, 11 months ago) by michael
Content type: text/x-csrc
File size: 223693 byte(s)
Log Message:
- Cleanup m_map.c
- Implemented serverhide::hide_services configuration option

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

Properties

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