ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/src/y.tab.c
Revision: 109
Committed: Wed Oct 12 09:42:59 2005 UTC (20 years, 10 months ago) by michael
Content type: text/x-csrc
File size: 232967 byte(s)
Log Message:
- Forward-ported GDENY core fix

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

Properties

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