ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/y.tab.c
Revision: 632
Committed: Thu Jun 1 10:53:00 2006 UTC (17 years, 10 months ago) by michael
Content type: text/x-csrc
File size: 241488 byte(s)
Log Message:
- Added channel::disable_fake_channels which disallows creation of channels
  that have ascii 2, 3, 31 and 160 in their names.
- Minor improvements and cleanups to channel name validation routines
  backported from 7.3

File Contents

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

Properties

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