ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1247
Committed: Sat Oct 1 07:54:24 2011 UTC (12 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 240344 byte(s)
Log Message:
- Rewrite and cleanup half-broken logging subsystem.
  Logfile rotating is not working yet

File Contents

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

Properties

Name Value
svn:eol-style native