ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1369
Committed: Wed Apr 25 19:04:19 2012 UTC (13 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 235526 byte(s)
Log Message:
- cleanup temporary k/d/g line code

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

Properties

Name Value
svn:eol-style native