ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1498
Committed: Sun Aug 12 17:30:53 2012 UTC (11 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 224830 byte(s)
Log Message:
- bison 2.6.2

File Contents

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

Properties

Name Value
svn:eol-style native