ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/y.tab.c
Revision: 201
Committed: Tue Nov 1 11:41:52 2005 UTC (18 years, 4 months ago) by adx
Content type: text/x-csrc
File size: 226549 byte(s)
Log Message:
MFC:
+ removed invite_ops_only, controlled by +p now
+ sorted ircd.conf:channel{} a bit

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

Properties

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