ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1460
Committed: Fri Jul 6 14:32:53 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: 227836 byte(s)
Log Message:
- Added 'set' to operator privilege flags. Gives access to the "SET" command

File Contents

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

Properties

Name Value
svn:eol-style native