ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/y.tab.c
Revision: 342
Committed: Tue Dec 27 19:28:58 2005 UTC (18 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 233523 byte(s)
Log Message:
- Fixed compile error reported by Volk and CoolCold

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

Properties

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