ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1549
Committed: Mon Oct 1 18:11:11 2012 UTC (12 years, 10 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 221122 byte(s)
Log Message:
- Removed general::kline_with_reason configuration options. It's now enabled
  by default
- Removed remnants of the broken reject holding code

File Contents

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

Properties

Name Value
svn:eol-style native