ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2038
Committed: Tue May 14 19:21:32 2013 UTC (12 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 222374 byte(s)
Log Message:
- Added 'locops' and 'wallops' to irc-operator flags
--- Diese und die folgenden Zeilen werden ignoriert --

M    include/client.h
M    src/conf_parser.c
M    src/conf_parser.h
M    src/conf_lexer.c
M    src/conf_parser.y
M    src/conf_lexer.l
M    doc/reference.conf
M    modules/m_locops.c
M    modules/m_wallops.c

File Contents

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

Properties

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