ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1303
Committed: Fri Mar 23 10:52:19 2012 UTC (13 years, 5 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 234686 byte(s)
Log Message:
- Implement basic tls connections for server-server links

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

Properties

Name Value
svn:eol-style native