ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1301
Committed: Sat Mar 10 21:47:17 2012 UTC (12 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 240347 byte(s)
Log Message:
- add 'dline' and 'undline' operator flags
- implement remote dlines mainly for services purposes, but can be used
  by operators as well
- update example configuration files; remove invalid shared::flags entries

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

Properties

Name Value
svn:eol-style native