ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1155
Committed: Tue Aug 9 20:27:45 2011 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid/src/ircd_parser.c
File size: 245537 byte(s)
Log Message:
- recreate "trunk"

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

Properties

Name Value
svn:eol-style native