ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1103
Committed: Wed Aug 18 22:18:47 2010 UTC (15 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 243289 byte(s)
Log Message:
- rebuild parser

File Contents

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

Properties

Name Value
svn:eol-style native