ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1176
Committed: Sun Aug 14 11:24:24 2011 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 247334 byte(s)
Log Message:
- remove idle-time klines
- rename LocalUser.last to LocalUser.last_privmsg
- m_message.c: reset source_p->last_privmsg even if a client is messaging itself


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

Properties

Name Value
svn:eol-style native