ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 913
Committed: Wed Nov 7 23:20:12 2007 UTC (17 years, 9 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.2/src/ircd_parser.c
File size: 241780 byte(s)
Log Message:
- Added some missing files
- Moved HOSTLEN and USERLEN definition back to ircd_defs.h
  Those two shouldn't be configurable

File Contents

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

Properties

Name Value
svn:eol-style native