ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1526
Committed: Mon Sep 10 18:06:06 2012 UTC (11 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 223503 byte(s)
Log Message:
- fixed minor compile warnings

File Contents

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

Properties

Name Value
svn:eol-style native