ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1264
Committed: Tue Jan 17 12:30:57 2012 UTC (13 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 239566 byte(s)
Log Message:
- remove general::burst_away configuration directive. AWAY burst will have to
  be controlled via connect::flags explicitly.

File Contents

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

Properties

Name Value
svn:eol-style native