ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1294
Committed: Wed Feb 22 20:48:30 2012 UTC (14 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 239969 byte(s)
Error occurred while calculating annotation data.
Log Message:
- Add user mode +H which simply hides operator status to other users.
  This solution replaces current method of hidding operator status where the
  admin mode is not sent to other servers unless hidden_administrator is disabled.
- m_who() now takes care whether an operator is hidden or not

File Contents

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

Properties

Name Value
svn:eol-style native