ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1157
Committed: Tue Aug 9 22:03:59 2011 UTC (14 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 247245 byte(s)
Log Message:
- preliminary services support

File Contents

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

Properties

Name Value
svn:eol-style native