ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1459
Committed: Fri Jul 6 14:23:09 2012 UTC (13 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 228273 byte(s)
Log Message:
- remove g-line acls
- added general::gline_request_duration configuration option which
  simply replaces the harcoded PENDING_GLINE_TIME definition

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

Properties

Name Value
svn:eol-style native