ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/src/y.tab.c
Revision: 208
Committed: Tue Nov 1 15:38:03 2005 UTC (19 years, 9 months ago) by adx
Content type: text/x-csrc
File size: 226043 byte(s)
Log Message:
+ an attempt to fix the HUB capability mess, we _should_ be able
  to establish an LL link now

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

Properties

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