ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1492
Committed: Fri Aug 3 16:13:27 2012 UTC (13 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 226515 byte(s)
Log Message:
- bison 2.6.1

File Contents

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

Properties

Name Value
svn:eol-style native