ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1753
Committed: Wed Jan 16 19:30:51 2013 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 219847 byte(s)
Log Message:
- conf_parser.y: fixed warning introduced by previous commit

File Contents

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

Properties

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