ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1644
Committed: Tue Nov 6 22:20:16 2012 UTC (11 years, 5 months ago) by michael
Content type: text/x-csrc
File size: 219365 byte(s)
Log Message:
- More config subsystem cleanups

File Contents

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

Properties

Name Value
svn:eol-style native