ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/src/conf_parser.c
Revision: 1783
Committed: Thu Jan 24 19:26:51 2013 UTC (13 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid/trunk/src/conf_parser.c
File size: 223531 byte(s)
Log Message:
- Forward-port -r1774:
  - Configuration parser now does support 'year' and 'month' units
  - Add support for fake idle times to /whois. Known from csircd, this
    adds min_idle, and max_idle configuration directives to class{} blocks

File Contents

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

Properties

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