ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1118
Committed: Thu Jan 6 13:39:10 2011 UTC (13 years, 3 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 242701 byte(s)
Log Message:
- cleanup and sanitize m_server.c. remove hostmasking. Improve TS6 suppport

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, 476, 485, 487,
1342 487, 488, 488, 489, 489, 490, 490, 491, 492, 492,
1343 493, 493, 494, 495, 499, 498, 517, 517, 518, 524,
1344 532, 566, 626, 641, 656, 665, 679, 688, 716, 746,
1345 769, 791, 793, 793, 794, 794, 795, 795, 797, 806,
1346 815, 828, 830, 831, 833, 833, 834, 835, 835, 836,
1347 836, 837, 837, 838, 838, 839, 840, 842, 846, 850,
1348 857, 864, 871, 878, 885, 892, 899, 906, 910, 914,
1349 918, 922, 926, 930, 936, 946, 945, 1039, 1039, 1040,
1350 1040, 1041, 1041, 1041, 1042, 1042, 1042, 1043, 1043, 1043,
1351 1045, 1057, 1069, 1103, 1115, 1126, 1168, 1178, 1177, 1183,
1352 1183, 1184, 1188, 1192, 1196, 1200, 1204, 1208, 1212, 1216,
1353 1220, 1224, 1228, 1232, 1236, 1240, 1244, 1248, 1252, 1256,
1354 1263, 1262, 1266, 1266, 1267, 1267, 1268, 1268, 1270, 1277,
1355 1284, 1291, 1298, 1305, 1312, 1319, 1326, 1333, 1340, 1347,
1356 1354, 1361, 1368, 1375, 1389, 1388, 1438, 1438, 1440, 1440,
1357 1441, 1442, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449,
1358 1450, 1451, 1452, 1453, 1455, 1464, 1473, 1479, 1485, 1491,
1359 1497, 1503, 1509, 1515, 1521, 1527, 1533, 1539, 1549, 1548,
1360 1565, 1564, 1569, 1569, 1570, 1574, 1578, 1586, 1586, 1587,
1361 1587, 1587, 1587, 1587, 1589, 1589, 1591, 1591, 1593, 1607,
1362 1627, 1636, 1649, 1648, 1717, 1717, 1718, 1718, 1718, 1718,
1363 1719, 1719, 1719, 1720, 1720, 1722, 1759, 1772, 1781, 1793,
1364 1792, 1796, 1796, 1797, 1797, 1798, 1798, 1800, 1807, 1814,
1365 1821, 1828, 1835, 1842, 1849, 1856, 1863, 1873, 1892, 1902,
1366 1916, 1915, 1931, 1931, 1932, 1932, 1932, 1932, 1934, 1943,
1367 1958, 1972, 1971, 1987, 1987, 1988, 1988, 1988, 1988, 1990,
1368 1999, 2022, 2021, 2027, 2027, 2028, 2032, 2036, 2040, 2044,
1369 2048, 2052, 2056, 2060, 2064, 2068, 2078, 2077, 2094, 2094,
1370 2095, 2095, 2095, 2097, 2104, 2103, 2109, 2109, 2110, 2114,
1371 2118, 2122, 2126, 2130, 2134, 2138, 2142, 2146, 2150, 2160,
1372 2159, 2305, 2305, 2306, 2306, 2307, 2307, 2307, 2308, 2308,
1373 2309, 2309, 2310, 2310, 2310, 2311, 2311, 2312, 2312, 2313,
1374 2315, 2327, 2339, 2348, 2374, 2392, 2410, 2416, 2420, 2429,
1375 2428, 2432, 2432, 2433, 2433, 2434, 2434, 2436, 2447, 2454,
1376 2461, 2468, 2478, 2519, 2530, 2543, 2556, 2565, 2601, 2600,
1377 2664, 2663, 2667, 2667, 2668, 2674, 2674, 2675, 2675, 2675,
1378 2675, 2677, 2696, 2706, 2705, 2728, 2728, 2729, 2729, 2729,
1379 2731, 2737, 2746, 2748, 2748, 2749, 2749, 2751, 2770, 2769,
1380 2817, 2816, 2820, 2820, 2821, 2827, 2827, 2828, 2828, 2828,
1381 2828, 2830, 2836, 2845, 2848, 2848, 2849, 2849, 2850, 2850,
1382 2851, 2851, 2852, 2852, 2853, 2853, 2854, 2854, 2855, 2855,
1383 2856, 2856, 2857, 2857, 2858, 2858, 2859, 2859, 2860, 2860,
1384 2861, 2861, 2862, 2862, 2863, 2863, 2864, 2864, 2865, 2865,
1385 2866, 2866, 2867, 2867, 2868, 2868, 2869, 2870, 2870, 2871,
1386 2871, 2872, 2873, 2873, 2874, 2874, 2875, 2875, 2876, 2876,
1387 2877, 2878, 2881, 2886, 2891, 2896, 2901, 2906, 2911, 2916,
1388 2921, 2926, 2931, 2936, 2941, 2946, 2951, 2956, 2961, 2966,
1389 2971, 2977, 2988, 2993, 3002, 3007, 3012, 3017, 3022, 3027,
1390 3030, 3035, 3038, 3043, 3048, 3053, 3058, 3063, 3068, 3073,
1391 3078, 3083, 3094, 3099, 3104, 3109, 3118, 3150, 3168, 3173,
1392 3182, 3187, 3192, 3198, 3197, 3202, 3202, 3203, 3206, 3209,
1393 3212, 3215, 3218, 3221, 3224, 3227, 3230, 3233, 3236, 3239,
1394 3242, 3245, 3248, 3251, 3254, 3257, 3263, 3262, 3267, 3267,
1395 3268, 3271, 3274, 3277, 3280, 3283, 3286, 3289, 3292, 3295,
1396 3298, 3301, 3304, 3307, 3310, 3313, 3316, 3319, 3322, 3327,
1397 3332, 3337, 3342, 3352, 3351, 3375, 3375, 3376, 3377, 3378,
1398 3379, 3380, 3381, 3382, 3384, 3390, 3397, 3396, 3401, 3401,
1399 3402, 3406, 3412, 3446, 3456, 3455, 3505, 3505, 3506, 3510,
1400 3519, 3522, 3522, 3523, 3523, 3524, 3524, 3525, 3525, 3526,
1401 3526, 3527, 3527, 3528, 3529, 3529, 3530, 3530, 3531, 3531,
1402 3532, 3532, 3534, 3539, 3544, 3549, 3554, 3559, 3564, 3569,
1403 3574, 3579, 3584, 3589, 3594, 3599, 3604, 3609, 3614, 3619,
1404 3627, 3630, 3630, 3631, 3631, 3632, 3633, 3634, 3634, 3635,
1405 3636, 3638, 3644, 3650, 3659, 3673, 3679, 3685
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 #ifndef STATIC_MODULES /* NOOP in the static case */
3439 if (conf_parser_ctx.pass == 2)
3440 add_conf_module(libio_basename(yylval.string));
3441 #endif
3442 }
3443 break;
3444
3445 case 47:
3446
3447 /* Line 1464 of yacc.c */
3448 #line 477 "ircd_parser.y"
3449 {
3450 #ifndef STATIC_MODULES
3451 if (conf_parser_ctx.pass == 2)
3452 mod_add_path(yylval.string);
3453 #endif
3454 }
3455 break;
3456
3457 case 64:
3458
3459 /* Line 1464 of yacc.c */
3460 #line 499 "ircd_parser.y"
3461 {
3462 #ifdef HAVE_LIBCRYPTO
3463 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3464 ServerInfo.tls_version = 0;
3465 #endif
3466 }
3467 break;
3468
3469 case 65:
3470
3471 /* Line 1464 of yacc.c */
3472 #line 505 "ircd_parser.y"
3473 {
3474 #ifdef HAVE_LIBCRYPTO
3475 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3476 {
3477 if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_SSLV3))
3478 SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3479 if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_TLSV1))
3480 SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3481 }
3482 #endif
3483 }
3484 break;
3485
3486 case 68:
3487
3488 /* Line 1464 of yacc.c */
3489 #line 519 "ircd_parser.y"
3490 {
3491 #ifdef HAVE_LIBCRYPTO
3492 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3493 ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_SSLV3;
3494 #endif
3495 }
3496 break;
3497
3498 case 69:
3499
3500 /* Line 1464 of yacc.c */
3501 #line 525 "ircd_parser.y"
3502 {
3503 #ifdef HAVE_LIBCRYPTO
3504 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3505 ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_TLSV1;
3506 #endif
3507 }
3508 break;
3509
3510 case 70:
3511
3512 /* Line 1464 of yacc.c */
3513 #line 533 "ircd_parser.y"
3514 {
3515 #ifdef HAVE_LIBCRYPTO
3516 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3517 {
3518 if (!ServerInfo.rsa_private_key_file)
3519 {
3520 yyerror("No rsa_private_key_file specified, SSL disabled");
3521 break;
3522 }
3523
3524 if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3525 SSL_FILETYPE_PEM) <= 0)
3526 {
3527 yyerror(ERR_lib_error_string(ERR_get_error()));
3528 break;
3529 }
3530
3531 if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3532 SSL_FILETYPE_PEM) <= 0)
3533 {
3534 yyerror(ERR_lib_error_string(ERR_get_error()));
3535 break;
3536 }
3537
3538 if (!SSL_CTX_check_private_key(ServerInfo.server_ctx))
3539 {
3540 yyerror(ERR_lib_error_string(ERR_get_error()));
3541 break;
3542 }
3543 }
3544 #endif
3545 }
3546 break;
3547
3548 case 71:
3549
3550 /* Line 1464 of yacc.c */
3551 #line 567 "ircd_parser.y"
3552 {
3553 #ifdef HAVE_LIBCRYPTO
3554 if (conf_parser_ctx.pass == 1)
3555 {
3556 BIO *file;
3557
3558 if (ServerInfo.rsa_private_key)
3559 {
3560 RSA_free(ServerInfo.rsa_private_key);
3561 ServerInfo.rsa_private_key = NULL;
3562 }
3563
3564 if (ServerInfo.rsa_private_key_file)
3565 {
3566 MyFree(ServerInfo.rsa_private_key_file);
3567 ServerInfo.rsa_private_key_file = NULL;
3568 }
3569
3570 DupString(ServerInfo.rsa_private_key_file, yylval.string);
3571
3572 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3573 {
3574 yyerror("File open failed, ignoring");
3575 break;
3576 }
3577
3578 ServerInfo.rsa_private_key = (RSA *)PEM_read_bio_RSAPrivateKey(file, NULL,
3579 0, NULL);
3580
3581 BIO_set_close(file, BIO_CLOSE);
3582 BIO_free(file);
3583
3584 if (ServerInfo.rsa_private_key == NULL)
3585 {
3586 yyerror("Couldn't extract key, ignoring");
3587 break;
3588 }
3589
3590 if (!RSA_check_key(ServerInfo.rsa_private_key))
3591 {
3592 RSA_free(ServerInfo.rsa_private_key);
3593 ServerInfo.rsa_private_key = NULL;
3594
3595 yyerror("Invalid key, ignoring");
3596 break;
3597 }
3598
3599 /* require 2048 bit (256 byte) key */
3600 if (RSA_size(ServerInfo.rsa_private_key) != 256)
3601 {
3602 RSA_free(ServerInfo.rsa_private_key);
3603 ServerInfo.rsa_private_key = NULL;
3604
3605 yyerror("Not a 2048 bit key, ignoring");
3606 }
3607 }
3608 #endif
3609 }
3610 break;
3611
3612 case 72:
3613
3614 /* Line 1464 of yacc.c */
3615 #line 627 "ircd_parser.y"
3616 {
3617 /* this isn't rehashable */
3618 if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3619 {
3620 if (valid_servname(yylval.string))
3621 DupString(ServerInfo.name, yylval.string);
3622 else
3623 {
3624 ilog(L_ERROR, "Ignoring serverinfo::name -- invalid name. Aborting.");
3625 exit(0);
3626 }
3627 }
3628 }
3629 break;
3630
3631 case 73:
3632
3633 /* Line 1464 of yacc.c */
3634 #line 642 "ircd_parser.y"
3635 {
3636 /* this isn't rehashable */
3637 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3638 {
3639 if (valid_sid(yylval.string))
3640 DupString(ServerInfo.sid, yylval.string);
3641 else
3642 {
3643 ilog(L_ERROR, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3644 exit(0);
3645 }
3646 }
3647 }
3648 break;
3649
3650 case 74:
3651
3652 /* Line 1464 of yacc.c */
3653 #line 657 "ircd_parser.y"
3654 {
3655 if (conf_parser_ctx.pass == 2)
3656 {
3657 MyFree(ServerInfo.description);
3658 DupString(ServerInfo.description,yylval.string);
3659 }
3660 }
3661 break;
3662
3663 case 75:
3664
3665 /* Line 1464 of yacc.c */
3666 #line 666 "ircd_parser.y"
3667 {
3668 if (conf_parser_ctx.pass == 2)
3669 {
3670 char *p;
3671
3672 if ((p = strchr(yylval.string, ' ')) != NULL)
3673 p = '\0';
3674
3675 MyFree(ServerInfo.network_name);
3676 DupString(ServerInfo.network_name, yylval.string);
3677 }
3678 }
3679 break;
3680
3681 case 76:
3682
3683 /* Line 1464 of yacc.c */
3684 #line 680 "ircd_parser.y"
3685 {
3686 if (conf_parser_ctx.pass == 2)
3687 {
3688 MyFree(ServerInfo.network_desc);
3689 DupString(ServerInfo.network_desc, yylval.string);
3690 }
3691 }
3692 break;
3693
3694 case 77:
3695
3696 /* Line 1464 of yacc.c */
3697 #line 689 "ircd_parser.y"
3698 {
3699 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3700 {
3701 struct addrinfo hints, *res;
3702
3703 memset(&hints, 0, sizeof(hints));
3704
3705 hints.ai_family = AF_UNSPEC;
3706 hints.ai_socktype = SOCK_STREAM;
3707 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3708
3709 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3710 ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
3711 else
3712 {
3713 assert(res != NULL);
3714
3715 memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3716 ServerInfo.ip.ss.ss_family = res->ai_family;
3717 ServerInfo.ip.ss_len = res->ai_addrlen;
3718 irc_freeaddrinfo(res);
3719
3720 ServerInfo.specific_ipv4_vhost = 1;
3721 }
3722 }
3723 }
3724 break;
3725
3726 case 78:
3727
3728 /* Line 1464 of yacc.c */
3729 #line 717 "ircd_parser.y"
3730 {
3731 #ifdef IPV6
3732 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3733 {
3734 struct addrinfo hints, *res;
3735
3736 memset(&hints, 0, sizeof(hints));
3737
3738 hints.ai_family = AF_UNSPEC;
3739 hints.ai_socktype = SOCK_STREAM;
3740 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3741
3742 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3743 ilog(L_ERROR, "Invalid netmask for server vhost6(%s)", yylval.string);
3744 else
3745 {
3746 assert(res != NULL);
3747
3748 memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3749 ServerInfo.ip6.ss.ss_family = res->ai_family;
3750 ServerInfo.ip6.ss_len = res->ai_addrlen;
3751 irc_freeaddrinfo(res);
3752
3753 ServerInfo.specific_ipv6_vhost = 1;
3754 }
3755 }
3756 #endif
3757 }
3758 break;
3759
3760 case 79:
3761
3762 /* Line 1464 of yacc.c */
3763 #line 747 "ircd_parser.y"
3764 {
3765 if (conf_parser_ctx.pass == 2)
3766 {
3767 recalc_fdlimit(NULL);
3768
3769 if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3770 {
3771 char buf[IRCD_BUFSIZE];
3772 ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3773 yyerror(buf);
3774 }
3775 else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3776 {
3777 char buf[IRCD_BUFSIZE];
3778 ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3779 yyerror(buf);
3780 }
3781 else
3782 ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3783 }
3784 }
3785 break;
3786
3787 case 80:
3788
3789 /* Line 1464 of yacc.c */
3790 #line 770 "ircd_parser.y"
3791 {
3792 if (conf_parser_ctx.pass == 2)
3793 {
3794 if (yylval.number)
3795 {
3796 ServerInfo.hub = 1;
3797 delete_capability("HUB");
3798 add_capability("HUB", CAP_HUB, 1);
3799 }
3800 else if (ServerInfo.hub)
3801 {
3802
3803 ServerInfo.hub = 0;
3804 delete_capability("HUB");
3805 }
3806 }
3807 }
3808 break;
3809
3810 case 88:
3811
3812 /* Line 1464 of yacc.c */
3813 #line 798 "ircd_parser.y"
3814 {
3815 if (conf_parser_ctx.pass == 2)
3816 {
3817 MyFree(AdminInfo.name);
3818 DupString(AdminInfo.name, yylval.string);
3819 }
3820 }
3821 break;
3822
3823 case 89:
3824
3825 /* Line 1464 of yacc.c */
3826 #line 807 "ircd_parser.y"
3827 {
3828 if (conf_parser_ctx.pass == 2)
3829 {
3830 MyFree(AdminInfo.email);
3831 DupString(AdminInfo.email, yylval.string);
3832 }
3833 }
3834 break;
3835
3836 case 90:
3837
3838 /* Line 1464 of yacc.c */
3839 #line 816 "ircd_parser.y"
3840 {
3841 if (conf_parser_ctx.pass == 2)
3842 {
3843 MyFree(AdminInfo.description);
3844 DupString(AdminInfo.description, yylval.string);
3845 }
3846 }
3847 break;
3848
3849 case 107:
3850
3851 /* Line 1464 of yacc.c */
3852 #line 843 "ircd_parser.y"
3853 {
3854 }
3855 break;
3856
3857 case 108:
3858
3859 /* Line 1464 of yacc.c */
3860 #line 847 "ircd_parser.y"
3861 {
3862 }
3863 break;
3864
3865 case 109:
3866
3867 /* Line 1464 of yacc.c */
3868 #line 851 "ircd_parser.y"
3869 {
3870 if (conf_parser_ctx.pass == 2)
3871 strlcpy(ConfigLoggingEntry.userlog, yylval.string,
3872 sizeof(ConfigLoggingEntry.userlog));
3873 }
3874 break;
3875
3876 case 110:
3877
3878 /* Line 1464 of yacc.c */
3879 #line 858 "ircd_parser.y"
3880 {
3881 if (conf_parser_ctx.pass == 2)
3882 strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
3883 sizeof(ConfigLoggingEntry.failed_operlog));
3884 }
3885 break;
3886
3887 case 111:
3888
3889 /* Line 1464 of yacc.c */
3890 #line 865 "ircd_parser.y"
3891 {
3892 if (conf_parser_ctx.pass == 2)
3893 strlcpy(ConfigLoggingEntry.operlog, yylval.string,
3894 sizeof(ConfigLoggingEntry.operlog));
3895 }
3896 break;
3897
3898 case 112:
3899
3900 /* Line 1464 of yacc.c */
3901 #line 872 "ircd_parser.y"
3902 {
3903 if (conf_parser_ctx.pass == 2)
3904 strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
3905 sizeof(ConfigLoggingEntry.operspylog));
3906 }
3907 break;
3908
3909 case 113:
3910
3911 /* Line 1464 of yacc.c */
3912 #line 879 "ircd_parser.y"
3913 {
3914 if (conf_parser_ctx.pass == 2)
3915 strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
3916 sizeof(ConfigLoggingEntry.glinelog));
3917 }
3918 break;
3919
3920 case 114:
3921
3922 /* Line 1464 of yacc.c */
3923 #line 886 "ircd_parser.y"
3924 {
3925 if (conf_parser_ctx.pass == 2)
3926 strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
3927 sizeof(ConfigLoggingEntry.klinelog));
3928 }
3929 break;
3930
3931 case 115:
3932
3933 /* Line 1464 of yacc.c */
3934 #line 893 "ircd_parser.y"
3935 {
3936 if (conf_parser_ctx.pass == 2)
3937 strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
3938 sizeof(ConfigLoggingEntry.ioerrlog));
3939 }
3940 break;
3941
3942 case 116:
3943
3944 /* Line 1464 of yacc.c */
3945 #line 900 "ircd_parser.y"
3946 {
3947 if (conf_parser_ctx.pass == 2)
3948 strlcpy(ConfigLoggingEntry.killlog, yylval.string,
3949 sizeof(ConfigLoggingEntry.killlog));
3950 }
3951 break;
3952
3953 case 117:
3954
3955 /* Line 1464 of yacc.c */
3956 #line 907 "ircd_parser.y"
3957 {
3958 if (conf_parser_ctx.pass == 2)
3959 set_log_level(L_CRIT);
3960 }
3961 break;
3962
3963 case 118:
3964
3965 /* Line 1464 of yacc.c */
3966 #line 911 "ircd_parser.y"
3967 {
3968 if (conf_parser_ctx.pass == 2)
3969 set_log_level(L_ERROR);
3970 }
3971 break;
3972
3973 case 119:
3974
3975 /* Line 1464 of yacc.c */
3976 #line 915 "ircd_parser.y"
3977 {
3978 if (conf_parser_ctx.pass == 2)
3979 set_log_level(L_WARN);
3980 }
3981 break;
3982
3983 case 120:
3984
3985 /* Line 1464 of yacc.c */
3986 #line 919 "ircd_parser.y"
3987 {
3988 if (conf_parser_ctx.pass == 2)
3989 set_log_level(L_NOTICE);
3990 }
3991 break;
3992
3993 case 121:
3994
3995 /* Line 1464 of yacc.c */
3996 #line 923 "ircd_parser.y"
3997 {
3998 if (conf_parser_ctx.pass == 2)
3999 set_log_level(L_TRACE);
4000 }
4001 break;
4002
4003 case 122:
4004
4005 /* Line 1464 of yacc.c */
4006 #line 927 "ircd_parser.y"
4007 {
4008 if (conf_parser_ctx.pass == 2)
4009 set_log_level(L_INFO);
4010 }
4011 break;
4012
4013 case 123:
4014
4015 /* Line 1464 of yacc.c */
4016 #line 931 "ircd_parser.y"
4017 {
4018 if (conf_parser_ctx.pass == 2)
4019 set_log_level(L_DEBUG);
4020 }
4021 break;
4022
4023 case 124:
4024
4025 /* Line 1464 of yacc.c */
4026 #line 937 "ircd_parser.y"
4027 {
4028 if (conf_parser_ctx.pass == 2)
4029 ConfigLoggingEntry.use_logging = yylval.number;
4030 }
4031 break;
4032
4033 case 125:
4034
4035 /* Line 1464 of yacc.c */
4036 #line 946 "ircd_parser.y"
4037 {
4038 if (conf_parser_ctx.pass == 2)
4039 {
4040 yy_conf = make_conf_item(OPER_TYPE);
4041 yy_aconf = map_to_conf(yy_conf);
4042 SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
4043 }
4044 else
4045 {
4046 MyFree(class_name);
4047 class_name = NULL;
4048 }
4049 }
4050 break;
4051
4052 case 126:
4053
4054 /* Line 1464 of yacc.c */
4055 #line 959 "ircd_parser.y"
4056 {
4057 if (conf_parser_ctx.pass == 2)
4058 {
4059 struct CollectItem *yy_tmp;
4060 dlink_node *ptr;
4061 dlink_node *next_ptr;
4062
4063 conf_add_class_to_conf(yy_conf, class_name);
4064
4065 /* Now, make sure there is a copy of the "base" given oper
4066 * block in each of the collected copies
4067 */
4068
4069 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4070 {
4071 struct AccessItem *new_aconf;
4072 struct ConfItem *new_conf;
4073 yy_tmp = ptr->data;
4074
4075 new_conf = make_conf_item(OPER_TYPE);
4076 new_aconf = (struct AccessItem *)map_to_conf(new_conf);
4077
4078 new_aconf->flags = yy_aconf->flags;
4079
4080 if (yy_conf->name != NULL)
4081 DupString(new_conf->name, yy_conf->name);
4082 if (yy_tmp->user != NULL)
4083 DupString(new_aconf->user, yy_tmp->user);
4084 else
4085 DupString(new_aconf->user, "*");
4086 if (yy_tmp->host != NULL)
4087 DupString(new_aconf->host, yy_tmp->host);
4088 else
4089 DupString(new_aconf->host, "*");
4090 conf_add_class_to_conf(new_conf, class_name);
4091 if (yy_aconf->passwd != NULL)
4092 DupString(new_aconf->passwd, yy_aconf->passwd);
4093
4094 new_aconf->port = yy_aconf->port;
4095 #ifdef HAVE_LIBCRYPTO
4096 if (yy_aconf->rsa_public_key_file != NULL)
4097 {
4098 BIO *file;
4099
4100 DupString(new_aconf->rsa_public_key_file,
4101 yy_aconf->rsa_public_key_file);
4102
4103 file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4104 new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4105 NULL, 0, NULL);
4106 BIO_set_close(file, BIO_CLOSE);
4107 BIO_free(file);
4108 }
4109 #endif
4110
4111 #ifdef HAVE_LIBCRYPTO
4112 if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4113 && yy_tmp->host)
4114 #else
4115 if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4116 #endif
4117 {
4118 conf_add_class_to_conf(new_conf, class_name);
4119 if (yy_tmp->name != NULL)
4120 DupString(new_conf->name, yy_tmp->name);
4121 }
4122
4123 dlinkDelete(&yy_tmp->node, &col_conf_list);
4124 free_collect_item(yy_tmp);
4125 }
4126
4127 yy_conf = NULL;
4128 yy_aconf = NULL;
4129
4130
4131 MyFree(class_name);
4132 class_name = NULL;
4133 }
4134 }
4135 break;
4136
4137 case 140:
4138
4139 /* Line 1464 of yacc.c */
4140 #line 1046 "ircd_parser.y"
4141 {
4142 if (conf_parser_ctx.pass == 2)
4143 {
4144 if (strlen(yylval.string) > OPERNICKLEN)
4145 yylval.string[OPERNICKLEN] = '\0';
4146
4147 MyFree(yy_conf->name);
4148 DupString(yy_conf->name, yylval.string);
4149 }
4150 }
4151 break;
4152
4153 case 141:
4154
4155 /* Line 1464 of yacc.c */
4156 #line 1058 "ircd_parser.y"
4157 {
4158 if (conf_parser_ctx.pass == 2)
4159 {
4160 if (strlen(yylval.string) > OPERNICKLEN)
4161 yylval.string[OPERNICKLEN] = '\0';
4162
4163 MyFree(yy_conf->name);
4164 DupString(yy_conf->name, yylval.string);
4165 }
4166 }
4167 break;
4168
4169 case 142:
4170
4171 /* Line 1464 of yacc.c */
4172 #line 1070 "ircd_parser.y"
4173 {
4174 if (conf_parser_ctx.pass == 2)
4175 {
4176 struct split_nuh_item nuh;
4177
4178 nuh.nuhmask = yylval.string;
4179 nuh.nickptr = NULL;
4180 nuh.userptr = userbuf;
4181 nuh.hostptr = hostbuf;
4182
4183 nuh.nicksize = 0;
4184 nuh.usersize = sizeof(userbuf);
4185 nuh.hostsize = sizeof(hostbuf);
4186
4187 split_nuh(&nuh);
4188
4189 if (yy_aconf->user == NULL)
4190 {
4191 DupString(yy_aconf->user, userbuf);
4192 DupString(yy_aconf->host, hostbuf);
4193 }
4194 else
4195 {
4196 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4197
4198 DupString(yy_tmp->user, userbuf);
4199 DupString(yy_tmp->host, hostbuf);
4200
4201 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4202 }
4203 }
4204 }
4205 break;
4206
4207 case 143:
4208
4209 /* Line 1464 of yacc.c */
4210 #line 1104 "ircd_parser.y"
4211 {
4212 if (conf_parser_ctx.pass == 2)
4213 {
4214 if (yy_aconf->passwd != NULL)
4215 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4216
4217 MyFree(yy_aconf->passwd);
4218 DupString(yy_aconf->passwd, yylval.string);
4219 }
4220 }
4221 break;
4222
4223 case 144:
4224
4225 /* Line 1464 of yacc.c */
4226 #line 1116 "ircd_parser.y"
4227 {
4228 if (conf_parser_ctx.pass == 2)
4229 {
4230 if (yylval.number)
4231 SetConfEncrypted(yy_aconf);
4232 else
4233 ClearConfEncrypted(yy_aconf);
4234 }
4235 }
4236 break;
4237
4238 case 145:
4239
4240 /* Line 1464 of yacc.c */
4241 #line 1127 "ircd_parser.y"
4242 {
4243 #ifdef HAVE_LIBCRYPTO
4244 if (conf_parser_ctx.pass == 2)
4245 {
4246 BIO *file;
4247
4248 if (yy_aconf->rsa_public_key != NULL)
4249 {
4250 RSA_free(yy_aconf->rsa_public_key);
4251 yy_aconf->rsa_public_key = NULL;
4252 }
4253
4254 if (yy_aconf->rsa_public_key_file != NULL)
4255 {
4256 MyFree(yy_aconf->rsa_public_key_file);
4257 yy_aconf->rsa_public_key_file = NULL;
4258 }
4259
4260 DupString(yy_aconf->rsa_public_key_file, yylval.string);
4261 file = BIO_new_file(yylval.string, "r");
4262
4263 if (file == NULL)
4264 {
4265 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4266 break;
4267 }
4268
4269 yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4270
4271 if (yy_aconf->rsa_public_key == NULL)
4272 {
4273 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4274 break;
4275 }
4276
4277 BIO_set_close(file, BIO_CLOSE);
4278 BIO_free(file);
4279 }
4280 #endif /* HAVE_LIBCRYPTO */
4281 }
4282 break;
4283
4284 case 146:
4285
4286 /* Line 1464 of yacc.c */
4287 #line 1169 "ircd_parser.y"
4288 {
4289 if (conf_parser_ctx.pass == 2)
4290 {
4291 MyFree(class_name);
4292 DupString(class_name, yylval.string);
4293 }
4294 }
4295 break;
4296
4297 case 147:
4298
4299 /* Line 1464 of yacc.c */
4300 #line 1178 "ircd_parser.y"
4301 {
4302 if (conf_parser_ctx.pass == 2)
4303 yy_aconf->modes = 0;
4304 }
4305 break;
4306
4307 case 151:
4308
4309 /* Line 1464 of yacc.c */
4310 #line 1185 "ircd_parser.y"
4311 {
4312 if (conf_parser_ctx.pass == 2)
4313 yy_aconf->modes |= UMODE_BOTS;
4314 }
4315 break;
4316
4317 case 152:
4318
4319 /* Line 1464 of yacc.c */
4320 #line 1189 "ircd_parser.y"
4321 {
4322 if (conf_parser_ctx.pass == 2)
4323 yy_aconf->modes |= UMODE_CCONN;
4324 }
4325 break;
4326
4327 case 153:
4328
4329 /* Line 1464 of yacc.c */
4330 #line 1193 "ircd_parser.y"
4331 {
4332 if (conf_parser_ctx.pass == 2)
4333 yy_aconf->modes |= UMODE_CCONN_FULL;
4334 }
4335 break;
4336
4337 case 154:
4338
4339 /* Line 1464 of yacc.c */
4340 #line 1197 "ircd_parser.y"
4341 {
4342 if (conf_parser_ctx.pass == 2)
4343 yy_aconf->modes |= UMODE_DEAF;
4344 }
4345 break;
4346
4347 case 155:
4348
4349 /* Line 1464 of yacc.c */
4350 #line 1201 "ircd_parser.y"
4351 {
4352 if (conf_parser_ctx.pass == 2)
4353 yy_aconf->modes |= UMODE_DEBUG;
4354 }
4355 break;
4356
4357 case 156:
4358
4359 /* Line 1464 of yacc.c */
4360 #line 1205 "ircd_parser.y"
4361 {
4362 if (conf_parser_ctx.pass == 2)
4363 yy_aconf->modes |= UMODE_FULL;
4364 }
4365 break;
4366
4367 case 157:
4368
4369 /* Line 1464 of yacc.c */
4370 #line 1209 "ircd_parser.y"
4371 {
4372 if (conf_parser_ctx.pass == 2)
4373 yy_aconf->modes |= UMODE_SKILL;
4374 }
4375 break;
4376
4377 case 158:
4378
4379 /* Line 1464 of yacc.c */
4380 #line 1213 "ircd_parser.y"
4381 {
4382 if (conf_parser_ctx.pass == 2)
4383 yy_aconf->modes |= UMODE_NCHANGE;
4384 }
4385 break;
4386
4387 case 159:
4388
4389 /* Line 1464 of yacc.c */
4390 #line 1217 "ircd_parser.y"
4391 {
4392 if (conf_parser_ctx.pass == 2)
4393 yy_aconf->modes |= UMODE_REJ;
4394 }
4395 break;
4396
4397 case 160:
4398
4399 /* Line 1464 of yacc.c */
4400 #line 1221 "ircd_parser.y"
4401 {
4402 if (conf_parser_ctx.pass == 2)
4403 yy_aconf->modes |= UMODE_UNAUTH;
4404 }
4405 break;
4406
4407 case 161:
4408
4409 /* Line 1464 of yacc.c */
4410 #line 1225 "ircd_parser.y"
4411 {
4412 if (conf_parser_ctx.pass == 2)
4413 yy_aconf->modes |= UMODE_SPY;
4414 }
4415 break;
4416
4417 case 162:
4418
4419 /* Line 1464 of yacc.c */
4420 #line 1229 "ircd_parser.y"
4421 {
4422 if (conf_parser_ctx.pass == 2)
4423 yy_aconf->modes |= UMODE_EXTERNAL;
4424 }
4425 break;
4426
4427 case 163:
4428
4429 /* Line 1464 of yacc.c */
4430 #line 1233 "ircd_parser.y"
4431 {
4432 if (conf_parser_ctx.pass == 2)
4433 yy_aconf->modes |= UMODE_OPERWALL;
4434 }
4435 break;
4436
4437 case 164:
4438
4439 /* Line 1464 of yacc.c */
4440 #line 1237 "ircd_parser.y"
4441 {
4442 if (conf_parser_ctx.pass == 2)
4443 yy_aconf->modes |= UMODE_SERVNOTICE;
4444 }
4445 break;
4446
4447 case 165:
4448
4449 /* Line 1464 of yacc.c */
4450 #line 1241 "ircd_parser.y"
4451 {
4452 if (conf_parser_ctx.pass == 2)
4453 yy_aconf->modes |= UMODE_INVISIBLE;
4454 }
4455 break;
4456
4457 case 166:
4458
4459 /* Line 1464 of yacc.c */
4460 #line 1245 "ircd_parser.y"
4461 {
4462 if (conf_parser_ctx.pass == 2)
4463 yy_aconf->modes |= UMODE_WALLOP;
4464 }
4465 break;
4466
4467 case 167:
4468
4469 /* Line 1464 of yacc.c */
4470 #line 1249 "ircd_parser.y"
4471 {
4472 if (conf_parser_ctx.pass == 2)
4473 yy_aconf->modes |= UMODE_SOFTCALLERID;
4474 }
4475 break;
4476
4477 case 168:
4478
4479 /* Line 1464 of yacc.c */
4480 #line 1253 "ircd_parser.y"
4481 {
4482 if (conf_parser_ctx.pass == 2)
4483 yy_aconf->modes |= UMODE_CALLERID;
4484 }
4485 break;
4486
4487 case 169:
4488
4489 /* Line 1464 of yacc.c */
4490 #line 1257 "ircd_parser.y"
4491 {
4492 if (conf_parser_ctx.pass == 2)
4493 yy_aconf->modes |= UMODE_LOCOPS;
4494 }
4495 break;
4496
4497 case 170:
4498
4499 /* Line 1464 of yacc.c */
4500 #line 1263 "ircd_parser.y"
4501 {
4502 }
4503 break;
4504
4505 case 174:
4506
4507 /* Line 1464 of yacc.c */
4508 #line 1267 "ircd_parser.y"
4509 { not_atom = 1; }
4510 break;
4511
4512 case 176:
4513
4514 /* Line 1464 of yacc.c */
4515 #line 1268 "ircd_parser.y"
4516 { not_atom = 0; }
4517 break;
4518
4519 case 178:
4520
4521 /* Line 1464 of yacc.c */
4522 #line 1271 "ircd_parser.y"
4523 {
4524 if (conf_parser_ctx.pass == 2)
4525 {
4526 if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4527 else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4528 }
4529 }
4530 break;
4531
4532 case 179:
4533
4534 /* Line 1464 of yacc.c */
4535 #line 1278 "ircd_parser.y"
4536 {
4537 if (conf_parser_ctx.pass == 2)
4538 {
4539 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
4540 else yy_aconf->port |= OPER_FLAG_REMOTE;
4541 }
4542 }
4543 break;
4544
4545 case 180:
4546
4547 /* Line 1464 of yacc.c */
4548 #line 1285 "ircd_parser.y"
4549 {
4550 if (conf_parser_ctx.pass == 2)
4551 {
4552 if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
4553 else yy_aconf->port |= OPER_FLAG_K;
4554 }
4555 }
4556 break;
4557
4558 case 181:
4559
4560 /* Line 1464 of yacc.c */
4561 #line 1292 "ircd_parser.y"
4562 {
4563 if (conf_parser_ctx.pass == 2)
4564 {
4565 if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4566 else yy_aconf->port |= OPER_FLAG_UNKLINE;
4567 }
4568 }
4569 break;
4570
4571 case 182:
4572
4573 /* Line 1464 of yacc.c */
4574 #line 1299 "ircd_parser.y"
4575 {
4576 if (conf_parser_ctx.pass == 2)
4577 {
4578 if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
4579 else yy_aconf->port |= OPER_FLAG_X;
4580 }
4581 }
4582 break;
4583
4584 case 183:
4585
4586 /* Line 1464 of yacc.c */
4587 #line 1306 "ircd_parser.y"
4588 {
4589 if (conf_parser_ctx.pass == 2)
4590 {
4591 if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
4592 else yy_aconf->port |= OPER_FLAG_GLINE;
4593 }
4594 }
4595 break;
4596
4597 case 184:
4598
4599 /* Line 1464 of yacc.c */
4600 #line 1313 "ircd_parser.y"
4601 {
4602 if (conf_parser_ctx.pass == 2)
4603 {
4604 if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
4605 else yy_aconf->port |= OPER_FLAG_DIE;
4606 }
4607 }
4608 break;
4609
4610 case 185:
4611
4612 /* Line 1464 of yacc.c */
4613 #line 1320 "ircd_parser.y"
4614 {
4615 if (conf_parser_ctx.pass == 2)
4616 {
4617 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
4618 else yy_aconf->port |= OPER_FLAG_REHASH;
4619 }
4620 }
4621 break;
4622
4623 case 186:
4624
4625 /* Line 1464 of yacc.c */
4626 #line 1327 "ircd_parser.y"
4627 {
4628 if (conf_parser_ctx.pass == 2)
4629 {
4630 if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
4631 else yy_aconf->port |= OPER_FLAG_ADMIN;
4632 }
4633 }
4634 break;
4635
4636 case 187:
4637
4638 /* Line 1464 of yacc.c */
4639 #line 1334 "ircd_parser.y"
4640 {
4641 if (conf_parser_ctx.pass == 2)
4642 {
4643 if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4644 else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4645 }
4646 }
4647 break;
4648
4649 case 188:
4650
4651 /* Line 1464 of yacc.c */
4652 #line 1341 "ircd_parser.y"
4653 {
4654 if (conf_parser_ctx.pass == 2)
4655 {
4656 if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
4657 else yy_aconf->port |= OPER_FLAG_N;
4658 }
4659 }
4660 break;
4661
4662 case 189:
4663
4664 /* Line 1464 of yacc.c */
4665 #line 1348 "ircd_parser.y"
4666 {
4667 if (conf_parser_ctx.pass == 2)
4668 {
4669 if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4670 else yy_aconf->port |= OPER_FLAG_OPERWALL;
4671 }
4672 }
4673 break;
4674
4675 case 190:
4676
4677 /* Line 1464 of yacc.c */
4678 #line 1355 "ircd_parser.y"
4679 {
4680 if (conf_parser_ctx.pass == 2)
4681 {
4682 if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
4683 else yy_aconf->port |= OPER_FLAG_OPER_SPY;
4684 }
4685 }
4686 break;
4687
4688 case 191:
4689
4690 /* Line 1464 of yacc.c */
4691 #line 1362 "ircd_parser.y"
4692 {
4693 if (conf_parser_ctx.pass == 2)
4694 {
4695 if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
4696 else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
4697 }
4698 }
4699 break;
4700
4701 case 192:
4702
4703 /* Line 1464 of yacc.c */
4704 #line 1369 "ircd_parser.y"
4705 {
4706 if (conf_parser_ctx.pass == 2)
4707 {
4708 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
4709 else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4710 }
4711 }
4712 break;
4713
4714 case 193:
4715
4716 /* Line 1464 of yacc.c */
4717 #line 1376 "ircd_parser.y"
4718 {
4719 if (conf_parser_ctx.pass == 2)
4720 {
4721 if (not_atom) ClearConfEncrypted(yy_aconf);
4722 else SetConfEncrypted(yy_aconf);
4723 }
4724 }
4725 break;
4726
4727 case 194:
4728
4729 /* Line 1464 of yacc.c */
4730 #line 1389 "ircd_parser.y"
4731 {
4732 if (conf_parser_ctx.pass == 1)
4733 {
4734 yy_conf = make_conf_item(CLASS_TYPE);
4735 yy_class = map_to_conf(yy_conf);
4736 }
4737 }
4738 break;
4739
4740 case 195:
4741
4742 /* Line 1464 of yacc.c */
4743 #line 1396 "ircd_parser.y"
4744 {
4745 if (conf_parser_ctx.pass == 1)
4746 {
4747 struct ConfItem *cconf = NULL;
4748 struct ClassItem *class = NULL;
4749
4750 if (yy_class_name == NULL)
4751 delete_conf_item(yy_conf);
4752 else
4753 {
4754 cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
4755
4756 if (cconf != NULL) /* The class existed already */
4757 {
4758 int user_count = 0;
4759
4760 rebuild_cidr_class(cconf, yy_class);
4761
4762 class = map_to_conf(cconf);
4763
4764 user_count = class->curr_user_count;
4765 memcpy(class, yy_class, sizeof(*class));
4766 class->curr_user_count = user_count;
4767 class->active = 1;
4768
4769 delete_conf_item(yy_conf);
4770
4771 MyFree(cconf->name); /* Allows case change of class name */
4772 cconf->name = yy_class_name;
4773 }
4774 else /* Brand new class */
4775 {
4776 MyFree(yy_conf->name); /* just in case it was allocated */
4777 yy_conf->name = yy_class_name;
4778 yy_class->active = 1;
4779 }
4780 }
4781
4782 yy_class_name = NULL;
4783 }
4784 }
4785 break;
4786
4787 case 214:
4788
4789 /* Line 1464 of yacc.c */
4790 #line 1456 "ircd_parser.y"
4791 {
4792 if (conf_parser_ctx.pass == 1)
4793 {
4794 MyFree(yy_class_name);
4795 DupString(yy_class_name, yylval.string);
4796 }
4797 }
4798 break;
4799
4800 case 215:
4801
4802 /* Line 1464 of yacc.c */
4803 #line 1465 "ircd_parser.y"
4804 {
4805 if (conf_parser_ctx.pass == 1)
4806 {
4807 MyFree(yy_class_name);
4808 DupString(yy_class_name, yylval.string);
4809 }
4810 }
4811 break;
4812
4813 case 216:
4814
4815 /* Line 1464 of yacc.c */
4816 #line 1474 "ircd_parser.y"
4817 {
4818 if (conf_parser_ctx.pass == 1)
4819 PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
4820 }
4821 break;
4822
4823 case 217:
4824
4825 /* Line 1464 of yacc.c */
4826 #line 1480 "ircd_parser.y"
4827 {
4828 if (conf_parser_ctx.pass == 1)
4829 PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
4830 }
4831 break;
4832
4833 case 218:
4834
4835 /* Line 1464 of yacc.c */
4836 #line 1486 "ircd_parser.y"
4837 {
4838 if (conf_parser_ctx.pass == 1)
4839 MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
4840 }
4841 break;
4842
4843 case 219:
4844
4845 /* Line 1464 of yacc.c */
4846 #line 1492 "ircd_parser.y"
4847 {
4848 if (conf_parser_ctx.pass == 1)
4849 ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
4850 }
4851 break;
4852
4853 case 220:
4854
4855 /* Line 1464 of yacc.c */
4856 #line 1498 "ircd_parser.y"
4857 {
4858 if (conf_parser_ctx.pass == 1)
4859 MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
4860 }
4861 break;
4862
4863 case 221:
4864
4865 /* Line 1464 of yacc.c */
4866 #line 1504 "ircd_parser.y"
4867 {
4868 if (conf_parser_ctx.pass == 1)
4869 MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
4870 }
4871 break;
4872
4873 case 222:
4874
4875 /* Line 1464 of yacc.c */
4876 #line 1510 "ircd_parser.y"
4877 {
4878 if (conf_parser_ctx.pass == 1)
4879 MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
4880 }
4881 break;
4882
4883 case 223:
4884
4885 /* Line 1464 of yacc.c */
4886 #line 1516 "ircd_parser.y"
4887 {
4888 if (conf_parser_ctx.pass == 1)
4889 MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
4890 }
4891 break;
4892
4893 case 224:
4894
4895 /* Line 1464 of yacc.c */
4896 #line 1522 "ircd_parser.y"
4897 {
4898 if (conf_parser_ctx.pass == 1)
4899 MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
4900 }
4901 break;
4902
4903 case 225:
4904
4905 /* Line 1464 of yacc.c */
4906 #line 1528 "ircd_parser.y"
4907 {
4908 if (conf_parser_ctx.pass == 1)
4909 CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
4910 }
4911 break;
4912
4913 case 226:
4914
4915 /* Line 1464 of yacc.c */
4916 #line 1534 "ircd_parser.y"
4917 {
4918 if (conf_parser_ctx.pass == 1)
4919 CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
4920 }
4921 break;
4922
4923 case 227:
4924
4925 /* Line 1464 of yacc.c */
4926 #line 1540 "ircd_parser.y"
4927 {
4928 if (conf_parser_ctx.pass == 1)
4929 NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
4930 }
4931 break;
4932
4933 case 228:
4934
4935 /* Line 1464 of yacc.c */
4936 #line 1549 "ircd_parser.y"
4937 {
4938 if (conf_parser_ctx.pass == 2)
4939 {
4940 listener_address = NULL;
4941 listener_flags = 0;
4942 }
4943 }
4944 break;
4945
4946 case 229:
4947
4948 /* Line 1464 of yacc.c */
4949 #line 1556 "ircd_parser.y"
4950 {
4951 if (conf_parser_ctx.pass == 2)
4952 {
4953 MyFree(listener_address);
4954 listener_address = NULL;
4955 }
4956 }
4957 break;
4958
4959 case 230:
4960
4961 /* Line 1464 of yacc.c */
4962 #line 1565 "ircd_parser.y"
4963 {
4964 listener_flags = 0;
4965 }
4966 break;
4967
4968 case 234:
4969
4970 /* Line 1464 of yacc.c */
4971 #line 1571 "ircd_parser.y"
4972 {
4973 if (conf_parser_ctx.pass == 2)
4974 listener_flags |= LISTENER_SSL;
4975 }
4976 break;
4977
4978 case 235:
4979
4980 /* Line 1464 of yacc.c */
4981 #line 1575 "ircd_parser.y"
4982 {
4983 if (conf_parser_ctx.pass == 2)
4984 listener_flags |= LISTENER_HIDDEN;
4985 }
4986 break;
4987
4988 case 236:
4989
4990 /* Line 1464 of yacc.c */
4991 #line 1579 "ircd_parser.y"
4992 {
4993 if (conf_parser_ctx.pass == 2)
4994 listener_flags |= LISTENER_SERVER;
4995 }
4996 break;
4997
4998 case 244:
4999
5000 /* Line 1464 of yacc.c */
5001 #line 1589 "ircd_parser.y"
5002 { listener_flags = 0; }
5003 break;
5004
5005 case 248:
5006
5007 /* Line 1464 of yacc.c */
5008 #line 1594 "ircd_parser.y"
5009 {
5010 if (conf_parser_ctx.pass == 2)
5011 {
5012 if ((listener_flags & LISTENER_SSL))
5013 #ifdef HAVE_LIBCRYPTO
5014 if (!ServerInfo.server_ctx)
5015 #endif
5016 {
5017 yyerror("SSL not available - port closed");
5018 break;
5019 }
5020 add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
5021 }
5022 }
5023 break;
5024
5025 case 249:
5026
5027 /* Line 1464 of yacc.c */
5028 #line 1608 "ircd_parser.y"
5029 {
5030 if (conf_parser_ctx.pass == 2)
5031 {
5032 int i;
5033
5034 if ((listener_flags & LISTENER_SSL))
5035 #ifdef HAVE_LIBCRYPTO
5036 if (!ServerInfo.server_ctx)
5037 #endif
5038 {
5039 yyerror("SSL not available - port closed");
5040 break;
5041 }
5042
5043 for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
5044 add_listener(i, listener_address, listener_flags);
5045 }
5046 }
5047 break;
5048
5049 case 250:
5050
5051 /* Line 1464 of yacc.c */
5052 #line 1628 "ircd_parser.y"
5053 {
5054 if (conf_parser_ctx.pass == 2)
5055 {
5056 MyFree(listener_address);
5057 DupString(listener_address, yylval.string);
5058 }
5059 }
5060 break;
5061
5062 case 251:
5063
5064 /* Line 1464 of yacc.c */
5065 #line 1637 "ircd_parser.y"
5066 {
5067 if (conf_parser_ctx.pass == 2)
5068 {
5069 MyFree(listener_address);
5070 DupString(listener_address, yylval.string);
5071 }
5072 }
5073 break;
5074
5075 case 252:
5076
5077 /* Line 1464 of yacc.c */
5078 #line 1649 "ircd_parser.y"
5079 {
5080 if (conf_parser_ctx.pass == 2)
5081 {
5082 yy_conf = make_conf_item(CLIENT_TYPE);
5083 yy_aconf = map_to_conf(yy_conf);
5084 }
5085 else
5086 {
5087 MyFree(class_name);
5088 class_name = NULL;
5089 }
5090 }
5091 break;
5092
5093 case 253:
5094
5095 /* Line 1464 of yacc.c */
5096 #line 1661 "ircd_parser.y"
5097 {
5098 if (conf_parser_ctx.pass == 2)
5099 {
5100 struct CollectItem *yy_tmp = NULL;
5101 dlink_node *ptr = NULL, *next_ptr = NULL;
5102
5103 if (yy_aconf->user && yy_aconf->host)
5104 {
5105 conf_add_class_to_conf(yy_conf, class_name);
5106 add_conf_by_address(CONF_CLIENT, yy_aconf);
5107 }
5108 else
5109 delete_conf_item(yy_conf);
5110
5111 /* copy over settings from first struct */
5112 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5113 {
5114 struct AccessItem *new_aconf;
5115 struct ConfItem *new_conf;
5116
5117 new_conf = make_conf_item(CLIENT_TYPE);
5118 new_aconf = map_to_conf(new_conf);
5119
5120 yy_tmp = ptr->data;
5121
5122 assert(yy_tmp->user && yy_tmp->host);
5123
5124 if (yy_aconf->passwd != NULL)
5125 DupString(new_aconf->passwd, yy_aconf->passwd);
5126 if (yy_conf->name != NULL)
5127 DupString(new_conf->name, yy_conf->name);
5128 if (yy_aconf->passwd != NULL)
5129 DupString(new_aconf->passwd, yy_aconf->passwd);
5130
5131 new_aconf->flags = yy_aconf->flags;
5132 new_aconf->port = yy_aconf->port;
5133
5134 DupString(new_aconf->user, yy_tmp->user);
5135 collapse(new_aconf->user);
5136
5137 DupString(new_aconf->host, yy_tmp->host);
5138 collapse(new_aconf->host);
5139
5140 conf_add_class_to_conf(new_conf, class_name);
5141 add_conf_by_address(CONF_CLIENT, new_aconf);
5142 dlinkDelete(&yy_tmp->node, &col_conf_list);
5143 free_collect_item(yy_tmp);
5144 }
5145
5146 MyFree(class_name);
5147 class_name = NULL;
5148 yy_conf = NULL;
5149 yy_aconf = NULL;
5150 }
5151 }
5152 break;
5153
5154 case 265:
5155
5156 /* Line 1464 of yacc.c */
5157 #line 1723 "ircd_parser.y"
5158 {
5159 if (conf_parser_ctx.pass == 2)
5160 {
5161 struct CollectItem *yy_tmp = NULL;
5162 struct split_nuh_item nuh;
5163
5164 nuh.nuhmask = yylval.string;
5165 nuh.nickptr = NULL;
5166 nuh.userptr = userbuf;
5167 nuh.hostptr = hostbuf;
5168
5169 nuh.nicksize = 0;
5170 nuh.usersize = sizeof(userbuf);
5171 nuh.hostsize = sizeof(hostbuf);
5172
5173 split_nuh(&nuh);
5174
5175 if (yy_aconf->user == NULL)
5176 {
5177 DupString(yy_aconf->user, userbuf);
5178 DupString(yy_aconf->host, hostbuf);
5179 }
5180 else
5181 {
5182 yy_tmp = MyMalloc(sizeof(struct CollectItem));
5183
5184 DupString(yy_tmp->user, userbuf);
5185 DupString(yy_tmp->host, hostbuf);
5186
5187 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5188 }
5189 }
5190 }
5191 break;
5192
5193 case 266:
5194
5195 /* Line 1464 of yacc.c */
5196 #line 1760 "ircd_parser.y"
5197 {
5198 if (conf_parser_ctx.pass == 2)
5199 {
5200 /* be paranoid */
5201 if (yy_aconf->passwd != NULL)
5202 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5203
5204 MyFree(yy_aconf->passwd);
5205 DupString(yy_aconf->passwd, yylval.string);
5206 }
5207 }
5208 break;
5209
5210 case 267:
5211
5212 /* Line 1464 of yacc.c */
5213 #line 1773 "ircd_parser.y"
5214 {
5215 if (conf_parser_ctx.pass == 2)
5216 {
5217 MyFree(class_name);
5218 DupString(class_name, yylval.string);
5219 }
5220 }
5221 break;
5222
5223 case 268:
5224
5225 /* Line 1464 of yacc.c */
5226 #line 1782 "ircd_parser.y"
5227 {
5228 if (conf_parser_ctx.pass == 2)
5229 {
5230 if (yylval.number)
5231 SetConfEncrypted(yy_aconf);
5232 else
5233 ClearConfEncrypted(yy_aconf);
5234 }
5235 }
5236 break;
5237
5238 case 269:
5239
5240 /* Line 1464 of yacc.c */
5241 #line 1793 "ircd_parser.y"
5242 {
5243 }
5244 break;
5245
5246 case 273:
5247
5248 /* Line 1464 of yacc.c */
5249 #line 1797 "ircd_parser.y"
5250 { not_atom = 1; }
5251 break;
5252
5253 case 275:
5254
5255 /* Line 1464 of yacc.c */
5256 #line 1798 "ircd_parser.y"
5257 { not_atom = 0; }
5258 break;
5259
5260 case 277:
5261
5262 /* Line 1464 of yacc.c */
5263 #line 1801 "ircd_parser.y"
5264 {
5265 if (conf_parser_ctx.pass == 2)
5266 {
5267 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5268 else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5269 }
5270 }
5271 break;
5272
5273 case 278:
5274
5275 /* Line 1464 of yacc.c */
5276 #line 1808 "ircd_parser.y"
5277 {
5278 if (conf_parser_ctx.pass == 2)
5279 {
5280 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5281 else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5282 }
5283 }
5284 break;
5285
5286 case 279:
5287
5288 /* Line 1464 of yacc.c */
5289 #line 1815 "ircd_parser.y"
5290 {
5291 if (conf_parser_ctx.pass == 2)
5292 {
5293 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5294 else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5295 }
5296 }
5297 break;
5298
5299 case 280:
5300
5301 /* Line 1464 of yacc.c */
5302 #line 1822 "ircd_parser.y"
5303 {
5304 if (conf_parser_ctx.pass == 2)
5305 {
5306 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5307 else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5308 }
5309 }
5310 break;
5311
5312 case 281:
5313
5314 /* Line 1464 of yacc.c */
5315 #line 1829 "ircd_parser.y"
5316 {
5317 if (conf_parser_ctx.pass == 2)
5318 {
5319 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5320 else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5321 }
5322 }
5323 break;
5324
5325 case 282:
5326
5327 /* Line 1464 of yacc.c */
5328 #line 1836 "ircd_parser.y"
5329 {
5330 if (conf_parser_ctx.pass == 2)
5331 {
5332 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
5333 else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
5334 }
5335 }
5336 break;
5337
5338 case 283:
5339
5340 /* Line 1464 of yacc.c */
5341 #line 1843 "ircd_parser.y"
5342 {
5343 if (conf_parser_ctx.pass == 2)
5344 {
5345 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5346 else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5347 }
5348 }
5349 break;
5350
5351 case 284:
5352
5353 /* Line 1464 of yacc.c */
5354 #line 1850 "ircd_parser.y"
5355 {
5356 if (conf_parser_ctx.pass == 2)
5357 {
5358 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5359 else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5360 }
5361 }
5362 break;
5363
5364 case 285:
5365
5366 /* Line 1464 of yacc.c */
5367 #line 1857 "ircd_parser.y"
5368 {
5369 if (conf_parser_ctx.pass == 2)
5370 {
5371 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
5372 else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5373 }
5374 }
5375 break;
5376
5377 case 286:
5378
5379 /* Line 1464 of yacc.c */
5380 #line 1864 "ircd_parser.y"
5381 {
5382 if (conf_parser_ctx.pass == 2)
5383 {
5384 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5385 else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5386 }
5387 }
5388 break;
5389
5390 case 287:
5391
5392 /* Line 1464 of yacc.c */
5393 #line 1874 "ircd_parser.y"
5394 {
5395 if (conf_parser_ctx.pass == 2)
5396 {
5397 MyFree(yy_conf->name);
5398
5399 if (strlen(yylval.string) < HOSTLEN)
5400 {
5401 DupString(yy_conf->name, yylval.string);
5402 yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5403 }
5404 else
5405 {
5406 ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5407 yy_conf->name = NULL;
5408 }
5409 }
5410 }
5411 break;
5412
5413 case 288:
5414
5415 /* Line 1464 of yacc.c */
5416 #line 1893 "ircd_parser.y"
5417 {
5418 if (conf_parser_ctx.pass == 2)
5419 {
5420 yy_aconf->flags |= CONF_FLAGS_REDIR;
5421 MyFree(yy_conf->name);
5422 DupString(yy_conf->name, yylval.string);
5423 }
5424 }
5425 break;
5426
5427 case 289:
5428
5429 /* Line 1464 of yacc.c */
5430 #line 1903 "ircd_parser.y"
5431 {
5432 if (conf_parser_ctx.pass == 2)
5433 {
5434 yy_aconf->flags |= CONF_FLAGS_REDIR;
5435 yy_aconf->port = (yyvsp[(3) - (4)].number);
5436 }
5437 }
5438 break;
5439
5440 case 290:
5441
5442 /* Line 1464 of yacc.c */
5443 #line 1916 "ircd_parser.y"
5444 {
5445 if (conf_parser_ctx.pass == 2)
5446 {
5447 MyFree(resv_reason);
5448 resv_reason = NULL;
5449 }
5450 }
5451 break;
5452
5453 case 291:
5454
5455 /* Line 1464 of yacc.c */
5456 #line 1923 "ircd_parser.y"
5457 {
5458 if (conf_parser_ctx.pass == 2)
5459 {
5460 MyFree(resv_reason);
5461 resv_reason = NULL;
5462 }
5463 }
5464 break;
5465
5466 case 298:
5467
5468 /* Line 1464 of yacc.c */
5469 #line 1935 "ircd_parser.y"
5470 {
5471 if (conf_parser_ctx.pass == 2)
5472 {
5473 MyFree(resv_reason);
5474 DupString(resv_reason, yylval.string);
5475 }
5476 }
5477 break;
5478
5479 case 299:
5480
5481 /* Line 1464 of yacc.c */
5482 #line 1944 "ircd_parser.y"
5483 {
5484 if (conf_parser_ctx.pass == 2)
5485 {
5486 if (IsChanPrefix(*yylval.string))
5487 {
5488 char def_reason[] = "No reason";
5489
5490 create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5491 }
5492 }
5493 /* ignore it for now.. but we really should make a warning if
5494 * its an erroneous name --fl_ */
5495 }
5496 break;
5497
5498 case 300:
5499
5500 /* Line 1464 of yacc.c */
5501 #line 1959 "ircd_parser.y"
5502 {
5503 if (conf_parser_ctx.pass == 2)
5504 {
5505 char def_reason[] = "No reason";
5506
5507 create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5508 }
5509 }
5510 break;
5511
5512 case 301:
5513
5514 /* Line 1464 of yacc.c */
5515 #line 1972 "ircd_parser.y"
5516 {
5517 if (conf_parser_ctx.pass == 2)
5518 {
5519 yy_conf = make_conf_item(ULINE_TYPE);
5520 yy_match_item = map_to_conf(yy_conf);
5521 yy_match_item->action = SHARED_ALL;
5522 }
5523 }
5524 break;
5525
5526 case 302:
5527
5528 /* Line 1464 of yacc.c */
5529 #line 1980 "ircd_parser.y"
5530 {
5531 if (conf_parser_ctx.pass == 2)
5532 {
5533 yy_conf = NULL;
5534 }
5535 }
5536 break;
5537
5538 case 309:
5539
5540 /* Line 1464 of yacc.c */
5541 #line 1991 "ircd_parser.y"
5542 {
5543 if (conf_parser_ctx.pass == 2)
5544 {
5545 MyFree(yy_conf->name);
5546 DupString(yy_conf->name, yylval.string);
5547 }
5548 }
5549 break;
5550
5551 case 310:
5552
5553 /* Line 1464 of yacc.c */
5554 #line 2000 "ircd_parser.y"
5555 {
5556 if (conf_parser_ctx.pass == 2)
5557 {
5558 struct split_nuh_item nuh;
5559
5560 nuh.nuhmask = yylval.string;
5561 nuh.nickptr = NULL;
5562 nuh.userptr = userbuf;
5563 nuh.hostptr = hostbuf;
5564
5565 nuh.nicksize = 0;
5566 nuh.usersize = sizeof(userbuf);
5567 nuh.hostsize = sizeof(hostbuf);
5568
5569 split_nuh(&nuh);
5570
5571 DupString(yy_match_item->user, userbuf);
5572 DupString(yy_match_item->host, hostbuf);
5573 }
5574 }
5575 break;
5576
5577 case 311:
5578
5579 /* Line 1464 of yacc.c */
5580 #line 2022 "ircd_parser.y"
5581 {
5582 if (conf_parser_ctx.pass == 2)
5583 yy_match_item->action = 0;
5584 }
5585 break;
5586
5587 case 315:
5588
5589 /* Line 1464 of yacc.c */
5590 #line 2029 "ircd_parser.y"
5591 {
5592 if (conf_parser_ctx.pass == 2)
5593 yy_match_item->action |= SHARED_KLINE;
5594 }
5595 break;
5596
5597 case 316:
5598
5599 /* Line 1464 of yacc.c */
5600 #line 2033 "ircd_parser.y"
5601 {
5602 if (conf_parser_ctx.pass == 2)
5603 yy_match_item->action |= SHARED_TKLINE;
5604 }
5605 break;
5606
5607 case 317:
5608
5609 /* Line 1464 of yacc.c */
5610 #line 2037 "ircd_parser.y"
5611 {
5612 if (conf_parser_ctx.pass == 2)
5613 yy_match_item->action |= SHARED_UNKLINE;
5614 }
5615 break;
5616
5617 case 318:
5618
5619 /* Line 1464 of yacc.c */
5620 #line 2041 "ircd_parser.y"
5621 {
5622 if (conf_parser_ctx.pass == 2)
5623 yy_match_item->action |= SHARED_XLINE;
5624 }
5625 break;
5626
5627 case 319:
5628
5629 /* Line 1464 of yacc.c */
5630 #line 2045 "ircd_parser.y"
5631 {
5632 if (conf_parser_ctx.pass == 2)
5633 yy_match_item->action |= SHARED_TXLINE;
5634 }
5635 break;
5636
5637 case 320:
5638
5639 /* Line 1464 of yacc.c */
5640 #line 2049 "ircd_parser.y"
5641 {
5642 if (conf_parser_ctx.pass == 2)
5643 yy_match_item->action |= SHARED_UNXLINE;
5644 }
5645 break;
5646
5647 case 321:
5648
5649 /* Line 1464 of yacc.c */
5650 #line 2053 "ircd_parser.y"
5651 {
5652 if (conf_parser_ctx.pass == 2)
5653 yy_match_item->action |= SHARED_RESV;
5654 }
5655 break;
5656
5657 case 322:
5658
5659 /* Line 1464 of yacc.c */
5660 #line 2057 "ircd_parser.y"
5661 {
5662 if (conf_parser_ctx.pass == 2)
5663 yy_match_item->action |= SHARED_TRESV;
5664 }
5665 break;
5666
5667 case 323:
5668
5669 /* Line 1464 of yacc.c */
5670 #line 2061 "ircd_parser.y"
5671 {
5672 if (conf_parser_ctx.pass == 2)
5673 yy_match_item->action |= SHARED_UNRESV;
5674 }
5675 break;
5676
5677 case 324:
5678
5679 /* Line 1464 of yacc.c */
5680 #line 2065 "ircd_parser.y"
5681 {
5682 if (conf_parser_ctx.pass == 2)
5683 yy_match_item->action |= SHARED_LOCOPS;
5684 }
5685 break;
5686
5687 case 325:
5688
5689 /* Line 1464 of yacc.c */
5690 #line 2069 "ircd_parser.y"
5691 {
5692 if (conf_parser_ctx.pass == 2)
5693 yy_match_item->action = SHARED_ALL;
5694 }
5695 break;
5696
5697 case 326:
5698
5699 /* Line 1464 of yacc.c */
5700 #line 2078 "ircd_parser.y"
5701 {
5702 if (conf_parser_ctx.pass == 2)
5703 {
5704 yy_conf = make_conf_item(CLUSTER_TYPE);
5705 yy_conf->flags = SHARED_ALL;
5706 }
5707 }
5708 break;
5709
5710 case 327:
5711
5712 /* Line 1464 of yacc.c */
5713 #line 2085 "ircd_parser.y"
5714 {
5715 if (conf_parser_ctx.pass == 2)
5716 {
5717 if (yy_conf->name == NULL)
5718 DupString(yy_conf->name, "*");
5719 yy_conf = NULL;
5720 }
5721 }
5722 break;
5723
5724 case 333:
5725
5726 /* Line 1464 of yacc.c */
5727 #line 2098 "ircd_parser.y"
5728 {
5729 if (conf_parser_ctx.pass == 2)
5730 DupString(yy_conf->name, yylval.string);
5731 }
5732 break;
5733
5734 case 334:
5735
5736 /* Line 1464 of yacc.c */
5737 #line 2104 "ircd_parser.y"
5738 {
5739 if (conf_parser_ctx.pass == 2)
5740 yy_conf->flags = 0;
5741 }
5742 break;
5743
5744 case 338:
5745
5746 /* Line 1464 of yacc.c */
5747 #line 2111 "ircd_parser.y"
5748 {
5749 if (conf_parser_ctx.pass == 2)
5750 yy_conf->flags |= SHARED_KLINE;
5751 }
5752 break;
5753
5754 case 339:
5755
5756 /* Line 1464 of yacc.c */
5757 #line 2115 "ircd_parser.y"
5758 {
5759 if (conf_parser_ctx.pass == 2)
5760 yy_conf->flags |= SHARED_TKLINE;
5761 }
5762 break;
5763
5764 case 340:
5765
5766 /* Line 1464 of yacc.c */
5767 #line 2119 "ircd_parser.y"
5768 {
5769 if (conf_parser_ctx.pass == 2)
5770 yy_conf->flags |= SHARED_UNKLINE;
5771 }
5772 break;
5773
5774 case 341:
5775
5776 /* Line 1464 of yacc.c */
5777 #line 2123 "ircd_parser.y"
5778 {
5779 if (conf_parser_ctx.pass == 2)
5780 yy_conf->flags |= SHARED_XLINE;
5781 }
5782 break;
5783
5784 case 342:
5785
5786 /* Line 1464 of yacc.c */
5787 #line 2127 "ircd_parser.y"
5788 {
5789 if (conf_parser_ctx.pass == 2)
5790 yy_conf->flags |= SHARED_TXLINE;
5791 }
5792 break;
5793
5794 case 343:
5795
5796 /* Line 1464 of yacc.c */
5797 #line 2131 "ircd_parser.y"
5798 {
5799 if (conf_parser_ctx.pass == 2)
5800 yy_conf->flags |= SHARED_UNXLINE;
5801 }
5802 break;
5803
5804 case 344:
5805
5806 /* Line 1464 of yacc.c */
5807 #line 2135 "ircd_parser.y"
5808 {
5809 if (conf_parser_ctx.pass == 2)
5810 yy_conf->flags |= SHARED_RESV;
5811 }
5812 break;
5813
5814 case 345:
5815
5816 /* Line 1464 of yacc.c */
5817 #line 2139 "ircd_parser.y"
5818 {
5819 if (conf_parser_ctx.pass == 2)
5820 yy_conf->flags |= SHARED_TRESV;
5821 }
5822 break;
5823
5824 case 346:
5825
5826 /* Line 1464 of yacc.c */
5827 #line 2143 "ircd_parser.y"
5828 {
5829 if (conf_parser_ctx.pass == 2)
5830 yy_conf->flags |= SHARED_UNRESV;
5831 }
5832 break;
5833
5834 case 347:
5835
5836 /* Line 1464 of yacc.c */
5837 #line 2147 "ircd_parser.y"
5838 {
5839 if (conf_parser_ctx.pass == 2)
5840 yy_conf->flags |= SHARED_LOCOPS;
5841 }
5842 break;
5843
5844 case 348:
5845
5846 /* Line 1464 of yacc.c */
5847 #line 2151 "ircd_parser.y"
5848 {
5849 if (conf_parser_ctx.pass == 2)
5850 yy_conf->flags = SHARED_ALL;
5851 }
5852 break;
5853
5854 case 349:
5855
5856 /* Line 1464 of yacc.c */
5857 #line 2160 "ircd_parser.y"
5858 {
5859 if (conf_parser_ctx.pass == 2)
5860 {
5861 yy_conf = make_conf_item(SERVER_TYPE);
5862 yy_aconf = (struct AccessItem *)map_to_conf(yy_conf);
5863 yy_aconf->passwd = NULL;
5864 /* defaults */
5865 yy_aconf->port = PORTNUM;
5866
5867 if (ConfigFileEntry.burst_away)
5868 yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
5869 }
5870 else
5871 {
5872 MyFree(class_name);
5873 class_name = NULL;
5874 }
5875 }
5876 break;
5877
5878 case 350:
5879
5880 /* Line 1464 of yacc.c */
5881 #line 2178 "ircd_parser.y"
5882 {
5883 if (conf_parser_ctx.pass == 2)
5884 {
5885 struct CollectItem *yy_hconf=NULL;
5886 struct CollectItem *yy_lconf=NULL;
5887 dlink_node *ptr;
5888 dlink_node *next_ptr;
5889 #ifdef HAVE_LIBCRYPTO
5890 if (yy_aconf->host &&
5891 ((yy_aconf->passwd && yy_aconf->spasswd) ||
5892 (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
5893 #else /* !HAVE_LIBCRYPTO */
5894 if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
5895 yy_aconf->passwd && yy_aconf->spasswd)
5896 #endif /* !HAVE_LIBCRYPTO */
5897 {
5898 if (conf_add_server(yy_conf, class_name) == -1)
5899 {
5900 delete_conf_item(yy_conf);
5901 yy_conf = NULL;
5902 yy_aconf = NULL;
5903 }
5904 }
5905 else
5906 {
5907 /* Even if yy_conf ->name is NULL
5908 * should still unhook any hub/leaf confs still pending
5909 */
5910 unhook_hub_leaf_confs();
5911
5912 if (yy_conf->name != NULL)
5913 {
5914 #ifndef HAVE_LIBCRYPTO
5915 if (IsConfCryptLink(yy_aconf))
5916 yyerror("Ignoring connect block -- no OpenSSL support");
5917 #else
5918 if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
5919 yyerror("Ignoring connect block -- missing key");
5920 #endif
5921 if (yy_aconf->host == NULL)
5922 yyerror("Ignoring connect block -- missing host");
5923 else if (!IsConfCryptLink(yy_aconf) &&
5924 (!yy_aconf->passwd || !yy_aconf->spasswd))
5925 yyerror("Ignoring connect block -- missing password");
5926 }
5927
5928
5929 /* XXX
5930 * This fixes a try_connections() core (caused by invalid class_ptr
5931 * pointers) reported by metalrock. That's an ugly fix, but there
5932 * is currently no better way. The entire config subsystem needs an
5933 * rewrite ASAP. make_conf_item() shouldn't really add things onto
5934 * a doubly linked list immediately without any sanity checks! -Michael
5935 */
5936 delete_conf_item(yy_conf);
5937
5938 yy_aconf = NULL;
5939 yy_conf = NULL;
5940 }
5941
5942 /*
5943 * yy_conf is still pointing at the server that is having
5944 * a connect block built for it. This means, y_aconf->name
5945 * points to the actual irc name this server will be known as.
5946 * Now this new server has a set or even just one hub_mask (or leaf_mask)
5947 * given in the link list at yy_hconf. Fill in the HUB confs
5948 * from this link list now.
5949 */
5950 DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
5951 {
5952 struct ConfItem *new_hub_conf;
5953 struct MatchItem *match_item;
5954
5955 yy_hconf = ptr->data;
5956
5957 /* yy_conf == NULL is a fatal error for this connect block! */
5958 if ((yy_conf != NULL) && (yy_conf->name != NULL))
5959 {
5960 new_hub_conf = make_conf_item(HUB_TYPE);
5961 match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
5962 DupString(new_hub_conf->name, yy_conf->name);
5963 if (yy_hconf->user != NULL)
5964 DupString(match_item->user, yy_hconf->user);
5965 else
5966 DupString(match_item->user, "*");
5967 if (yy_hconf->host != NULL)
5968 DupString(match_item->host, yy_hconf->host);
5969 else
5970 DupString(match_item->host, "*");
5971 }
5972 dlinkDelete(&yy_hconf->node, &hub_conf_list);
5973 free_collect_item(yy_hconf);
5974 }
5975
5976 /* Ditto for the LEAF confs */
5977
5978 DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
5979 {
5980 struct ConfItem *new_leaf_conf;
5981 struct MatchItem *match_item;
5982
5983 yy_lconf = ptr->data;
5984
5985 if ((yy_conf != NULL) && (yy_conf->name != NULL))
5986 {
5987 new_leaf_conf = make_conf_item(LEAF_TYPE);
5988 match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
5989 DupString(new_leaf_conf->name, yy_conf->name);
5990 if (yy_lconf->user != NULL)
5991 DupString(match_item->user, yy_lconf->user);
5992 else
5993 DupString(match_item->user, "*");
5994 if (yy_lconf->host != NULL)
5995 DupString(match_item->host, yy_lconf->host);
5996 else
5997 DupString(match_item->host, "*");
5998 }
5999 dlinkDelete(&yy_lconf->node, &leaf_conf_list);
6000 free_collect_item(yy_lconf);
6001 }
6002 MyFree(class_name);
6003 class_name = NULL;
6004 yy_conf = NULL;
6005 yy_aconf = NULL;
6006 }
6007 }
6008 break;
6009
6010 case 370:
6011
6012 /* Line 1464 of yacc.c */
6013 #line 2316 "ircd_parser.y"
6014 {
6015 if (conf_parser_ctx.pass == 2)
6016 {
6017 if (yy_conf->name != NULL)
6018 yyerror("Multiple connect name entry");
6019
6020 MyFree(yy_conf->name);
6021 DupString(yy_conf->name, yylval.string);
6022 }
6023 }
6024 break;
6025
6026 case 371:
6027
6028 /* Line 1464 of yacc.c */
6029 #line 2328 "ircd_parser.y"
6030 {
6031 if (conf_parser_ctx.pass == 2)
6032 {
6033 if (yy_conf->name != NULL)
6034 yyerror("Multiple connect name entry");
6035
6036 MyFree(yy_conf->name);
6037 DupString(yy_conf->name, yylval.string);
6038 }
6039 }
6040 break;
6041
6042 case 372:
6043
6044 /* Line 1464 of yacc.c */
6045 #line 2340 "ircd_parser.y"
6046 {
6047 if (conf_parser_ctx.pass == 2)
6048 {
6049 MyFree(yy_aconf->host);
6050 DupString(yy_aconf->host, yylval.string);
6051 }
6052 }
6053 break;
6054
6055 case 373:
6056
6057 /* Line 1464 of yacc.c */
6058 #line 2349 "ircd_parser.y"
6059 {
6060 if (conf_parser_ctx.pass == 2)
6061 {
6062 struct addrinfo hints, *res;
6063
6064 memset(&hints, 0, sizeof(hints));
6065
6066 hints.ai_family = AF_UNSPEC;
6067 hints.ai_socktype = SOCK_STREAM;
6068 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
6069
6070 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
6071 ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
6072 else
6073 {
6074 assert(res != NULL);
6075
6076 memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
6077 yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
6078 yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
6079 irc_freeaddrinfo(res);
6080 }
6081 }
6082 }
6083 break;
6084
6085 case 374:
6086
6087 /* Line 1464 of yacc.c */
6088 #line 2375 "ircd_parser.y"
6089 {
6090 if (conf_parser_ctx.pass == 2)
6091 {
6092 if ((yyvsp[(3) - (4)].string)[0] == ':')
6093 yyerror("Server passwords cannot begin with a colon");
6094 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6095 yyerror("Server passwords cannot contain spaces");
6096 else {
6097 if (yy_aconf->spasswd != NULL)
6098 memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
6099
6100 MyFree(yy_aconf->spasswd);
6101 DupString(yy_aconf->spasswd, yylval.string);
6102 }
6103 }
6104 }
6105 break;
6106
6107 case 375:
6108
6109 /* Line 1464 of yacc.c */
6110 #line 2393 "ircd_parser.y"
6111 {
6112 if (conf_parser_ctx.pass == 2)
6113 {
6114 if ((yyvsp[(3) - (4)].string)[0] == ':')
6115 yyerror("Server passwords cannot begin with a colon");
6116 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6117 yyerror("Server passwords cannot contain spaces");
6118 else {
6119 if (yy_aconf->passwd != NULL)
6120 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
6121
6122 MyFree(yy_aconf->passwd);
6123 DupString(yy_aconf->passwd, yylval.string);
6124 }
6125 }
6126 }
6127 break;
6128
6129 case 376:
6130
6131 /* Line 1464 of yacc.c */
6132 #line 2411 "ircd_parser.y"
6133 {
6134 if (conf_parser_ctx.pass == 2)
6135 yy_aconf->port = (yyvsp[(3) - (4)].number);
6136 }
6137 break;
6138
6139 case 377:
6140
6141 /* Line 1464 of yacc.c */
6142 #line 2417 "ircd_parser.y"
6143 {
6144 if (conf_parser_ctx.pass == 2)
6145 yy_aconf->aftype = AF_INET;
6146 }
6147 break;
6148
6149 case 378:
6150
6151 /* Line 1464 of yacc.c */
6152 #line 2421 "ircd_parser.y"
6153 {
6154 #ifdef IPV6
6155 if (conf_parser_ctx.pass == 2)
6156 yy_aconf->aftype = AF_INET6;
6157 #endif
6158 }
6159 break;
6160
6161 case 379:
6162
6163 /* Line 1464 of yacc.c */
6164 #line 2429 "ircd_parser.y"
6165 {
6166 }
6167 break;
6168
6169 case 383:
6170
6171 /* Line 1464 of yacc.c */
6172 #line 2433 "ircd_parser.y"
6173 { not_atom = 1; }
6174 break;
6175
6176 case 385:
6177
6178 /* Line 1464 of yacc.c */
6179 #line 2434 "ircd_parser.y"
6180 { not_atom = 0; }
6181 break;
6182
6183 case 387:
6184
6185 /* Line 1464 of yacc.c */
6186 #line 2437 "ircd_parser.y"
6187 {
6188 if (conf_parser_ctx.pass == 2)
6189 #ifndef HAVE_LIBZ
6190 yyerror("Ignoring flags = compressed; -- no zlib support");
6191 #else
6192 {
6193 if (not_atom)ClearConfCompressed(yy_aconf);
6194 else SetConfCompressed(yy_aconf);
6195 }
6196 #endif
6197 }
6198 break;
6199
6200 case 388:
6201
6202 /* Line 1464 of yacc.c */
6203 #line 2448 "ircd_parser.y"
6204 {
6205 if (conf_parser_ctx.pass == 2)
6206 {
6207 if (not_atom)ClearConfCryptLink(yy_aconf);
6208 else SetConfCryptLink(yy_aconf);
6209 }
6210 }
6211 break;
6212
6213 case 389:
6214
6215 /* Line 1464 of yacc.c */
6216 #line 2455 "ircd_parser.y"
6217 {
6218 if (conf_parser_ctx.pass == 2)
6219 {
6220 if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6221 else SetConfAllowAutoConn(yy_aconf);
6222 }
6223 }
6224 break;
6225
6226 case 390:
6227
6228 /* Line 1464 of yacc.c */
6229 #line 2462 "ircd_parser.y"
6230 {
6231 if (conf_parser_ctx.pass == 2)
6232 {
6233 if (not_atom)ClearConfAwayBurst(yy_aconf);
6234 else SetConfAwayBurst(yy_aconf);
6235 }
6236 }
6237 break;
6238
6239 case 391:
6240
6241 /* Line 1464 of yacc.c */
6242 #line 2469 "ircd_parser.y"
6243 {
6244 if (conf_parser_ctx.pass == 2)
6245 {
6246 if (not_atom)ClearConfTopicBurst(yy_aconf);
6247 else SetConfTopicBurst(yy_aconf);
6248 }
6249 }
6250 break;
6251
6252 case 392:
6253
6254 /* Line 1464 of yacc.c */
6255 #line 2479 "ircd_parser.y"
6256 {
6257 #ifdef HAVE_LIBCRYPTO
6258 if (conf_parser_ctx.pass == 2)
6259 {
6260 BIO *file;
6261
6262 if (yy_aconf->rsa_public_key != NULL)
6263 {
6264 RSA_free(yy_aconf->rsa_public_key);
6265 yy_aconf->rsa_public_key = NULL;
6266 }
6267
6268 if (yy_aconf->rsa_public_key_file != NULL)
6269 {
6270 MyFree(yy_aconf->rsa_public_key_file);
6271 yy_aconf->rsa_public_key_file = NULL;
6272 }
6273
6274 DupString(yy_aconf->rsa_public_key_file, yylval.string);
6275
6276 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6277 {
6278 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6279 break;
6280 }
6281
6282 yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
6283
6284 if (yy_aconf->rsa_public_key == NULL)
6285 {
6286 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
6287 break;
6288 }
6289
6290 BIO_set_close(file, BIO_CLOSE);
6291 BIO_free(file);
6292 }
6293 #endif /* HAVE_LIBCRYPTO */
6294 }
6295 break;
6296
6297 case 393:
6298
6299 /* Line 1464 of yacc.c */
6300 #line 2520 "ircd_parser.y"
6301 {
6302 if (conf_parser_ctx.pass == 2)
6303 {
6304 if (yylval.number)
6305 yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6306 else
6307 yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6308 }
6309 }
6310 break;
6311
6312 case 394:
6313
6314 /* Line 1464 of yacc.c */
6315 #line 2531 "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, &hub_conf_list);
6325 }
6326 }
6327 break;
6328
6329 case 395:
6330
6331 /* Line 1464 of yacc.c */
6332 #line 2544 "ircd_parser.y"
6333 {
6334 if (conf_parser_ctx.pass == 2)
6335 {
6336 struct CollectItem *yy_tmp;
6337
6338 yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6339 DupString(yy_tmp->host, yylval.string);
6340 DupString(yy_tmp->user, "*");
6341 dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6342 }
6343 }
6344 break;
6345
6346 case 396:
6347
6348 /* Line 1464 of yacc.c */
6349 #line 2557 "ircd_parser.y"
6350 {
6351 if (conf_parser_ctx.pass == 2)
6352 {
6353 MyFree(class_name);
6354 DupString(class_name, yylval.string);
6355 }
6356 }
6357 break;
6358
6359 case 397:
6360
6361 /* Line 1464 of yacc.c */
6362 #line 2566 "ircd_parser.y"
6363 {
6364 #ifdef HAVE_LIBCRYPTO
6365 if (conf_parser_ctx.pass == 2)
6366 {
6367 struct EncCapability *ecap;
6368 const char *cipher_name;
6369 int found = 0;
6370
6371 yy_aconf->cipher_preference = NULL;
6372 cipher_name = yylval.string;
6373
6374 for (ecap = CipherTable; ecap->name; ecap++)
6375 {
6376 if ((irccmp(ecap->name, cipher_name) == 0) &&
6377 (ecap->cap & CAP_ENC_MASK))
6378 {
6379 yy_aconf->cipher_preference = ecap;
6380 found = 1;
6381 break;
6382 }
6383 }
6384
6385 if (!found)
6386 yyerror("Invalid cipher");
6387 }
6388 #else
6389 if (conf_parser_ctx.pass == 2)
6390 yyerror("Ignoring cipher_preference -- no OpenSSL support");
6391 #endif
6392 }
6393 break;
6394
6395 case 398:
6396
6397 /* Line 1464 of yacc.c */
6398 #line 2601 "ircd_parser.y"
6399 {
6400 if (conf_parser_ctx.pass == 2)
6401 {
6402 userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6403 regex_ban = 0;
6404 }
6405 }
6406 break;
6407
6408 case 399:
6409
6410 /* Line 1464 of yacc.c */
6411 #line 2608 "ircd_parser.y"
6412 {
6413 if (conf_parser_ctx.pass == 2)
6414 {
6415 if (userbuf[0] && hostbuf[0])
6416 {
6417 if (regex_ban)
6418 {
6419 #ifdef HAVE_LIBPCRE
6420 void *exp_user = NULL;
6421 void *exp_host = NULL;
6422 const char *errptr = NULL;
6423
6424 if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6425 !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6426 {
6427 ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6428 errptr);
6429 break;
6430 }
6431
6432 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6433 yy_aconf->regexuser = exp_user;
6434 yy_aconf->regexhost = exp_host;
6435
6436 DupString(yy_aconf->user, userbuf);
6437 DupString(yy_aconf->host, hostbuf);
6438
6439 if (reasonbuf[0])
6440 DupString(yy_aconf->reason, reasonbuf);
6441 else
6442 DupString(yy_aconf->reason, "No reason");
6443 #else
6444 ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6445 break;
6446 #endif
6447 }
6448 else
6449 {
6450 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6451
6452 DupString(yy_aconf->user, userbuf);
6453 DupString(yy_aconf->host, hostbuf);
6454
6455 if (reasonbuf[0])
6456 DupString(yy_aconf->reason, reasonbuf);
6457 else
6458 DupString(yy_aconf->reason, "No reason");
6459 add_conf_by_address(CONF_KILL, yy_aconf);
6460 }
6461 }
6462
6463 yy_aconf = NULL;
6464 }
6465 }
6466 break;
6467
6468 case 400:
6469
6470 /* Line 1464 of yacc.c */
6471 #line 2664 "ircd_parser.y"
6472 {
6473 }
6474 break;
6475
6476 case 404:
6477
6478 /* Line 1464 of yacc.c */
6479 #line 2669 "ircd_parser.y"
6480 {
6481 if (conf_parser_ctx.pass == 2)
6482 regex_ban = 1;
6483 }
6484 break;
6485
6486 case 411:
6487
6488 /* Line 1464 of yacc.c */
6489 #line 2678 "ircd_parser.y"
6490 {
6491 if (conf_parser_ctx.pass == 2)
6492 {
6493 struct split_nuh_item nuh;
6494
6495 nuh.nuhmask = yylval.string;
6496 nuh.nickptr = NULL;
6497 nuh.userptr = userbuf;
6498 nuh.hostptr = hostbuf;
6499
6500 nuh.nicksize = 0;
6501 nuh.usersize = sizeof(userbuf);
6502 nuh.hostsize = sizeof(hostbuf);
6503
6504 split_nuh(&nuh);
6505 }
6506 }
6507 break;
6508
6509 case 412:
6510
6511 /* Line 1464 of yacc.c */
6512 #line 2697 "ircd_parser.y"
6513 {
6514 if (conf_parser_ctx.pass == 2)
6515 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6516 }
6517 break;
6518
6519 case 413:
6520
6521 /* Line 1464 of yacc.c */
6522 #line 2706 "ircd_parser.y"
6523 {
6524 if (conf_parser_ctx.pass == 2)
6525 hostbuf[0] = reasonbuf[0] = '\0';
6526 }
6527 break;
6528
6529 case 414:
6530
6531 /* Line 1464 of yacc.c */
6532 #line 2710 "ircd_parser.y"
6533 {
6534 if (conf_parser_ctx.pass == 2)
6535 {
6536 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
6537 {
6538 yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
6539 DupString(yy_aconf->host, hostbuf);
6540
6541 if (reasonbuf[0])
6542 DupString(yy_aconf->reason, reasonbuf);
6543 else
6544 DupString(yy_aconf->reason, "No reason");
6545 add_conf_by_address(CONF_DLINE, yy_aconf);
6546 yy_aconf = NULL;
6547 }
6548 }
6549 }
6550 break;
6551
6552 case 420:
6553
6554 /* Line 1464 of yacc.c */
6555 #line 2732 "ircd_parser.y"
6556 {
6557 if (conf_parser_ctx.pass == 2)
6558 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
6559 }
6560 break;
6561
6562 case 421:
6563
6564 /* Line 1464 of yacc.c */
6565 #line 2738 "ircd_parser.y"
6566 {
6567 if (conf_parser_ctx.pass == 2)
6568 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6569 }
6570 break;
6571
6572 case 427:
6573
6574 /* Line 1464 of yacc.c */
6575 #line 2752 "ircd_parser.y"
6576 {
6577 if (conf_parser_ctx.pass == 2)
6578 {
6579 if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
6580 {
6581 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
6582 DupString(yy_aconf->host, yylval.string);
6583
6584 add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
6585 yy_aconf = NULL;
6586 }
6587 }
6588 }
6589 break;
6590
6591 case 428:
6592
6593 /* Line 1464 of yacc.c */
6594 #line 2770 "ircd_parser.y"
6595 {
6596 if (conf_parser_ctx.pass == 2)
6597 {
6598 regex_ban = 0;
6599 reasonbuf[0] = gecos_name[0] = '\0';
6600 }
6601 }
6602 break;
6603
6604 case 429:
6605
6606 /* Line 1464 of yacc.c */
6607 #line 2777 "ircd_parser.y"
6608 {
6609 if (conf_parser_ctx.pass == 2)
6610 {
6611 if (gecos_name[0])
6612 {
6613 if (regex_ban)
6614 {
6615 #ifdef HAVE_LIBPCRE
6616 void *exp_p = NULL;
6617 const char *errptr = NULL;
6618
6619 if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
6620 {
6621 ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
6622 errptr);
6623 break;
6624 }
6625
6626 yy_conf = make_conf_item(RXLINE_TYPE);
6627 yy_conf->regexpname = exp_p;
6628 #else
6629 ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
6630 break;
6631 #endif
6632 }
6633 else
6634 yy_conf = make_conf_item(XLINE_TYPE);
6635
6636 yy_match_item = map_to_conf(yy_conf);
6637 DupString(yy_conf->name, gecos_name);
6638
6639 if (reasonbuf[0])
6640 DupString(yy_match_item->reason, reasonbuf);
6641 else
6642 DupString(yy_match_item->reason, "No reason");
6643 }
6644 }
6645 }
6646 break;
6647
6648 case 430:
6649
6650 /* Line 1464 of yacc.c */
6651 #line 2817 "ircd_parser.y"
6652 {
6653 }
6654 break;
6655
6656 case 434:
6657
6658 /* Line 1464 of yacc.c */
6659 #line 2822 "ircd_parser.y"
6660 {
6661 if (conf_parser_ctx.pass == 2)
6662 regex_ban = 1;
6663 }
6664 break;
6665
6666 case 441:
6667
6668 /* Line 1464 of yacc.c */
6669 #line 2831 "ircd_parser.y"
6670 {
6671 if (conf_parser_ctx.pass == 2)
6672 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
6673 }
6674 break;
6675
6676 case 442:
6677
6678 /* Line 1464 of yacc.c */
6679 #line 2837 "ircd_parser.y"
6680 {
6681 if (conf_parser_ctx.pass == 2)
6682 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6683 }
6684 break;
6685
6686 case 502:
6687
6688 /* Line 1464 of yacc.c */
6689 #line 2882 "ircd_parser.y"
6690 {
6691 ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
6692 }
6693 break;
6694
6695 case 503:
6696
6697 /* Line 1464 of yacc.c */
6698 #line 2887 "ircd_parser.y"
6699 {
6700 ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
6701 }
6702 break;
6703
6704 case 504:
6705
6706 /* Line 1464 of yacc.c */
6707 #line 2892 "ircd_parser.y"
6708 {
6709 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
6710 }
6711 break;
6712
6713 case 505:
6714
6715 /* Line 1464 of yacc.c */
6716 #line 2897 "ircd_parser.y"
6717 {
6718 ConfigFileEntry.burst_away = yylval.number;
6719 }
6720 break;
6721
6722 case 506:
6723
6724 /* Line 1464 of yacc.c */
6725 #line 2902 "ircd_parser.y"
6726 {
6727 ConfigFileEntry.use_whois_actually = yylval.number;
6728 }
6729 break;
6730
6731 case 507:
6732
6733 /* Line 1464 of yacc.c */
6734 #line 2907 "ircd_parser.y"
6735 {
6736 GlobalSetOptions.rejecttime = yylval.number;
6737 }
6738 break;
6739
6740 case 508:
6741
6742 /* Line 1464 of yacc.c */
6743 #line 2912 "ircd_parser.y"
6744 {
6745 ConfigFileEntry.tkline_expire_notices = yylval.number;
6746 }
6747 break;
6748
6749 case 509:
6750
6751 /* Line 1464 of yacc.c */
6752 #line 2917 "ircd_parser.y"
6753 {
6754 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
6755 }
6756 break;
6757
6758 case 510:
6759
6760 /* Line 1464 of yacc.c */
6761 #line 2922 "ircd_parser.y"
6762 {
6763 ConfigFileEntry.hide_spoof_ips = yylval.number;
6764 }
6765 break;
6766
6767 case 511:
6768
6769 /* Line 1464 of yacc.c */
6770 #line 2927 "ircd_parser.y"
6771 {
6772 ConfigFileEntry.ignore_bogus_ts = yylval.number;
6773 }
6774 break;
6775
6776 case 512:
6777
6778 /* Line 1464 of yacc.c */
6779 #line 2932 "ircd_parser.y"
6780 {
6781 ConfigFileEntry.disable_remote = yylval.number;
6782 }
6783 break;
6784
6785 case 513:
6786
6787 /* Line 1464 of yacc.c */
6788 #line 2937 "ircd_parser.y"
6789 {
6790 ConfigFileEntry.failed_oper_notice = yylval.number;
6791 }
6792 break;
6793
6794 case 514:
6795
6796 /* Line 1464 of yacc.c */
6797 #line 2942 "ircd_parser.y"
6798 {
6799 ConfigFileEntry.anti_nick_flood = yylval.number;
6800 }
6801 break;
6802
6803 case 515:
6804
6805 /* Line 1464 of yacc.c */
6806 #line 2947 "ircd_parser.y"
6807 {
6808 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
6809 }
6810 break;
6811
6812 case 516:
6813
6814 /* Line 1464 of yacc.c */
6815 #line 2952 "ircd_parser.y"
6816 {
6817 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
6818 }
6819 break;
6820
6821 case 517:
6822
6823 /* Line 1464 of yacc.c */
6824 #line 2957 "ircd_parser.y"
6825 {
6826 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
6827 }
6828 break;
6829
6830 case 518:
6831
6832 /* Line 1464 of yacc.c */
6833 #line 2962 "ircd_parser.y"
6834 {
6835 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
6836 }
6837 break;
6838
6839 case 519:
6840
6841 /* Line 1464 of yacc.c */
6842 #line 2967 "ircd_parser.y"
6843 {
6844 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
6845 }
6846 break;
6847
6848 case 520:
6849
6850 /* Line 1464 of yacc.c */
6851 #line 2972 "ircd_parser.y"
6852 {
6853 if (conf_parser_ctx.pass == 2)
6854 ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
6855 }
6856 break;
6857
6858 case 521:
6859
6860 /* Line 1464 of yacc.c */
6861 #line 2978 "ircd_parser.y"
6862 {
6863 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6864 {
6865 ilog(L_CRIT, "You haven't read your config file properly.");
6866 ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
6867 ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
6868 exit(0);
6869 }
6870 }
6871 break;
6872
6873 case 522:
6874
6875 /* Line 1464 of yacc.c */
6876 #line 2989 "ircd_parser.y"
6877 {
6878 ConfigFileEntry.kline_with_reason = yylval.number;
6879 }
6880 break;
6881
6882 case 523:
6883
6884 /* Line 1464 of yacc.c */
6885 #line 2994 "ircd_parser.y"
6886 {
6887 if (conf_parser_ctx.pass == 2)
6888 {
6889 MyFree(ConfigFileEntry.kline_reason);
6890 DupString(ConfigFileEntry.kline_reason, yylval.string);
6891 }
6892 }
6893 break;
6894
6895 case 524:
6896
6897 /* Line 1464 of yacc.c */
6898 #line 3003 "ircd_parser.y"
6899 {
6900 ConfigFileEntry.invisible_on_connect = yylval.number;
6901 }
6902 break;
6903
6904 case 525:
6905
6906 /* Line 1464 of yacc.c */
6907 #line 3008 "ircd_parser.y"
6908 {
6909 ConfigFileEntry.warn_no_nline = yylval.number;
6910 }
6911 break;
6912
6913 case 526:
6914
6915 /* Line 1464 of yacc.c */
6916 #line 3013 "ircd_parser.y"
6917 {
6918 ConfigFileEntry.stats_e_disabled = yylval.number;
6919 }
6920 break;
6921
6922 case 527:
6923
6924 /* Line 1464 of yacc.c */
6925 #line 3018 "ircd_parser.y"
6926 {
6927 ConfigFileEntry.stats_o_oper_only = yylval.number;
6928 }
6929 break;
6930
6931 case 528:
6932
6933 /* Line 1464 of yacc.c */
6934 #line 3023 "ircd_parser.y"
6935 {
6936 ConfigFileEntry.stats_P_oper_only = yylval.number;
6937 }
6938 break;
6939
6940 case 529:
6941
6942 /* Line 1464 of yacc.c */
6943 #line 3028 "ircd_parser.y"
6944 {
6945 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
6946 }
6947 break;
6948
6949 case 530:
6950
6951 /* Line 1464 of yacc.c */
6952 #line 3031 "ircd_parser.y"
6953 {
6954 ConfigFileEntry.stats_k_oper_only = 1;
6955 }
6956 break;
6957
6958 case 531:
6959
6960 /* Line 1464 of yacc.c */
6961 #line 3036 "ircd_parser.y"
6962 {
6963 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
6964 }
6965 break;
6966
6967 case 532:
6968
6969 /* Line 1464 of yacc.c */
6970 #line 3039 "ircd_parser.y"
6971 {
6972 ConfigFileEntry.stats_i_oper_only = 1;
6973 }
6974 break;
6975
6976 case 533:
6977
6978 /* Line 1464 of yacc.c */
6979 #line 3044 "ircd_parser.y"
6980 {
6981 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
6982 }
6983 break;
6984
6985 case 534:
6986
6987 /* Line 1464 of yacc.c */
6988 #line 3049 "ircd_parser.y"
6989 {
6990 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
6991 }
6992 break;
6993
6994 case 535:
6995
6996 /* Line 1464 of yacc.c */
6997 #line 3054 "ircd_parser.y"
6998 {
6999 ConfigFileEntry.opers_bypass_callerid = yylval.number;
7000 }
7001 break;
7002
7003 case 536:
7004
7005 /* Line 1464 of yacc.c */
7006 #line 3059 "ircd_parser.y"
7007 {
7008 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
7009 }
7010 break;
7011
7012 case 537:
7013
7014 /* Line 1464 of yacc.c */
7015 #line 3064 "ircd_parser.y"
7016 {
7017 ConfigFileEntry.short_motd = yylval.number;
7018 }
7019 break;
7020
7021 case 538:
7022
7023 /* Line 1464 of yacc.c */
7024 #line 3069 "ircd_parser.y"
7025 {
7026 ConfigFileEntry.no_oper_flood = yylval.number;
7027 }
7028 break;
7029
7030 case 539:
7031
7032 /* Line 1464 of yacc.c */
7033 #line 3074 "ircd_parser.y"
7034 {
7035 ConfigFileEntry.true_no_oper_flood = yylval.number;
7036 }
7037 break;
7038
7039 case 540:
7040
7041 /* Line 1464 of yacc.c */
7042 #line 3079 "ircd_parser.y"
7043 {
7044 ConfigFileEntry.oper_pass_resv = yylval.number;
7045 }
7046 break;
7047
7048 case 541:
7049
7050 /* Line 1464 of yacc.c */
7051 #line 3084 "ircd_parser.y"
7052 {
7053 if (conf_parser_ctx.pass == 2)
7054 {
7055 if (strlen(yylval.string) > LOCALE_LENGTH-2)
7056 yylval.string[LOCALE_LENGTH-1] = '\0';
7057
7058 set_locale(yylval.string);
7059 }
7060 }
7061 break;
7062
7063 case 542:
7064
7065 /* Line 1464 of yacc.c */
7066 #line 3095 "ircd_parser.y"
7067 {
7068 ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
7069 }
7070 break;
7071
7072 case 543:
7073
7074 /* Line 1464 of yacc.c */
7075 #line 3100 "ircd_parser.y"
7076 {
7077 ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
7078 }
7079 break;
7080
7081 case 544:
7082
7083 /* Line 1464 of yacc.c */
7084 #line 3105 "ircd_parser.y"
7085 {
7086 ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
7087 }
7088 break;
7089
7090 case 545:
7091
7092 /* Line 1464 of yacc.c */
7093 #line 3110 "ircd_parser.y"
7094 {
7095 if (conf_parser_ctx.pass == 2)
7096 {
7097 MyFree(ConfigFileEntry.servlink_path);
7098 DupString(ConfigFileEntry.servlink_path, yylval.string);
7099 }
7100 }
7101 break;
7102
7103 case 546:
7104
7105 /* Line 1464 of yacc.c */
7106 #line 3119 "ircd_parser.y"
7107 {
7108 #ifdef HAVE_LIBCRYPTO
7109 if (conf_parser_ctx.pass == 2)
7110 {
7111 struct EncCapability *ecap;
7112 const char *cipher_name;
7113 int found = 0;
7114
7115 ConfigFileEntry.default_cipher_preference = NULL;
7116 cipher_name = yylval.string;
7117
7118 for (ecap = CipherTable; ecap->name; ecap++)
7119 {
7120 if ((irccmp(ecap->name, cipher_name) == 0) &&
7121 (ecap->cap & CAP_ENC_MASK))
7122 {
7123 ConfigFileEntry.default_cipher_preference = ecap;
7124 found = 1;
7125 break;
7126 }
7127 }
7128
7129 if (!found)
7130 yyerror("Invalid cipher");
7131 }
7132 #else
7133 if (conf_parser_ctx.pass == 2)
7134 yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7135 #endif
7136 }
7137 break;
7138
7139 case 547:
7140
7141 /* Line 1464 of yacc.c */
7142 #line 3151 "ircd_parser.y"
7143 {
7144 if (conf_parser_ctx.pass == 2)
7145 {
7146 ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7147 #ifndef HAVE_LIBZ
7148 yyerror("Ignoring compression_level -- no zlib support");
7149 #else
7150 if ((ConfigFileEntry.compression_level < 1) ||
7151 (ConfigFileEntry.compression_level > 9))
7152 {
7153 yyerror("Ignoring invalid compression_level, using default");
7154 ConfigFileEntry.compression_level = 0;
7155 }
7156 #endif
7157 }
7158 }
7159 break;
7160
7161 case 548:
7162
7163 /* Line 1464 of yacc.c */
7164 #line 3169 "ircd_parser.y"
7165 {
7166 ConfigFileEntry.use_egd = yylval.number;
7167 }
7168 break;
7169
7170 case 549:
7171
7172 /* Line 1464 of yacc.c */
7173 #line 3174 "ircd_parser.y"
7174 {
7175 if (conf_parser_ctx.pass == 2)
7176 {
7177 MyFree(ConfigFileEntry.egdpool_path);
7178 DupString(ConfigFileEntry.egdpool_path, yylval.string);
7179 }
7180 }
7181 break;
7182
7183 case 550:
7184
7185 /* Line 1464 of yacc.c */
7186 #line 3183 "ircd_parser.y"
7187 {
7188 ConfigFileEntry.ping_cookie = yylval.number;
7189 }
7190 break;
7191
7192 case 551:
7193
7194 /* Line 1464 of yacc.c */
7195 #line 3188 "ircd_parser.y"
7196 {
7197 ConfigFileEntry.disable_auth = yylval.number;
7198 }
7199 break;
7200
7201 case 552:
7202
7203 /* Line 1464 of yacc.c */
7204 #line 3193 "ircd_parser.y"
7205 {
7206 ConfigFileEntry.throttle_time = yylval.number;
7207 }
7208 break;
7209
7210 case 553:
7211
7212 /* Line 1464 of yacc.c */
7213 #line 3198 "ircd_parser.y"
7214 {
7215 ConfigFileEntry.oper_umodes = 0;
7216 }
7217 break;
7218
7219 case 557:
7220
7221 /* Line 1464 of yacc.c */
7222 #line 3204 "ircd_parser.y"
7223 {
7224 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
7225 }
7226 break;
7227
7228 case 558:
7229
7230 /* Line 1464 of yacc.c */
7231 #line 3207 "ircd_parser.y"
7232 {
7233 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
7234 }
7235 break;
7236
7237 case 559:
7238
7239 /* Line 1464 of yacc.c */
7240 #line 3210 "ircd_parser.y"
7241 {
7242 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
7243 }
7244 break;
7245
7246 case 560:
7247
7248 /* Line 1464 of yacc.c */
7249 #line 3213 "ircd_parser.y"
7250 {
7251 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
7252 }
7253 break;
7254
7255 case 561:
7256
7257 /* Line 1464 of yacc.c */
7258 #line 3216 "ircd_parser.y"
7259 {
7260 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
7261 }
7262 break;
7263
7264 case 562:
7265
7266 /* Line 1464 of yacc.c */
7267 #line 3219 "ircd_parser.y"
7268 {
7269 ConfigFileEntry.oper_umodes |= UMODE_FULL;
7270 }
7271 break;
7272
7273 case 563:
7274
7275 /* Line 1464 of yacc.c */
7276 #line 3222 "ircd_parser.y"
7277 {
7278 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
7279 }
7280 break;
7281
7282 case 564:
7283
7284 /* Line 1464 of yacc.c */
7285 #line 3225 "ircd_parser.y"
7286 {
7287 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
7288 }
7289 break;
7290
7291 case 565:
7292
7293 /* Line 1464 of yacc.c */
7294 #line 3228 "ircd_parser.y"
7295 {
7296 ConfigFileEntry.oper_umodes |= UMODE_REJ;
7297 }
7298 break;
7299
7300 case 566:
7301
7302 /* Line 1464 of yacc.c */
7303 #line 3231 "ircd_parser.y"
7304 {
7305 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
7306 }
7307 break;
7308
7309 case 567:
7310
7311 /* Line 1464 of yacc.c */
7312 #line 3234 "ircd_parser.y"
7313 {
7314 ConfigFileEntry.oper_umodes |= UMODE_SPY;
7315 }
7316 break;
7317
7318 case 568:
7319
7320 /* Line 1464 of yacc.c */
7321 #line 3237 "ircd_parser.y"
7322 {
7323 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
7324 }
7325 break;
7326
7327 case 569:
7328
7329 /* Line 1464 of yacc.c */
7330 #line 3240 "ircd_parser.y"
7331 {
7332 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
7333 }
7334 break;
7335
7336 case 570:
7337
7338 /* Line 1464 of yacc.c */
7339 #line 3243 "ircd_parser.y"
7340 {
7341 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
7342 }
7343 break;
7344
7345 case 571:
7346
7347 /* Line 1464 of yacc.c */
7348 #line 3246 "ircd_parser.y"
7349 {
7350 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
7351 }
7352 break;
7353
7354 case 572:
7355
7356 /* Line 1464 of yacc.c */
7357 #line 3249 "ircd_parser.y"
7358 {
7359 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
7360 }
7361 break;
7362
7363 case 573:
7364
7365 /* Line 1464 of yacc.c */
7366 #line 3252 "ircd_parser.y"
7367 {
7368 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
7369 }
7370 break;
7371
7372 case 574:
7373
7374 /* Line 1464 of yacc.c */
7375 #line 3255 "ircd_parser.y"
7376 {
7377 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
7378 }
7379 break;
7380
7381 case 575:
7382
7383 /* Line 1464 of yacc.c */
7384 #line 3258 "ircd_parser.y"
7385 {
7386 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
7387 }
7388 break;
7389
7390 case 576:
7391
7392 /* Line 1464 of yacc.c */
7393 #line 3263 "ircd_parser.y"
7394 {
7395 ConfigFileEntry.oper_only_umodes = 0;
7396 }
7397 break;
7398
7399 case 580:
7400
7401 /* Line 1464 of yacc.c */
7402 #line 3269 "ircd_parser.y"
7403 {
7404 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7405 }
7406 break;
7407
7408 case 581:
7409
7410 /* Line 1464 of yacc.c */
7411 #line 3272 "ircd_parser.y"
7412 {
7413 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7414 }
7415 break;
7416
7417 case 582:
7418
7419 /* Line 1464 of yacc.c */
7420 #line 3275 "ircd_parser.y"
7421 {
7422 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7423 }
7424 break;
7425
7426 case 583:
7427
7428 /* Line 1464 of yacc.c */
7429 #line 3278 "ircd_parser.y"
7430 {
7431 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7432 }
7433 break;
7434
7435 case 584:
7436
7437 /* Line 1464 of yacc.c */
7438 #line 3281 "ircd_parser.y"
7439 {
7440 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7441 }
7442 break;
7443
7444 case 585:
7445
7446 /* Line 1464 of yacc.c */
7447 #line 3284 "ircd_parser.y"
7448 {
7449 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7450 }
7451 break;
7452
7453 case 586:
7454
7455 /* Line 1464 of yacc.c */
7456 #line 3287 "ircd_parser.y"
7457 {
7458 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7459 }
7460 break;
7461
7462 case 587:
7463
7464 /* Line 1464 of yacc.c */
7465 #line 3290 "ircd_parser.y"
7466 {
7467 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
7468 }
7469 break;
7470
7471 case 588:
7472
7473 /* Line 1464 of yacc.c */
7474 #line 3293 "ircd_parser.y"
7475 {
7476 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
7477 }
7478 break;
7479
7480 case 589:
7481
7482 /* Line 1464 of yacc.c */
7483 #line 3296 "ircd_parser.y"
7484 {
7485 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
7486 }
7487 break;
7488
7489 case 590:
7490
7491 /* Line 1464 of yacc.c */
7492 #line 3299 "ircd_parser.y"
7493 {
7494 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
7495 }
7496 break;
7497
7498 case 591:
7499
7500 /* Line 1464 of yacc.c */
7501 #line 3302 "ircd_parser.y"
7502 {
7503 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
7504 }
7505 break;
7506
7507 case 592:
7508
7509 /* Line 1464 of yacc.c */
7510 #line 3305 "ircd_parser.y"
7511 {
7512 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
7513 }
7514 break;
7515
7516 case 593:
7517
7518 /* Line 1464 of yacc.c */
7519 #line 3308 "ircd_parser.y"
7520 {
7521 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
7522 }
7523 break;
7524
7525 case 594:
7526
7527 /* Line 1464 of yacc.c */
7528 #line 3311 "ircd_parser.y"
7529 {
7530 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
7531 }
7532 break;
7533
7534 case 595:
7535
7536 /* Line 1464 of yacc.c */
7537 #line 3314 "ircd_parser.y"
7538 {
7539 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
7540 }
7541 break;
7542
7543 case 596:
7544
7545 /* Line 1464 of yacc.c */
7546 #line 3317 "ircd_parser.y"
7547 {
7548 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
7549 }
7550 break;
7551
7552 case 597:
7553
7554 /* Line 1464 of yacc.c */
7555 #line 3320 "ircd_parser.y"
7556 {
7557 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
7558 }
7559 break;
7560
7561 case 598:
7562
7563 /* Line 1464 of yacc.c */
7564 #line 3323 "ircd_parser.y"
7565 {
7566 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
7567 }
7568 break;
7569
7570 case 599:
7571
7572 /* Line 1464 of yacc.c */
7573 #line 3328 "ircd_parser.y"
7574 {
7575 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
7576 }
7577 break;
7578
7579 case 600:
7580
7581 /* Line 1464 of yacc.c */
7582 #line 3333 "ircd_parser.y"
7583 {
7584 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
7585 }
7586 break;
7587
7588 case 601:
7589
7590 /* Line 1464 of yacc.c */
7591 #line 3338 "ircd_parser.y"
7592 {
7593 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
7594 }
7595 break;
7596
7597 case 602:
7598
7599 /* Line 1464 of yacc.c */
7600 #line 3343 "ircd_parser.y"
7601 {
7602 ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
7603 }
7604 break;
7605
7606 case 603:
7607
7608 /* Line 1464 of yacc.c */
7609 #line 3352 "ircd_parser.y"
7610 {
7611 if (conf_parser_ctx.pass == 2)
7612 {
7613 yy_conf = make_conf_item(GDENY_TYPE);
7614 yy_aconf = map_to_conf(yy_conf);
7615 }
7616 }
7617 break;
7618
7619 case 604:
7620
7621 /* Line 1464 of yacc.c */
7622 #line 3359 "ircd_parser.y"
7623 {
7624 if (conf_parser_ctx.pass == 2)
7625 {
7626 /*
7627 * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
7628 * end we will have one extra, so we should free it.
7629 */
7630 if (yy_conf->name == NULL || yy_aconf->user == NULL)
7631 {
7632 delete_conf_item(yy_conf);
7633 yy_conf = NULL;
7634 yy_aconf = NULL;
7635 }
7636 }
7637 }
7638 break;
7639
7640 case 614:
7641
7642 /* Line 1464 of yacc.c */
7643 #line 3385 "ircd_parser.y"
7644 {
7645 if (conf_parser_ctx.pass == 2)
7646 ConfigFileEntry.glines = yylval.number;
7647 }
7648 break;
7649
7650 case 615:
7651
7652 /* Line 1464 of yacc.c */
7653 #line 3391 "ircd_parser.y"
7654 {
7655 if (conf_parser_ctx.pass == 2)
7656 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
7657 }
7658 break;
7659
7660 case 616:
7661
7662 /* Line 1464 of yacc.c */
7663 #line 3397 "ircd_parser.y"
7664 {
7665 if (conf_parser_ctx.pass == 2)
7666 ConfigFileEntry.gline_logging = 0;
7667 }
7668 break;
7669
7670 case 620:
7671
7672 /* Line 1464 of yacc.c */
7673 #line 3403 "ircd_parser.y"
7674 {
7675 if (conf_parser_ctx.pass == 2)
7676 ConfigFileEntry.gline_logging |= GDENY_REJECT;
7677 }
7678 break;
7679
7680 case 621:
7681
7682 /* Line 1464 of yacc.c */
7683 #line 3407 "ircd_parser.y"
7684 {
7685 if (conf_parser_ctx.pass == 2)
7686 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
7687 }
7688 break;
7689
7690 case 622:
7691
7692 /* Line 1464 of yacc.c */
7693 #line 3413 "ircd_parser.y"
7694 {
7695 if (conf_parser_ctx.pass == 2)
7696 {
7697 struct split_nuh_item nuh;
7698
7699 nuh.nuhmask = yylval.string;
7700 nuh.nickptr = NULL;
7701 nuh.userptr = userbuf;
7702 nuh.hostptr = hostbuf;
7703
7704 nuh.nicksize = 0;
7705 nuh.usersize = sizeof(userbuf);
7706 nuh.hostsize = sizeof(hostbuf);
7707
7708 split_nuh(&nuh);
7709
7710 if (yy_aconf->user == NULL)
7711 {
7712 DupString(yy_aconf->user, userbuf);
7713 DupString(yy_aconf->host, hostbuf);
7714 }
7715 else
7716 {
7717 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
7718
7719 DupString(yy_tmp->user, userbuf);
7720 DupString(yy_tmp->host, hostbuf);
7721
7722 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
7723 }
7724 }
7725 }
7726 break;
7727
7728 case 623:
7729
7730 /* Line 1464 of yacc.c */
7731 #line 3447 "ircd_parser.y"
7732 {
7733 if (conf_parser_ctx.pass == 2)
7734 {
7735 MyFree(yy_conf->name);
7736 DupString(yy_conf->name, yylval.string);
7737 }
7738 }
7739 break;
7740
7741 case 624:
7742
7743 /* Line 1464 of yacc.c */
7744 #line 3456 "ircd_parser.y"
7745 {
7746 if (conf_parser_ctx.pass == 2)
7747 yy_aconf->flags = 0;
7748 }
7749 break;
7750
7751 case 625:
7752
7753 /* Line 1464 of yacc.c */
7754 #line 3460 "ircd_parser.y"
7755 {
7756 if (conf_parser_ctx.pass == 2)
7757 {
7758 struct CollectItem *yy_tmp = NULL;
7759 dlink_node *ptr, *next_ptr;
7760
7761 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
7762 {
7763 struct AccessItem *new_aconf;
7764 struct ConfItem *new_conf;
7765
7766 yy_tmp = ptr->data;
7767 new_conf = make_conf_item(GDENY_TYPE);
7768 new_aconf = map_to_conf(new_conf);
7769
7770 new_aconf->flags = yy_aconf->flags;
7771
7772 if (yy_conf->name != NULL)
7773 DupString(new_conf->name, yy_conf->name);
7774 else
7775 DupString(new_conf->name, "*");
7776 if (yy_aconf->user != NULL)
7777 DupString(new_aconf->user, yy_tmp->user);
7778 else
7779 DupString(new_aconf->user, "*");
7780 if (yy_aconf->host != NULL)
7781 DupString(new_aconf->host, yy_tmp->host);
7782 else
7783 DupString(new_aconf->host, "*");
7784
7785 dlinkDelete(&yy_tmp->node, &col_conf_list);
7786 }
7787
7788 /*
7789 * In case someone has fed us with more than one action= after user/name
7790 * which would leak memory -Michael
7791 */
7792 if (yy_conf->name == NULL || yy_aconf->user == NULL)
7793 delete_conf_item(yy_conf);
7794
7795 yy_conf = make_conf_item(GDENY_TYPE);
7796 yy_aconf = map_to_conf(yy_conf);
7797 }
7798 }
7799 break;
7800
7801 case 628:
7802
7803 /* Line 1464 of yacc.c */
7804 #line 3507 "ircd_parser.y"
7805 {
7806 if (conf_parser_ctx.pass == 2)
7807 yy_aconf->flags |= GDENY_REJECT;
7808 }
7809 break;
7810
7811 case 629:
7812
7813 /* Line 1464 of yacc.c */
7814 #line 3511 "ircd_parser.y"
7815 {
7816 if (conf_parser_ctx.pass == 2)
7817 yy_aconf->flags |= GDENY_BLOCK;
7818 }
7819 break;
7820
7821 case 652:
7822
7823 /* Line 1464 of yacc.c */
7824 #line 3535 "ircd_parser.y"
7825 {
7826 ConfigChannel.disable_fake_channels = yylval.number;
7827 }
7828 break;
7829
7830 case 653:
7831
7832 /* Line 1464 of yacc.c */
7833 #line 3540 "ircd_parser.y"
7834 {
7835 ConfigChannel.restrict_channels = yylval.number;
7836 }
7837 break;
7838
7839 case 654:
7840
7841 /* Line 1464 of yacc.c */
7842 #line 3545 "ircd_parser.y"
7843 {
7844 ConfigChannel.disable_local_channels = yylval.number;
7845 }
7846 break;
7847
7848 case 655:
7849
7850 /* Line 1464 of yacc.c */
7851 #line 3550 "ircd_parser.y"
7852 {
7853 ConfigChannel.use_except = yylval.number;
7854 }
7855 break;
7856
7857 case 656:
7858
7859 /* Line 1464 of yacc.c */
7860 #line 3555 "ircd_parser.y"
7861 {
7862 ConfigChannel.use_invex = yylval.number;
7863 }
7864 break;
7865
7866 case 657:
7867
7868 /* Line 1464 of yacc.c */
7869 #line 3560 "ircd_parser.y"
7870 {
7871 ConfigChannel.use_knock = yylval.number;
7872 }
7873 break;
7874
7875 case 658:
7876
7877 /* Line 1464 of yacc.c */
7878 #line 3565 "ircd_parser.y"
7879 {
7880 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
7881 }
7882 break;
7883
7884 case 659:
7885
7886 /* Line 1464 of yacc.c */
7887 #line 3570 "ircd_parser.y"
7888 {
7889 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
7890 }
7891 break;
7892
7893 case 660:
7894
7895 /* Line 1464 of yacc.c */
7896 #line 3575 "ircd_parser.y"
7897 {
7898 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
7899 }
7900 break;
7901
7902 case 661:
7903
7904 /* Line 1464 of yacc.c */
7905 #line 3580 "ircd_parser.y"
7906 {
7907 ConfigChannel.quiet_on_ban = yylval.number;
7908 }
7909 break;
7910
7911 case 662:
7912
7913 /* Line 1464 of yacc.c */
7914 #line 3585 "ircd_parser.y"
7915 {
7916 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
7917 }
7918 break;
7919
7920 case 663:
7921
7922 /* Line 1464 of yacc.c */
7923 #line 3590 "ircd_parser.y"
7924 {
7925 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
7926 }
7927 break;
7928
7929 case 664:
7930
7931 /* Line 1464 of yacc.c */
7932 #line 3595 "ircd_parser.y"
7933 {
7934 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
7935 }
7936 break;
7937
7938 case 665:
7939
7940 /* Line 1464 of yacc.c */
7941 #line 3600 "ircd_parser.y"
7942 {
7943 ConfigChannel.no_create_on_split = yylval.number;
7944 }
7945 break;
7946
7947 case 666:
7948
7949 /* Line 1464 of yacc.c */
7950 #line 3605 "ircd_parser.y"
7951 {
7952 ConfigChannel.no_join_on_split = yylval.number;
7953 }
7954 break;
7955
7956 case 667:
7957
7958 /* Line 1464 of yacc.c */
7959 #line 3610 "ircd_parser.y"
7960 {
7961 ConfigChannel.burst_topicwho = yylval.number;
7962 }
7963 break;
7964
7965 case 668:
7966
7967 /* Line 1464 of yacc.c */
7968 #line 3615 "ircd_parser.y"
7969 {
7970 GlobalSetOptions.joinfloodcount = yylval.number;
7971 }
7972 break;
7973
7974 case 669:
7975
7976 /* Line 1464 of yacc.c */
7977 #line 3620 "ircd_parser.y"
7978 {
7979 GlobalSetOptions.joinfloodtime = yylval.number;
7980 }
7981 break;
7982
7983 case 681:
7984
7985 /* Line 1464 of yacc.c */
7986 #line 3639 "ircd_parser.y"
7987 {
7988 if (conf_parser_ctx.pass == 2)
7989 ConfigServerHide.flatten_links = yylval.number;
7990 }
7991 break;
7992
7993 case 682:
7994
7995 /* Line 1464 of yacc.c */
7996 #line 3645 "ircd_parser.y"
7997 {
7998 if (conf_parser_ctx.pass == 2)
7999 ConfigServerHide.hide_servers = yylval.number;
8000 }
8001 break;
8002
8003 case 683:
8004
8005 /* Line 1464 of yacc.c */
8006 #line 3651 "ircd_parser.y"
8007 {
8008 if (conf_parser_ctx.pass == 2)
8009 {
8010 MyFree(ConfigServerHide.hidden_name);
8011 DupString(ConfigServerHide.hidden_name, yylval.string);
8012 }
8013 }
8014 break;
8015
8016 case 684:
8017
8018 /* Line 1464 of yacc.c */
8019 #line 3660 "ircd_parser.y"
8020 {
8021 if (conf_parser_ctx.pass == 2)
8022 {
8023 if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
8024 {
8025 eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
8026 ConfigServerHide.links_disabled = 0;
8027 }
8028
8029 ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
8030 }
8031 }
8032 break;
8033
8034 case 685:
8035
8036 /* Line 1464 of yacc.c */
8037 #line 3674 "ircd_parser.y"
8038 {
8039 if (conf_parser_ctx.pass == 2)
8040 ConfigServerHide.hidden = yylval.number;
8041 }
8042 break;
8043
8044 case 686:
8045
8046 /* Line 1464 of yacc.c */
8047 #line 3680 "ircd_parser.y"
8048 {
8049 if (conf_parser_ctx.pass == 2)
8050 ConfigServerHide.disable_hidden = yylval.number;
8051 }
8052 break;
8053
8054 case 687:
8055
8056 /* Line 1464 of yacc.c */
8057 #line 3686 "ircd_parser.y"
8058 {
8059 if (conf_parser_ctx.pass == 2)
8060 ConfigServerHide.hide_server_ips = yylval.number;
8061 }
8062 break;
8063
8064
8065
8066 /* Line 1464 of yacc.c */
8067 #line 8068 "ircd_parser.c"
8068 default: break;
8069 }
8070 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8071
8072 YYPOPSTACK (yylen);
8073 yylen = 0;
8074 YY_STACK_PRINT (yyss, yyssp);
8075
8076 *++yyvsp = yyval;
8077
8078 /* Now `shift' the result of the reduction. Determine what state
8079 that goes to, based on the state we popped back to and the rule
8080 number reduced by. */
8081
8082 yyn = yyr1[yyn];
8083
8084 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
8085 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
8086 yystate = yytable[yystate];
8087 else
8088 yystate = yydefgoto[yyn - YYNTOKENS];
8089
8090 goto yynewstate;
8091
8092
8093 /*------------------------------------.
8094 | yyerrlab -- here on detecting error |
8095 `------------------------------------*/
8096 yyerrlab:
8097 /* If not already recovering from an error, report this error. */
8098 if (!yyerrstatus)
8099 {
8100 ++yynerrs;
8101 #if ! YYERROR_VERBOSE
8102 yyerror (YY_("syntax error"));
8103 #else
8104 {
8105 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
8106 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
8107 {
8108 YYSIZE_T yyalloc = 2 * yysize;
8109 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
8110 yyalloc = YYSTACK_ALLOC_MAXIMUM;
8111 if (yymsg != yymsgbuf)
8112 YYSTACK_FREE (yymsg);
8113 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
8114 if (yymsg)
8115 yymsg_alloc = yyalloc;
8116 else
8117 {
8118 yymsg = yymsgbuf;
8119 yymsg_alloc = sizeof yymsgbuf;
8120 }
8121 }
8122
8123 if (0 < yysize && yysize <= yymsg_alloc)
8124 {
8125 (void) yysyntax_error (yymsg, yystate, yychar);
8126 yyerror (yymsg);
8127 }
8128 else
8129 {
8130 yyerror (YY_("syntax error"));
8131 if (yysize != 0)
8132 goto yyexhaustedlab;
8133 }
8134 }
8135 #endif
8136 }
8137
8138
8139
8140 if (yyerrstatus == 3)
8141 {
8142 /* If just tried and failed to reuse lookahead token after an
8143 error, discard it. */
8144
8145 if (yychar <= YYEOF)
8146 {
8147 /* Return failure if at end of input. */
8148 if (yychar == YYEOF)
8149 YYABORT;
8150 }
8151 else
8152 {
8153 yydestruct ("Error: discarding",
8154 yytoken, &yylval);
8155 yychar = YYEMPTY;
8156 }
8157 }
8158
8159 /* Else will try to reuse lookahead token after shifting the error
8160 token. */
8161 goto yyerrlab1;
8162
8163
8164 /*---------------------------------------------------.
8165 | yyerrorlab -- error raised explicitly by YYERROR. |
8166 `---------------------------------------------------*/
8167 yyerrorlab:
8168
8169 /* Pacify compilers like GCC when the user code never invokes
8170 YYERROR and the label yyerrorlab therefore never appears in user
8171 code. */
8172 if (/*CONSTCOND*/ 0)
8173 goto yyerrorlab;
8174
8175 /* Do not reclaim the symbols of the rule which action triggered
8176 this YYERROR. */
8177 YYPOPSTACK (yylen);
8178 yylen = 0;
8179 YY_STACK_PRINT (yyss, yyssp);
8180 yystate = *yyssp;
8181 goto yyerrlab1;
8182
8183
8184 /*-------------------------------------------------------------.
8185 | yyerrlab1 -- common code for both syntax error and YYERROR. |
8186 `-------------------------------------------------------------*/
8187 yyerrlab1:
8188 yyerrstatus = 3; /* Each real token shifted decrements this. */
8189
8190 for (;;)
8191 {
8192 yyn = yypact[yystate];
8193 if (yyn != YYPACT_NINF)
8194 {
8195 yyn += YYTERROR;
8196 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8197 {
8198 yyn = yytable[yyn];
8199 if (0 < yyn)
8200 break;
8201 }
8202 }
8203
8204 /* Pop the current state because it cannot handle the error token. */
8205 if (yyssp == yyss)
8206 YYABORT;
8207
8208
8209 yydestruct ("Error: popping",
8210 yystos[yystate], yyvsp);
8211 YYPOPSTACK (1);
8212 yystate = *yyssp;
8213 YY_STACK_PRINT (yyss, yyssp);
8214 }
8215
8216 *++yyvsp = yylval;
8217
8218
8219 /* Shift the error token. */
8220 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8221
8222 yystate = yyn;
8223 goto yynewstate;
8224
8225
8226 /*-------------------------------------.
8227 | yyacceptlab -- YYACCEPT comes here. |
8228 `-------------------------------------*/
8229 yyacceptlab:
8230 yyresult = 0;
8231 goto yyreturn;
8232
8233 /*-----------------------------------.
8234 | yyabortlab -- YYABORT comes here. |
8235 `-----------------------------------*/
8236 yyabortlab:
8237 yyresult = 1;
8238 goto yyreturn;
8239
8240 #if !defined(yyoverflow) || YYERROR_VERBOSE
8241 /*-------------------------------------------------.
8242 | yyexhaustedlab -- memory exhaustion comes here. |
8243 `-------------------------------------------------*/
8244 yyexhaustedlab:
8245 yyerror (YY_("memory exhausted"));
8246 yyresult = 2;
8247 /* Fall through. */
8248 #endif
8249
8250 yyreturn:
8251 if (yychar != YYEMPTY)
8252 yydestruct ("Cleanup: discarding lookahead",
8253 yytoken, &yylval);
8254 /* Do not reclaim the symbols of the rule which action triggered
8255 this YYABORT or YYACCEPT. */
8256 YYPOPSTACK (yylen);
8257 YY_STACK_PRINT (yyss, yyssp);
8258 while (yyssp != yyss)
8259 {
8260 yydestruct ("Cleanup: popping",
8261 yystos[*yyssp], yyvsp);
8262 YYPOPSTACK (1);
8263 }
8264 #ifndef yyoverflow
8265 if (yyss != yyssa)
8266 YYSTACK_FREE (yyss);
8267 #endif
8268 #if YYERROR_VERBOSE
8269 if (yymsg != yymsgbuf)
8270 YYSTACK_FREE (yymsg);
8271 #endif
8272 /* Make sure YYID is used. */
8273 return YYID (yyresult);
8274 }
8275
8276
8277

Properties

Name Value
svn:eol-style native