ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1632
Committed: Sun Nov 4 15:37:10 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 220254 byte(s)
Log Message:
- Initial rewrite of the configuration subsystem

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

Properties

Name Value
svn:eol-style native