ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1121
Committed: Sun Jan 9 11:03:03 2011 UTC (13 years, 2 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 242405 byte(s)
Log Message:
- removed all instances of STATIC_MODULES since we don't have
  static modules anymore
- removed m_mkpasswd module from contrib

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

Properties

Name Value
svn:eol-style native