ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1490
Committed: Sat Jul 28 19:33:23 2012 UTC (13 years, 1 month ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 226851 byte(s)
Log Message:
- removed serverhide::disable_hidden configuration option
- update NEWS

File Contents

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

Properties

Name Value
svn:eol-style native