ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/y.tab.c
Revision: 584
Committed: Sun May 7 15:26:45 2006 UTC (17 years, 11 months ago) by michael
Content type: text/x-csrc
File size: 234144 byte(s)
Log Message:
- Added new general::stats_e_disabled configuration option.  Known from RB,
  all it does is to disable "STATS e", which is a good idea if you have any
  exempted server ips.
- Updated RELNOTES

File Contents

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

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision