ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1547
Committed: Sun Sep 30 17:50:03 2012 UTC (11 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 222868 byte(s)
Log Message:
- Removed general::use_whois_actually configuration directive. This is
  now enabled by default

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

Properties

Name Value
svn:eol-style native