ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/y.tab.c
Revision: 38
Committed: Sun Oct 2 22:27:12 2005 UTC (18 years, 6 months ago) by adx
Content type: text/x-csrc
File size: 223097 byte(s)
Log Message:
- MFC disallow ':' at the beginning and ' ' in server passwords

File Contents

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

Properties

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