ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1076
Committed: Thu Feb 18 09:23:47 2010 UTC (14 years, 1 month ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 242774 byte(s)
Log Message:
- Dropped support for old style 'operflag = yes|no;' configuration format

File Contents

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

Properties

Name Value
svn:eol-style native