ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.3/src/ircd_parser.c
Revision: 1123
Committed: Sun Feb 6 21:57:50 2011 UTC (13 years, 1 month ago) by michael
Content type: text/x-csrc
File size: 242352 byte(s)
Log Message:
- Got rid of irc_addrinfo.c and irc_getnameinfo.c
- Fixed broken ipv6 detection due to incorrect use of AC_CHECK_TYPES

File Contents

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

Properties

Name Value
svn:eol-style native