ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1216
Committed: Tue Sep 13 18:22:31 2011 UTC (13 years, 11 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 247002 byte(s)
Log Message:
- add 'globops' to operflags

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

Properties

Name Value
svn:eol-style native