ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1302
Committed: Wed Mar 21 17:48:54 2012 UTC (13 years, 5 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 231816 byte(s)
Log Message:
- remove servlink in preparation for tls links/compression

File Contents

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

Properties

Name Value
svn:eol-style native