ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1329
Committed: Sun Apr 1 12:02:12 2012 UTC (13 years, 4 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 235314 byte(s)
Log Message:
- Remove unused configure tests
- Fixed compile warning in conf_parser.c

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, 635, 643, 658, 673, 682, 696, 705, 733, 763,
1303 786, 795, 797, 797, 798, 798, 799, 799, 801, 810,
1304 819, 831, 832, 832, 834, 834, 835, 837, 844, 844,
1305 854, 855, 857, 857, 858, 858, 860, 865, 868, 874,
1306 873, 879, 879, 880, 884, 888, 892, 896, 900, 904,
1307 915, 914, 1012, 1012, 1013, 1013, 1013, 1014, 1014, 1014,
1308 1015, 1015, 1015, 1017, 1029, 1066, 1078, 1089, 1131, 1141,
1309 1140, 1146, 1146, 1147, 1151, 1155, 1159, 1163, 1167, 1171,
1310 1175, 1179, 1183, 1187, 1191, 1195, 1199, 1203, 1207, 1211,
1311 1215, 1219, 1223, 1230, 1229, 1235, 1235, 1236, 1240, 1244,
1312 1248, 1252, 1256, 1260, 1264, 1268, 1272, 1276, 1280, 1284,
1313 1288, 1292, 1296, 1300, 1304, 1315, 1314, 1364, 1364, 1365,
1314 1366, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373, 1374,
1315 1375, 1376, 1377, 1379, 1388, 1394, 1400, 1406, 1412, 1418,
1316 1424, 1430, 1436, 1442, 1448, 1454, 1464, 1463, 1480, 1479,
1317 1484, 1484, 1485, 1489, 1493, 1501, 1501, 1502, 1502, 1502,
1318 1502, 1502, 1504, 1504, 1506, 1506, 1508, 1522, 1542, 1551,
1319 1564, 1563, 1632, 1632, 1633, 1633, 1633, 1633, 1634, 1634,
1320 1634, 1635, 1635, 1637, 1674, 1687, 1696, 1708, 1707, 1711,
1321 1711, 1712, 1716, 1720, 1724, 1728, 1732, 1736, 1740, 1744,
1322 1751, 1770, 1780, 1794, 1793, 1809, 1809, 1810, 1810, 1810,
1323 1810, 1812, 1821, 1836, 1849, 1851, 1851, 1852, 1852, 1854,
1324 1870, 1869, 1885, 1885, 1886, 1886, 1886, 1886, 1888, 1897,
1325 1920, 1919, 1925, 1925, 1926, 1930, 1934, 1938, 1942, 1946,
1326 1950, 1954, 1958, 1962, 1972, 1971, 1988, 1988, 1989, 1989,
1327 1989, 1991, 1998, 1997, 2003, 2003, 2004, 2008, 2012, 2016,
1328 2020, 2024, 2028, 2032, 2036, 2040, 2050, 2049, 2178, 2178,
1329 2179, 2179, 2179, 2180, 2180, 2181, 2181, 2181, 2182, 2182,
1330 2182, 2183, 2183, 2184, 2186, 2198, 2207, 2233, 2251, 2269,
1331 2275, 2279, 2288, 2287, 2291, 2291, 2292, 2296, 2300, 2304,
1332 2310, 2321, 2334, 2347, 2356, 2375, 2374, 2438, 2437, 2441,
1333 2441, 2442, 2448, 2448, 2449, 2449, 2449, 2449, 2451, 2470,
1334 2480, 2479, 2502, 2502, 2503, 2503, 2503, 2505, 2511, 2520,
1335 2522, 2522, 2523, 2523, 2525, 2544, 2543, 2591, 2590, 2594,
1336 2594, 2595, 2601, 2601, 2602, 2602, 2602, 2602, 2604, 2610,
1337 2619, 2622, 2622, 2623, 2623, 2624, 2624, 2625, 2625, 2626,
1338 2626, 2627, 2627, 2628, 2628, 2629, 2629, 2630, 2630, 2631,
1339 2631, 2632, 2632, 2633, 2633, 2634, 2634, 2635, 2635, 2636,
1340 2637, 2637, 2638, 2638, 2639, 2639, 2640, 2640, 2641, 2641,
1341 2642, 2643, 2644, 2644, 2645, 2646, 2647, 2647, 2648, 2648,
1342 2649, 2649, 2650, 2650, 2651, 2654, 2659, 2664, 2669, 2674,
1343 2679, 2684, 2689, 2694, 2699, 2704, 2709, 2714, 2719, 2724,
1344 2729, 2734, 2739, 2745, 2756, 2761, 2770, 2775, 2780, 2785,
1345 2790, 2795, 2798, 2803, 2806, 2811, 2816, 2821, 2826, 2831,
1346 2836, 2841, 2846, 2851, 2862, 2867, 2872, 2877, 2886, 2895,
1347 2900, 2905, 2911, 2910, 2915, 2915, 2916, 2919, 2922, 2925,
1348 2928, 2931, 2934, 2937, 2940, 2943, 2946, 2949, 2952, 2955,
1349 2958, 2961, 2964, 2967, 2970, 2973, 2979, 2978, 2983, 2983,
1350 2984, 2987, 2990, 2993, 2996, 2999, 3002, 3005, 3008, 3011,
1351 3014, 3017, 3020, 3023, 3026, 3029, 3032, 3035, 3038, 3041,
1352 3046, 3051, 3056, 3061, 3071, 3070, 3094, 3094, 3095, 3096,
1353 3097, 3098, 3099, 3100, 3101, 3103, 3109, 3116, 3115, 3120,
1354 3120, 3121, 3125, 3131, 3165, 3175, 3174, 3224, 3224, 3225,
1355 3229, 3238, 3241, 3241, 3242, 3242, 3243, 3243, 3244, 3244,
1356 3245, 3245, 3246, 3246, 3247, 3248, 3248, 3249, 3249, 3250,
1357 3250, 3251, 3251, 3253, 3258, 3263, 3268, 3273, 3278, 3283,
1358 3288, 3293, 3298, 3303, 3308, 3313, 3318, 3323, 3328, 3333,
1359 3338, 3346, 3349, 3349, 3350, 3350, 3351, 3352, 3353, 3353,
1360 3354, 3355, 3357, 3363, 3369, 3378, 3392, 3398, 3404
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 SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3576 DH_free(dh);
3577 }
3578 }
3579 }
3580 #endif
3581 }
3582 break;
3583
3584 case 81:
3585
3586 /* Line 1806 of yacc.c */
3587 #line 636 "conf_parser.y"
3588 {
3589 #ifdef HAVE_LIBCRYPTO
3590 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3591 SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
3592 #endif
3593 }
3594 break;
3595
3596 case 82:
3597
3598 /* Line 1806 of yacc.c */
3599 #line 644 "conf_parser.y"
3600 {
3601 /* this isn't rehashable */
3602 if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3603 {
3604 if (valid_servname(yylval.string))
3605 DupString(ServerInfo.name, yylval.string);
3606 else
3607 {
3608 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
3609 exit(0);
3610 }
3611 }
3612 }
3613 break;
3614
3615 case 83:
3616
3617 /* Line 1806 of yacc.c */
3618 #line 659 "conf_parser.y"
3619 {
3620 /* this isn't rehashable */
3621 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3622 {
3623 if (valid_sid(yylval.string))
3624 DupString(ServerInfo.sid, yylval.string);
3625 else
3626 {
3627 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3628 exit(0);
3629 }
3630 }
3631 }
3632 break;
3633
3634 case 84:
3635
3636 /* Line 1806 of yacc.c */
3637 #line 674 "conf_parser.y"
3638 {
3639 if (conf_parser_ctx.pass == 2)
3640 {
3641 MyFree(ServerInfo.description);
3642 DupString(ServerInfo.description,yylval.string);
3643 }
3644 }
3645 break;
3646
3647 case 85:
3648
3649 /* Line 1806 of yacc.c */
3650 #line 683 "conf_parser.y"
3651 {
3652 if (conf_parser_ctx.pass == 2)
3653 {
3654 char *p;
3655
3656 if ((p = strchr(yylval.string, ' ')) != NULL)
3657 p = '\0';
3658
3659 MyFree(ServerInfo.network_name);
3660 DupString(ServerInfo.network_name, yylval.string);
3661 }
3662 }
3663 break;
3664
3665 case 86:
3666
3667 /* Line 1806 of yacc.c */
3668 #line 697 "conf_parser.y"
3669 {
3670 if (conf_parser_ctx.pass == 2)
3671 {
3672 MyFree(ServerInfo.network_desc);
3673 DupString(ServerInfo.network_desc, yylval.string);
3674 }
3675 }
3676 break;
3677
3678 case 87:
3679
3680 /* Line 1806 of yacc.c */
3681 #line 706 "conf_parser.y"
3682 {
3683 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3684 {
3685 struct addrinfo hints, *res;
3686
3687 memset(&hints, 0, sizeof(hints));
3688
3689 hints.ai_family = AF_UNSPEC;
3690 hints.ai_socktype = SOCK_STREAM;
3691 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3692
3693 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3694 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3695 else
3696 {
3697 assert(res != NULL);
3698
3699 memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3700 ServerInfo.ip.ss.ss_family = res->ai_family;
3701 ServerInfo.ip.ss_len = res->ai_addrlen;
3702 freeaddrinfo(res);
3703
3704 ServerInfo.specific_ipv4_vhost = 1;
3705 }
3706 }
3707 }
3708 break;
3709
3710 case 88:
3711
3712 /* Line 1806 of yacc.c */
3713 #line 734 "conf_parser.y"
3714 {
3715 #ifdef IPV6
3716 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3717 {
3718 struct addrinfo hints, *res;
3719
3720 memset(&hints, 0, sizeof(hints));
3721
3722 hints.ai_family = AF_UNSPEC;
3723 hints.ai_socktype = SOCK_STREAM;
3724 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3725
3726 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3727 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3728 else
3729 {
3730 assert(res != NULL);
3731
3732 memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3733 ServerInfo.ip6.ss.ss_family = res->ai_family;
3734 ServerInfo.ip6.ss_len = res->ai_addrlen;
3735 freeaddrinfo(res);
3736
3737 ServerInfo.specific_ipv6_vhost = 1;
3738 }
3739 }
3740 #endif
3741 }
3742 break;
3743
3744 case 89:
3745
3746 /* Line 1806 of yacc.c */
3747 #line 764 "conf_parser.y"
3748 {
3749 if (conf_parser_ctx.pass == 2)
3750 {
3751 recalc_fdlimit(NULL);
3752
3753 if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3754 {
3755 char buf[IRCD_BUFSIZE];
3756 ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3757 yyerror(buf);
3758 }
3759 else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3760 {
3761 char buf[IRCD_BUFSIZE];
3762 ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3763 yyerror(buf);
3764 }
3765 else
3766 ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3767 }
3768 }
3769 break;
3770
3771 case 90:
3772
3773 /* Line 1806 of yacc.c */
3774 #line 787 "conf_parser.y"
3775 {
3776 if (conf_parser_ctx.pass == 2)
3777 ServerInfo.hub = yylval.number;
3778 }
3779 break;
3780
3781 case 98:
3782
3783 /* Line 1806 of yacc.c */
3784 #line 802 "conf_parser.y"
3785 {
3786 if (conf_parser_ctx.pass == 2)
3787 {
3788 MyFree(AdminInfo.name);
3789 DupString(AdminInfo.name, yylval.string);
3790 }
3791 }
3792 break;
3793
3794 case 99:
3795
3796 /* Line 1806 of yacc.c */
3797 #line 811 "conf_parser.y"
3798 {
3799 if (conf_parser_ctx.pass == 2)
3800 {
3801 MyFree(AdminInfo.email);
3802 DupString(AdminInfo.email, yylval.string);
3803 }
3804 }
3805 break;
3806
3807 case 100:
3808
3809 /* Line 1806 of yacc.c */
3810 #line 820 "conf_parser.y"
3811 {
3812 if (conf_parser_ctx.pass == 2)
3813 {
3814 MyFree(AdminInfo.description);
3815 DupString(AdminInfo.description, yylval.string);
3816 }
3817 }
3818 break;
3819
3820 case 107:
3821
3822 /* Line 1806 of yacc.c */
3823 #line 838 "conf_parser.y"
3824 {
3825 if (conf_parser_ctx.pass == 2)
3826 ConfigLoggingEntry.use_logging = yylval.number;
3827 }
3828 break;
3829
3830 case 108:
3831
3832 /* Line 1806 of yacc.c */
3833 #line 844 "conf_parser.y"
3834 {
3835 lfile[0] = '\0';
3836 ltype = 0;
3837 lsize = 0;
3838 }
3839 break;
3840
3841 case 109:
3842
3843 /* Line 1806 of yacc.c */
3844 #line 849 "conf_parser.y"
3845 {
3846 if (conf_parser_ctx.pass == 2 && ltype > 0)
3847 log_add_file(ltype, lsize, lfile);
3848 }
3849 break;
3850
3851 case 116:
3852
3853 /* Line 1806 of yacc.c */
3854 #line 861 "conf_parser.y"
3855 {
3856 strlcpy(lfile, yylval.string, sizeof(lfile));
3857 }
3858 break;
3859
3860 case 117:
3861
3862 /* Line 1806 of yacc.c */
3863 #line 866 "conf_parser.y"
3864 {
3865 lsize = (yyvsp[(3) - (4)].number);
3866 }
3867 break;
3868
3869 case 118:
3870
3871 /* Line 1806 of yacc.c */
3872 #line 869 "conf_parser.y"
3873 {
3874 lsize = 0;
3875 }
3876 break;
3877
3878 case 119:
3879
3880 /* Line 1806 of yacc.c */
3881 #line 874 "conf_parser.y"
3882 {
3883 if (conf_parser_ctx.pass == 2)
3884 ltype = 0;
3885 }
3886 break;
3887
3888 case 123:
3889
3890 /* Line 1806 of yacc.c */
3891 #line 881 "conf_parser.y"
3892 {
3893 if (conf_parser_ctx.pass == 2)
3894 ltype = LOG_TYPE_USER;
3895 }
3896 break;
3897
3898 case 124:
3899
3900 /* Line 1806 of yacc.c */
3901 #line 885 "conf_parser.y"
3902 {
3903 if (conf_parser_ctx.pass == 2)
3904 ltype = LOG_TYPE_OPER;
3905 }
3906 break;
3907
3908 case 125:
3909
3910 /* Line 1806 of yacc.c */
3911 #line 889 "conf_parser.y"
3912 {
3913 if (conf_parser_ctx.pass == 2)
3914 ltype = LOG_TYPE_GLINE;
3915 }
3916 break;
3917
3918 case 126:
3919
3920 /* Line 1806 of yacc.c */
3921 #line 893 "conf_parser.y"
3922 {
3923 if (conf_parser_ctx.pass == 2)
3924 ltype = LOG_TYPE_DLINE;
3925 }
3926 break;
3927
3928 case 127:
3929
3930 /* Line 1806 of yacc.c */
3931 #line 897 "conf_parser.y"
3932 {
3933 if (conf_parser_ctx.pass == 2)
3934 ltype = LOG_TYPE_KLINE;
3935 }
3936 break;
3937
3938 case 128:
3939
3940 /* Line 1806 of yacc.c */
3941 #line 901 "conf_parser.y"
3942 {
3943 if (conf_parser_ctx.pass == 2)
3944 ltype = LOG_TYPE_KILL;
3945 }
3946 break;
3947
3948 case 129:
3949
3950 /* Line 1806 of yacc.c */
3951 #line 905 "conf_parser.y"
3952 {
3953 if (conf_parser_ctx.pass == 2)
3954 ltype = LOG_TYPE_DEBUG;
3955 }
3956 break;
3957
3958 case 130:
3959
3960 /* Line 1806 of yacc.c */
3961 #line 915 "conf_parser.y"
3962 {
3963 if (conf_parser_ctx.pass == 2)
3964 {
3965 yy_conf = make_conf_item(OPER_TYPE);
3966 yy_aconf = map_to_conf(yy_conf);
3967 SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
3968 }
3969 else
3970 {
3971 MyFree(class_name);
3972 class_name = NULL;
3973 }
3974 }
3975 break;
3976
3977 case 131:
3978
3979 /* Line 1806 of yacc.c */
3980 #line 928 "conf_parser.y"
3981 {
3982 if (conf_parser_ctx.pass == 2)
3983 {
3984 struct CollectItem *yy_tmp;
3985 dlink_node *ptr;
3986 dlink_node *next_ptr;
3987
3988 conf_add_class_to_conf(yy_conf, class_name);
3989
3990 /* Now, make sure there is a copy of the "base" given oper
3991 * block in each of the collected copies
3992 */
3993
3994 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
3995 {
3996 struct AccessItem *new_aconf;
3997 struct ConfItem *new_conf;
3998 yy_tmp = ptr->data;
3999
4000 new_conf = make_conf_item(OPER_TYPE);
4001 new_aconf = (struct AccessItem *)map_to_conf(new_conf);
4002
4003 new_aconf->flags = yy_aconf->flags;
4004
4005 if (yy_conf->name != NULL)
4006 DupString(new_conf->name, yy_conf->name);
4007 if (yy_tmp->user != NULL)
4008 DupString(new_aconf->user, yy_tmp->user);
4009 else
4010 DupString(new_aconf->user, "*");
4011 if (yy_tmp->host != NULL)
4012 DupString(new_aconf->host, yy_tmp->host);
4013 else
4014 DupString(new_aconf->host, "*");
4015
4016 new_aconf->type = parse_netmask(new_aconf->host, &new_aconf->ipnum,
4017 &new_aconf->bits);
4018
4019 conf_add_class_to_conf(new_conf, class_name);
4020 if (yy_aconf->passwd != NULL)
4021 DupString(new_aconf->passwd, yy_aconf->passwd);
4022
4023 new_aconf->port = yy_aconf->port;
4024 #ifdef HAVE_LIBCRYPTO
4025 if (yy_aconf->rsa_public_key_file != NULL)
4026 {
4027 BIO *file;
4028
4029 DupString(new_aconf->rsa_public_key_file,
4030 yy_aconf->rsa_public_key_file);
4031
4032 file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4033 new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4034 NULL, 0, NULL);
4035 BIO_set_close(file, BIO_CLOSE);
4036 BIO_free(file);
4037 }
4038 #endif
4039
4040 #ifdef HAVE_LIBCRYPTO
4041 if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4042 && yy_tmp->host)
4043 #else
4044 if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4045 #endif
4046 {
4047 conf_add_class_to_conf(new_conf, class_name);
4048 if (yy_tmp->name != NULL)
4049 DupString(new_conf->name, yy_tmp->name);
4050 }
4051
4052 dlinkDelete(&yy_tmp->node, &col_conf_list);
4053 free_collect_item(yy_tmp);
4054 }
4055
4056 yy_conf = NULL;
4057 yy_aconf = NULL;
4058
4059
4060 MyFree(class_name);
4061 class_name = NULL;
4062 }
4063 }
4064 break;
4065
4066 case 143:
4067
4068 /* Line 1806 of yacc.c */
4069 #line 1018 "conf_parser.y"
4070 {
4071 if (conf_parser_ctx.pass == 2)
4072 {
4073 if (strlen(yylval.string) > OPERNICKLEN)
4074 yylval.string[OPERNICKLEN] = '\0';
4075
4076 MyFree(yy_conf->name);
4077 DupString(yy_conf->name, yylval.string);
4078 }
4079 }
4080 break;
4081
4082 case 144:
4083
4084 /* Line 1806 of yacc.c */
4085 #line 1030 "conf_parser.y"
4086 {
4087 if (conf_parser_ctx.pass == 2)
4088 {
4089 struct split_nuh_item nuh;
4090
4091 nuh.nuhmask = yylval.string;
4092 nuh.nickptr = NULL;
4093 nuh.userptr = userbuf;
4094 nuh.hostptr = hostbuf;
4095
4096 nuh.nicksize = 0;
4097 nuh.usersize = sizeof(userbuf);
4098 nuh.hostsize = sizeof(hostbuf);
4099
4100 split_nuh(&nuh);
4101
4102 if (yy_aconf->user == NULL)
4103 {
4104 DupString(yy_aconf->user, userbuf);
4105 DupString(yy_aconf->host, hostbuf);
4106
4107 yy_aconf->type = parse_netmask(yy_aconf->host, &yy_aconf->ipnum,
4108 &yy_aconf->bits);
4109 }
4110 else
4111 {
4112 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4113
4114 DupString(yy_tmp->user, userbuf);
4115 DupString(yy_tmp->host, hostbuf);
4116
4117 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4118 }
4119 }
4120 }
4121 break;
4122
4123 case 145:
4124
4125 /* Line 1806 of yacc.c */
4126 #line 1067 "conf_parser.y"
4127 {
4128 if (conf_parser_ctx.pass == 2)
4129 {
4130 if (yy_aconf->passwd != NULL)
4131 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4132
4133 MyFree(yy_aconf->passwd);
4134 DupString(yy_aconf->passwd, yylval.string);
4135 }
4136 }
4137 break;
4138
4139 case 146:
4140
4141 /* Line 1806 of yacc.c */
4142 #line 1079 "conf_parser.y"
4143 {
4144 if (conf_parser_ctx.pass == 2)
4145 {
4146 if (yylval.number)
4147 SetConfEncrypted(yy_aconf);
4148 else
4149 ClearConfEncrypted(yy_aconf);
4150 }
4151 }
4152 break;
4153
4154 case 147:
4155
4156 /* Line 1806 of yacc.c */
4157 #line 1090 "conf_parser.y"
4158 {
4159 #ifdef HAVE_LIBCRYPTO
4160 if (conf_parser_ctx.pass == 2)
4161 {
4162 BIO *file;
4163
4164 if (yy_aconf->rsa_public_key != NULL)
4165 {
4166 RSA_free(yy_aconf->rsa_public_key);
4167 yy_aconf->rsa_public_key = NULL;
4168 }
4169
4170 if (yy_aconf->rsa_public_key_file != NULL)
4171 {
4172 MyFree(yy_aconf->rsa_public_key_file);
4173 yy_aconf->rsa_public_key_file = NULL;
4174 }
4175
4176 DupString(yy_aconf->rsa_public_key_file, yylval.string);
4177 file = BIO_new_file(yylval.string, "r");
4178
4179 if (file == NULL)
4180 {
4181 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4182 break;
4183 }
4184
4185 yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4186
4187 if (yy_aconf->rsa_public_key == NULL)
4188 {
4189 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4190 break;
4191 }
4192
4193 BIO_set_close(file, BIO_CLOSE);
4194 BIO_free(file);
4195 }
4196 #endif /* HAVE_LIBCRYPTO */
4197 }
4198 break;
4199
4200 case 148:
4201
4202 /* Line 1806 of yacc.c */
4203 #line 1132 "conf_parser.y"
4204 {
4205 if (conf_parser_ctx.pass == 2)
4206 {
4207 MyFree(class_name);
4208 DupString(class_name, yylval.string);
4209 }
4210 }
4211 break;
4212
4213 case 149:
4214
4215 /* Line 1806 of yacc.c */
4216 #line 1141 "conf_parser.y"
4217 {
4218 if (conf_parser_ctx.pass == 2)
4219 yy_aconf->modes = 0;
4220 }
4221 break;
4222
4223 case 153:
4224
4225 /* Line 1806 of yacc.c */
4226 #line 1148 "conf_parser.y"
4227 {
4228 if (conf_parser_ctx.pass == 2)
4229 yy_aconf->modes |= UMODE_BOTS;
4230 }
4231 break;
4232
4233 case 154:
4234
4235 /* Line 1806 of yacc.c */
4236 #line 1152 "conf_parser.y"
4237 {
4238 if (conf_parser_ctx.pass == 2)
4239 yy_aconf->modes |= UMODE_CCONN;
4240 }
4241 break;
4242
4243 case 155:
4244
4245 /* Line 1806 of yacc.c */
4246 #line 1156 "conf_parser.y"
4247 {
4248 if (conf_parser_ctx.pass == 2)
4249 yy_aconf->modes |= UMODE_CCONN_FULL;
4250 }
4251 break;
4252
4253 case 156:
4254
4255 /* Line 1806 of yacc.c */
4256 #line 1160 "conf_parser.y"
4257 {
4258 if (conf_parser_ctx.pass == 2)
4259 yy_aconf->modes |= UMODE_DEAF;
4260 }
4261 break;
4262
4263 case 157:
4264
4265 /* Line 1806 of yacc.c */
4266 #line 1164 "conf_parser.y"
4267 {
4268 if (conf_parser_ctx.pass == 2)
4269 yy_aconf->modes |= UMODE_DEBUG;
4270 }
4271 break;
4272
4273 case 158:
4274
4275 /* Line 1806 of yacc.c */
4276 #line 1168 "conf_parser.y"
4277 {
4278 if (conf_parser_ctx.pass == 2)
4279 yy_aconf->modes |= UMODE_FULL;
4280 }
4281 break;
4282
4283 case 159:
4284
4285 /* Line 1806 of yacc.c */
4286 #line 1172 "conf_parser.y"
4287 {
4288 if (conf_parser_ctx.pass == 2)
4289 yy_aconf->modes |= UMODE_HIDDEN;
4290 }
4291 break;
4292
4293 case 160:
4294
4295 /* Line 1806 of yacc.c */
4296 #line 1176 "conf_parser.y"
4297 {
4298 if (conf_parser_ctx.pass == 2)
4299 yy_aconf->modes |= UMODE_SKILL;
4300 }
4301 break;
4302
4303 case 161:
4304
4305 /* Line 1806 of yacc.c */
4306 #line 1180 "conf_parser.y"
4307 {
4308 if (conf_parser_ctx.pass == 2)
4309 yy_aconf->modes |= UMODE_NCHANGE;
4310 }
4311 break;
4312
4313 case 162:
4314
4315 /* Line 1806 of yacc.c */
4316 #line 1184 "conf_parser.y"
4317 {
4318 if (conf_parser_ctx.pass == 2)
4319 yy_aconf->modes |= UMODE_REJ;
4320 }
4321 break;
4322
4323 case 163:
4324
4325 /* Line 1806 of yacc.c */
4326 #line 1188 "conf_parser.y"
4327 {
4328 if (conf_parser_ctx.pass == 2)
4329 yy_aconf->modes |= UMODE_UNAUTH;
4330 }
4331 break;
4332
4333 case 164:
4334
4335 /* Line 1806 of yacc.c */
4336 #line 1192 "conf_parser.y"
4337 {
4338 if (conf_parser_ctx.pass == 2)
4339 yy_aconf->modes |= UMODE_SPY;
4340 }
4341 break;
4342
4343 case 165:
4344
4345 /* Line 1806 of yacc.c */
4346 #line 1196 "conf_parser.y"
4347 {
4348 if (conf_parser_ctx.pass == 2)
4349 yy_aconf->modes |= UMODE_EXTERNAL;
4350 }
4351 break;
4352
4353 case 166:
4354
4355 /* Line 1806 of yacc.c */
4356 #line 1200 "conf_parser.y"
4357 {
4358 if (conf_parser_ctx.pass == 2)
4359 yy_aconf->modes |= UMODE_OPERWALL;
4360 }
4361 break;
4362
4363 case 167:
4364
4365 /* Line 1806 of yacc.c */
4366 #line 1204 "conf_parser.y"
4367 {
4368 if (conf_parser_ctx.pass == 2)
4369 yy_aconf->modes |= UMODE_SERVNOTICE;
4370 }
4371 break;
4372
4373 case 168:
4374
4375 /* Line 1806 of yacc.c */
4376 #line 1208 "conf_parser.y"
4377 {
4378 if (conf_parser_ctx.pass == 2)
4379 yy_aconf->modes |= UMODE_INVISIBLE;
4380 }
4381 break;
4382
4383 case 169:
4384
4385 /* Line 1806 of yacc.c */
4386 #line 1212 "conf_parser.y"
4387 {
4388 if (conf_parser_ctx.pass == 2)
4389 yy_aconf->modes |= UMODE_WALLOP;
4390 }
4391 break;
4392
4393 case 170:
4394
4395 /* Line 1806 of yacc.c */
4396 #line 1216 "conf_parser.y"
4397 {
4398 if (conf_parser_ctx.pass == 2)
4399 yy_aconf->modes |= UMODE_SOFTCALLERID;
4400 }
4401 break;
4402
4403 case 171:
4404
4405 /* Line 1806 of yacc.c */
4406 #line 1220 "conf_parser.y"
4407 {
4408 if (conf_parser_ctx.pass == 2)
4409 yy_aconf->modes |= UMODE_CALLERID;
4410 }
4411 break;
4412
4413 case 172:
4414
4415 /* Line 1806 of yacc.c */
4416 #line 1224 "conf_parser.y"
4417 {
4418 if (conf_parser_ctx.pass == 2)
4419 yy_aconf->modes |= UMODE_LOCOPS;
4420 }
4421 break;
4422
4423 case 173:
4424
4425 /* Line 1806 of yacc.c */
4426 #line 1230 "conf_parser.y"
4427 {
4428 if (conf_parser_ctx.pass == 2)
4429 yy_aconf->port = 0;
4430 }
4431 break;
4432
4433 case 177:
4434
4435 /* Line 1806 of yacc.c */
4436 #line 1237 "conf_parser.y"
4437 {
4438 if (conf_parser_ctx.pass == 2)
4439 yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4440 }
4441 break;
4442
4443 case 178:
4444
4445 /* Line 1806 of yacc.c */
4446 #line 1241 "conf_parser.y"
4447 {
4448 if (conf_parser_ctx.pass == 2)
4449 yy_aconf->port |= OPER_FLAG_REMOTE;
4450 }
4451 break;
4452
4453 case 179:
4454
4455 /* Line 1806 of yacc.c */
4456 #line 1245 "conf_parser.y"
4457 {
4458 if (conf_parser_ctx.pass == 2)
4459 yy_aconf->port |= OPER_FLAG_K;
4460 }
4461 break;
4462
4463 case 180:
4464
4465 /* Line 1806 of yacc.c */
4466 #line 1249 "conf_parser.y"
4467 {
4468 if (conf_parser_ctx.pass == 2)
4469 yy_aconf->port |= OPER_FLAG_UNKLINE;
4470 }
4471 break;
4472
4473 case 181:
4474
4475 /* Line 1806 of yacc.c */
4476 #line 1253 "conf_parser.y"
4477 {
4478 if (conf_parser_ctx.pass == 2)
4479 yy_aconf->port |= OPER_FLAG_DLINE;
4480 }
4481 break;
4482
4483 case 182:
4484
4485 /* Line 1806 of yacc.c */
4486 #line 1257 "conf_parser.y"
4487 {
4488 if (conf_parser_ctx.pass == 2)
4489 yy_aconf->port |= OPER_FLAG_UNDLINE;
4490 }
4491 break;
4492
4493 case 183:
4494
4495 /* Line 1806 of yacc.c */
4496 #line 1261 "conf_parser.y"
4497 {
4498 if (conf_parser_ctx.pass == 2)
4499 yy_aconf->port |= OPER_FLAG_X;
4500 }
4501 break;
4502
4503 case 184:
4504
4505 /* Line 1806 of yacc.c */
4506 #line 1265 "conf_parser.y"
4507 {
4508 if (conf_parser_ctx.pass == 2)
4509 yy_aconf->port |= OPER_FLAG_GLINE;
4510 }
4511 break;
4512
4513 case 185:
4514
4515 /* Line 1806 of yacc.c */
4516 #line 1269 "conf_parser.y"
4517 {
4518 if (conf_parser_ctx.pass == 2)
4519 yy_aconf->port |= OPER_FLAG_DIE;
4520 }
4521 break;
4522
4523 case 186:
4524
4525 /* Line 1806 of yacc.c */
4526 #line 1273 "conf_parser.y"
4527 {
4528 if (conf_parser_ctx.pass == 2)
4529 yy_aconf->port |= OPER_FLAG_RESTART;
4530 }
4531 break;
4532
4533 case 187:
4534
4535 /* Line 1806 of yacc.c */
4536 #line 1277 "conf_parser.y"
4537 {
4538 if (conf_parser_ctx.pass == 2)
4539 yy_aconf->port |= OPER_FLAG_REHASH;
4540 }
4541 break;
4542
4543 case 188:
4544
4545 /* Line 1806 of yacc.c */
4546 #line 1281 "conf_parser.y"
4547 {
4548 if (conf_parser_ctx.pass == 2)
4549 yy_aconf->port |= OPER_FLAG_ADMIN;
4550 }
4551 break;
4552
4553 case 189:
4554
4555 /* Line 1806 of yacc.c */
4556 #line 1285 "conf_parser.y"
4557 {
4558 if (conf_parser_ctx.pass == 2)
4559 yy_aconf->port |= OPER_FLAG_N;
4560 }
4561 break;
4562
4563 case 190:
4564
4565 /* Line 1806 of yacc.c */
4566 #line 1289 "conf_parser.y"
4567 {
4568 if (conf_parser_ctx.pass == 2)
4569 yy_aconf->port |= OPER_FLAG_OPERWALL;
4570 }
4571 break;
4572
4573 case 191:
4574
4575 /* Line 1806 of yacc.c */
4576 #line 1293 "conf_parser.y"
4577 {
4578 if (conf_parser_ctx.pass == 2)
4579 yy_aconf->port |= OPER_FLAG_GLOBOPS;
4580 }
4581 break;
4582
4583 case 192:
4584
4585 /* Line 1806 of yacc.c */
4586 #line 1297 "conf_parser.y"
4587 {
4588 if (conf_parser_ctx.pass == 2)
4589 yy_aconf->port |= OPER_FLAG_OPER_SPY;
4590 }
4591 break;
4592
4593 case 193:
4594
4595 /* Line 1806 of yacc.c */
4596 #line 1301 "conf_parser.y"
4597 {
4598 if (conf_parser_ctx.pass == 2)
4599 yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4600 }
4601 break;
4602
4603 case 194:
4604
4605 /* Line 1806 of yacc.c */
4606 #line 1305 "conf_parser.y"
4607 {
4608 if (conf_parser_ctx.pass == 2)
4609 yy_aconf->port |= OPER_FLAG_MODULE;
4610 }
4611 break;
4612
4613 case 195:
4614
4615 /* Line 1806 of yacc.c */
4616 #line 1315 "conf_parser.y"
4617 {
4618 if (conf_parser_ctx.pass == 1)
4619 {
4620 yy_conf = make_conf_item(CLASS_TYPE);
4621 yy_class = map_to_conf(yy_conf);
4622 }
4623 }
4624 break;
4625
4626 case 196:
4627
4628 /* Line 1806 of yacc.c */
4629 #line 1322 "conf_parser.y"
4630 {
4631 if (conf_parser_ctx.pass == 1)
4632 {
4633 struct ConfItem *cconf = NULL;
4634 struct ClassItem *class = NULL;
4635
4636 if (yy_class_name == NULL)
4637 delete_conf_item(yy_conf);
4638 else
4639 {
4640 cconf = find_exact_name_conf(CLASS_TYPE, NULL, yy_class_name, NULL, NULL);
4641
4642 if (cconf != NULL) /* The class existed already */
4643 {
4644 int user_count = 0;
4645
4646 rebuild_cidr_class(cconf, yy_class);
4647
4648 class = map_to_conf(cconf);
4649
4650 user_count = class->curr_user_count;
4651 memcpy(class, yy_class, sizeof(*class));
4652 class->curr_user_count = user_count;
4653 class->active = 1;
4654
4655 delete_conf_item(yy_conf);
4656
4657 MyFree(cconf->name); /* Allows case change of class name */
4658 cconf->name = yy_class_name;
4659 }
4660 else /* Brand new class */
4661 {
4662 MyFree(yy_conf->name); /* just in case it was allocated */
4663 yy_conf->name = yy_class_name;
4664 yy_class->active = 1;
4665 }
4666 }
4667
4668 yy_class_name = NULL;
4669 }
4670 }
4671 break;
4672
4673 case 213:
4674
4675 /* Line 1806 of yacc.c */
4676 #line 1380 "conf_parser.y"
4677 {
4678 if (conf_parser_ctx.pass == 1)
4679 {
4680 MyFree(yy_class_name);
4681 DupString(yy_class_name, yylval.string);
4682 }
4683 }
4684 break;
4685
4686 case 214:
4687
4688 /* Line 1806 of yacc.c */
4689 #line 1389 "conf_parser.y"
4690 {
4691 if (conf_parser_ctx.pass == 1)
4692 PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
4693 }
4694 break;
4695
4696 case 215:
4697
4698 /* Line 1806 of yacc.c */
4699 #line 1395 "conf_parser.y"
4700 {
4701 if (conf_parser_ctx.pass == 1)
4702 PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
4703 }
4704 break;
4705
4706 case 216:
4707
4708 /* Line 1806 of yacc.c */
4709 #line 1401 "conf_parser.y"
4710 {
4711 if (conf_parser_ctx.pass == 1)
4712 MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
4713 }
4714 break;
4715
4716 case 217:
4717
4718 /* Line 1806 of yacc.c */
4719 #line 1407 "conf_parser.y"
4720 {
4721 if (conf_parser_ctx.pass == 1)
4722 ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
4723 }
4724 break;
4725
4726 case 218:
4727
4728 /* Line 1806 of yacc.c */
4729 #line 1413 "conf_parser.y"
4730 {
4731 if (conf_parser_ctx.pass == 1)
4732 MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
4733 }
4734 break;
4735
4736 case 219:
4737
4738 /* Line 1806 of yacc.c */
4739 #line 1419 "conf_parser.y"
4740 {
4741 if (conf_parser_ctx.pass == 1)
4742 MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
4743 }
4744 break;
4745
4746 case 220:
4747
4748 /* Line 1806 of yacc.c */
4749 #line 1425 "conf_parser.y"
4750 {
4751 if (conf_parser_ctx.pass == 1)
4752 MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
4753 }
4754 break;
4755
4756 case 221:
4757
4758 /* Line 1806 of yacc.c */
4759 #line 1431 "conf_parser.y"
4760 {
4761 if (conf_parser_ctx.pass == 1)
4762 MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
4763 }
4764 break;
4765
4766 case 222:
4767
4768 /* Line 1806 of yacc.c */
4769 #line 1437 "conf_parser.y"
4770 {
4771 if (conf_parser_ctx.pass == 1)
4772 MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
4773 }
4774 break;
4775
4776 case 223:
4777
4778 /* Line 1806 of yacc.c */
4779 #line 1443 "conf_parser.y"
4780 {
4781 if (conf_parser_ctx.pass == 1)
4782 CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
4783 }
4784 break;
4785
4786 case 224:
4787
4788 /* Line 1806 of yacc.c */
4789 #line 1449 "conf_parser.y"
4790 {
4791 if (conf_parser_ctx.pass == 1)
4792 CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
4793 }
4794 break;
4795
4796 case 225:
4797
4798 /* Line 1806 of yacc.c */
4799 #line 1455 "conf_parser.y"
4800 {
4801 if (conf_parser_ctx.pass == 1)
4802 NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
4803 }
4804 break;
4805
4806 case 226:
4807
4808 /* Line 1806 of yacc.c */
4809 #line 1464 "conf_parser.y"
4810 {
4811 if (conf_parser_ctx.pass == 2)
4812 {
4813 listener_address = NULL;
4814 listener_flags = 0;
4815 }
4816 }
4817 break;
4818
4819 case 227:
4820
4821 /* Line 1806 of yacc.c */
4822 #line 1471 "conf_parser.y"
4823 {
4824 if (conf_parser_ctx.pass == 2)
4825 {
4826 MyFree(listener_address);
4827 listener_address = NULL;
4828 }
4829 }
4830 break;
4831
4832 case 228:
4833
4834 /* Line 1806 of yacc.c */
4835 #line 1480 "conf_parser.y"
4836 {
4837 listener_flags = 0;
4838 }
4839 break;
4840
4841 case 232:
4842
4843 /* Line 1806 of yacc.c */
4844 #line 1486 "conf_parser.y"
4845 {
4846 if (conf_parser_ctx.pass == 2)
4847 listener_flags |= LISTENER_SSL;
4848 }
4849 break;
4850
4851 case 233:
4852
4853 /* Line 1806 of yacc.c */
4854 #line 1490 "conf_parser.y"
4855 {
4856 if (conf_parser_ctx.pass == 2)
4857 listener_flags |= LISTENER_HIDDEN;
4858 }
4859 break;
4860
4861 case 234:
4862
4863 /* Line 1806 of yacc.c */
4864 #line 1494 "conf_parser.y"
4865 {
4866 if (conf_parser_ctx.pass == 2)
4867 listener_flags |= LISTENER_SERVER;
4868 }
4869 break;
4870
4871 case 242:
4872
4873 /* Line 1806 of yacc.c */
4874 #line 1504 "conf_parser.y"
4875 { listener_flags = 0; }
4876 break;
4877
4878 case 246:
4879
4880 /* Line 1806 of yacc.c */
4881 #line 1509 "conf_parser.y"
4882 {
4883 if (conf_parser_ctx.pass == 2)
4884 {
4885 if ((listener_flags & LISTENER_SSL))
4886 #ifdef HAVE_LIBCRYPTO
4887 if (!ServerInfo.server_ctx)
4888 #endif
4889 {
4890 yyerror("SSL not available - port closed");
4891 break;
4892 }
4893 add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
4894 }
4895 }
4896 break;
4897
4898 case 247:
4899
4900 /* Line 1806 of yacc.c */
4901 #line 1523 "conf_parser.y"
4902 {
4903 if (conf_parser_ctx.pass == 2)
4904 {
4905 int i;
4906
4907 if ((listener_flags & LISTENER_SSL))
4908 #ifdef HAVE_LIBCRYPTO
4909 if (!ServerInfo.server_ctx)
4910 #endif
4911 {
4912 yyerror("SSL not available - port closed");
4913 break;
4914 }
4915
4916 for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4917 add_listener(i, listener_address, listener_flags);
4918 }
4919 }
4920 break;
4921
4922 case 248:
4923
4924 /* Line 1806 of yacc.c */
4925 #line 1543 "conf_parser.y"
4926 {
4927 if (conf_parser_ctx.pass == 2)
4928 {
4929 MyFree(listener_address);
4930 DupString(listener_address, yylval.string);
4931 }
4932 }
4933 break;
4934
4935 case 249:
4936
4937 /* Line 1806 of yacc.c */
4938 #line 1552 "conf_parser.y"
4939 {
4940 if (conf_parser_ctx.pass == 2)
4941 {
4942 MyFree(listener_address);
4943 DupString(listener_address, yylval.string);
4944 }
4945 }
4946 break;
4947
4948 case 250:
4949
4950 /* Line 1806 of yacc.c */
4951 #line 1564 "conf_parser.y"
4952 {
4953 if (conf_parser_ctx.pass == 2)
4954 {
4955 yy_conf = make_conf_item(CLIENT_TYPE);
4956 yy_aconf = map_to_conf(yy_conf);
4957 }
4958 else
4959 {
4960 MyFree(class_name);
4961 class_name = NULL;
4962 }
4963 }
4964 break;
4965
4966 case 251:
4967
4968 /* Line 1806 of yacc.c */
4969 #line 1576 "conf_parser.y"
4970 {
4971 if (conf_parser_ctx.pass == 2)
4972 {
4973 struct CollectItem *yy_tmp = NULL;
4974 dlink_node *ptr = NULL, *next_ptr = NULL;
4975
4976 if (yy_aconf->user && yy_aconf->host)
4977 {
4978 conf_add_class_to_conf(yy_conf, class_name);
4979 add_conf_by_address(CONF_CLIENT, yy_aconf);
4980 }
4981 else
4982 delete_conf_item(yy_conf);
4983
4984 /* copy over settings from first struct */
4985 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4986 {
4987 struct AccessItem *new_aconf;
4988 struct ConfItem *new_conf;
4989
4990 new_conf = make_conf_item(CLIENT_TYPE);
4991 new_aconf = map_to_conf(new_conf);
4992
4993 yy_tmp = ptr->data;
4994
4995 assert(yy_tmp->user && yy_tmp->host);
4996
4997 if (yy_aconf->passwd != NULL)
4998 DupString(new_aconf->passwd, yy_aconf->passwd);
4999 if (yy_conf->name != NULL)
5000 DupString(new_conf->name, yy_conf->name);
5001 if (yy_aconf->passwd != NULL)
5002 DupString(new_aconf->passwd, yy_aconf->passwd);
5003
5004 new_aconf->flags = yy_aconf->flags;
5005 new_aconf->port = yy_aconf->port;
5006
5007 DupString(new_aconf->user, yy_tmp->user);
5008 collapse(new_aconf->user);
5009
5010 DupString(new_aconf->host, yy_tmp->host);
5011 collapse(new_aconf->host);
5012
5013 conf_add_class_to_conf(new_conf, class_name);
5014 add_conf_by_address(CONF_CLIENT, new_aconf);
5015 dlinkDelete(&yy_tmp->node, &col_conf_list);
5016 free_collect_item(yy_tmp);
5017 }
5018
5019 MyFree(class_name);
5020 class_name = NULL;
5021 yy_conf = NULL;
5022 yy_aconf = NULL;
5023 }
5024 }
5025 break;
5026
5027 case 263:
5028
5029 /* Line 1806 of yacc.c */
5030 #line 1638 "conf_parser.y"
5031 {
5032 if (conf_parser_ctx.pass == 2)
5033 {
5034 struct CollectItem *yy_tmp = NULL;
5035 struct split_nuh_item nuh;
5036
5037 nuh.nuhmask = yylval.string;
5038 nuh.nickptr = NULL;
5039 nuh.userptr = userbuf;
5040 nuh.hostptr = hostbuf;
5041
5042 nuh.nicksize = 0;
5043 nuh.usersize = sizeof(userbuf);
5044 nuh.hostsize = sizeof(hostbuf);
5045
5046 split_nuh(&nuh);
5047
5048 if (yy_aconf->user == NULL)
5049 {
5050 DupString(yy_aconf->user, userbuf);
5051 DupString(yy_aconf->host, hostbuf);
5052 }
5053 else
5054 {
5055 yy_tmp = MyMalloc(sizeof(struct CollectItem));
5056
5057 DupString(yy_tmp->user, userbuf);
5058 DupString(yy_tmp->host, hostbuf);
5059
5060 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5061 }
5062 }
5063 }
5064 break;
5065
5066 case 264:
5067
5068 /* Line 1806 of yacc.c */
5069 #line 1675 "conf_parser.y"
5070 {
5071 if (conf_parser_ctx.pass == 2)
5072 {
5073 /* be paranoid */
5074 if (yy_aconf->passwd != NULL)
5075 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5076
5077 MyFree(yy_aconf->passwd);
5078 DupString(yy_aconf->passwd, yylval.string);
5079 }
5080 }
5081 break;
5082
5083 case 265:
5084
5085 /* Line 1806 of yacc.c */
5086 #line 1688 "conf_parser.y"
5087 {
5088 if (conf_parser_ctx.pass == 2)
5089 {
5090 MyFree(class_name);
5091 DupString(class_name, yylval.string);
5092 }
5093 }
5094 break;
5095
5096 case 266:
5097
5098 /* Line 1806 of yacc.c */
5099 #line 1697 "conf_parser.y"
5100 {
5101 if (conf_parser_ctx.pass == 2)
5102 {
5103 if (yylval.number)
5104 SetConfEncrypted(yy_aconf);
5105 else
5106 ClearConfEncrypted(yy_aconf);
5107 }
5108 }
5109 break;
5110
5111 case 267:
5112
5113 /* Line 1806 of yacc.c */
5114 #line 1708 "conf_parser.y"
5115 {
5116 }
5117 break;
5118
5119 case 271:
5120
5121 /* Line 1806 of yacc.c */
5122 #line 1713 "conf_parser.y"
5123 {
5124 if (conf_parser_ctx.pass == 2)
5125 yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5126 }
5127 break;
5128
5129 case 272:
5130
5131 /* Line 1806 of yacc.c */
5132 #line 1717 "conf_parser.y"
5133 {
5134 if (conf_parser_ctx.pass == 2)
5135 yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5136 }
5137 break;
5138
5139 case 273:
5140
5141 /* Line 1806 of yacc.c */
5142 #line 1721 "conf_parser.y"
5143 {
5144 if (conf_parser_ctx.pass == 2)
5145 yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5146 }
5147 break;
5148
5149 case 274:
5150
5151 /* Line 1806 of yacc.c */
5152 #line 1725 "conf_parser.y"
5153 {
5154 if (conf_parser_ctx.pass == 2)
5155 yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5156 }
5157 break;
5158
5159 case 275:
5160
5161 /* Line 1806 of yacc.c */
5162 #line 1729 "conf_parser.y"
5163 {
5164 if (conf_parser_ctx.pass == 2)
5165 yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5166 }
5167 break;
5168
5169 case 276:
5170
5171 /* Line 1806 of yacc.c */
5172 #line 1733 "conf_parser.y"
5173 {
5174 if (conf_parser_ctx.pass == 2)
5175 yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5176 }
5177 break;
5178
5179 case 277:
5180
5181 /* Line 1806 of yacc.c */
5182 #line 1737 "conf_parser.y"
5183 {
5184 if (conf_parser_ctx.pass == 2)
5185 yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5186 }
5187 break;
5188
5189 case 278:
5190
5191 /* Line 1806 of yacc.c */
5192 #line 1741 "conf_parser.y"
5193 {
5194 if (conf_parser_ctx.pass == 2)
5195 yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5196 }
5197 break;
5198
5199 case 279:
5200
5201 /* Line 1806 of yacc.c */
5202 #line 1745 "conf_parser.y"
5203 {
5204 if (conf_parser_ctx.pass == 2)
5205 yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5206 }
5207 break;
5208
5209 case 280:
5210
5211 /* Line 1806 of yacc.c */
5212 #line 1752 "conf_parser.y"
5213 {
5214 if (conf_parser_ctx.pass == 2)
5215 {
5216 MyFree(yy_conf->name);
5217
5218 if (strlen(yylval.string) < HOSTLEN)
5219 {
5220 DupString(yy_conf->name, yylval.string);
5221 yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5222 }
5223 else
5224 {
5225 ilog(LOG_TYPE_IRCD, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5226 yy_conf->name = NULL;
5227 }
5228 }
5229 }
5230 break;
5231
5232 case 281:
5233
5234 /* Line 1806 of yacc.c */
5235 #line 1771 "conf_parser.y"
5236 {
5237 if (conf_parser_ctx.pass == 2)
5238 {
5239 yy_aconf->flags |= CONF_FLAGS_REDIR;
5240 MyFree(yy_conf->name);
5241 DupString(yy_conf->name, yylval.string);
5242 }
5243 }
5244 break;
5245
5246 case 282:
5247
5248 /* Line 1806 of yacc.c */
5249 #line 1781 "conf_parser.y"
5250 {
5251 if (conf_parser_ctx.pass == 2)
5252 {
5253 yy_aconf->flags |= CONF_FLAGS_REDIR;
5254 yy_aconf->port = (yyvsp[(3) - (4)].number);
5255 }
5256 }
5257 break;
5258
5259 case 283:
5260
5261 /* Line 1806 of yacc.c */
5262 #line 1794 "conf_parser.y"
5263 {
5264 if (conf_parser_ctx.pass == 2)
5265 {
5266 MyFree(resv_reason);
5267 resv_reason = NULL;
5268 }
5269 }
5270 break;
5271
5272 case 284:
5273
5274 /* Line 1806 of yacc.c */
5275 #line 1801 "conf_parser.y"
5276 {
5277 if (conf_parser_ctx.pass == 2)
5278 {
5279 MyFree(resv_reason);
5280 resv_reason = NULL;
5281 }
5282 }
5283 break;
5284
5285 case 291:
5286
5287 /* Line 1806 of yacc.c */
5288 #line 1813 "conf_parser.y"
5289 {
5290 if (conf_parser_ctx.pass == 2)
5291 {
5292 MyFree(resv_reason);
5293 DupString(resv_reason, yylval.string);
5294 }
5295 }
5296 break;
5297
5298 case 292:
5299
5300 /* Line 1806 of yacc.c */
5301 #line 1822 "conf_parser.y"
5302 {
5303 if (conf_parser_ctx.pass == 2)
5304 {
5305 if (IsChanPrefix(*yylval.string))
5306 {
5307 char def_reason[] = "No reason";
5308
5309 create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5310 }
5311 }
5312 /* ignore it for now.. but we really should make a warning if
5313 * its an erroneous name --fl_ */
5314 }
5315 break;
5316
5317 case 293:
5318
5319 /* Line 1806 of yacc.c */
5320 #line 1837 "conf_parser.y"
5321 {
5322 if (conf_parser_ctx.pass == 2)
5323 {
5324 char def_reason[] = "No reason";
5325
5326 create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5327 }
5328 }
5329 break;
5330
5331 case 299:
5332
5333 /* Line 1806 of yacc.c */
5334 #line 1855 "conf_parser.y"
5335 {
5336 if (conf_parser_ctx.pass == 2)
5337 {
5338 if (valid_servname(yylval.string))
5339 {
5340 yy_conf = make_conf_item(SERVICE_TYPE);
5341 DupString(yy_conf->name, yylval.string);
5342 }
5343 }
5344 }
5345 break;
5346
5347 case 300:
5348
5349 /* Line 1806 of yacc.c */
5350 #line 1870 "conf_parser.y"
5351 {
5352 if (conf_parser_ctx.pass == 2)
5353 {
5354 yy_conf = make_conf_item(ULINE_TYPE);
5355 yy_match_item = map_to_conf(yy_conf);
5356 yy_match_item->action = SHARED_ALL;
5357 }
5358 }
5359 break;
5360
5361 case 301:
5362
5363 /* Line 1806 of yacc.c */
5364 #line 1878 "conf_parser.y"
5365 {
5366 if (conf_parser_ctx.pass == 2)
5367 {
5368 yy_conf = NULL;
5369 }
5370 }
5371 break;
5372
5373 case 308:
5374
5375 /* Line 1806 of yacc.c */
5376 #line 1889 "conf_parser.y"
5377 {
5378 if (conf_parser_ctx.pass == 2)
5379 {
5380 MyFree(yy_conf->name);
5381 DupString(yy_conf->name, yylval.string);
5382 }
5383 }
5384 break;
5385
5386 case 309:
5387
5388 /* Line 1806 of yacc.c */
5389 #line 1898 "conf_parser.y"
5390 {
5391 if (conf_parser_ctx.pass == 2)
5392 {
5393 struct split_nuh_item nuh;
5394
5395 nuh.nuhmask = yylval.string;
5396 nuh.nickptr = NULL;
5397 nuh.userptr = userbuf;
5398 nuh.hostptr = hostbuf;
5399
5400 nuh.nicksize = 0;
5401 nuh.usersize = sizeof(userbuf);
5402 nuh.hostsize = sizeof(hostbuf);
5403
5404 split_nuh(&nuh);
5405
5406 DupString(yy_match_item->user, userbuf);
5407 DupString(yy_match_item->host, hostbuf);
5408 }
5409 }
5410 break;
5411
5412 case 310:
5413
5414 /* Line 1806 of yacc.c */
5415 #line 1920 "conf_parser.y"
5416 {
5417 if (conf_parser_ctx.pass == 2)
5418 yy_match_item->action = 0;
5419 }
5420 break;
5421
5422 case 314:
5423
5424 /* Line 1806 of yacc.c */
5425 #line 1927 "conf_parser.y"
5426 {
5427 if (conf_parser_ctx.pass == 2)
5428 yy_match_item->action |= SHARED_KLINE;
5429 }
5430 break;
5431
5432 case 315:
5433
5434 /* Line 1806 of yacc.c */
5435 #line 1931 "conf_parser.y"
5436 {
5437 if (conf_parser_ctx.pass == 2)
5438 yy_match_item->action |= SHARED_UNKLINE;
5439 }
5440 break;
5441
5442 case 316:
5443
5444 /* Line 1806 of yacc.c */
5445 #line 1935 "conf_parser.y"
5446 {
5447 if (conf_parser_ctx.pass == 2)
5448 yy_match_item->action |= SHARED_DLINE;
5449 }
5450 break;
5451
5452 case 317:
5453
5454 /* Line 1806 of yacc.c */
5455 #line 1939 "conf_parser.y"
5456 {
5457 if (conf_parser_ctx.pass == 2)
5458 yy_match_item->action |= SHARED_UNDLINE;
5459 }
5460 break;
5461
5462 case 318:
5463
5464 /* Line 1806 of yacc.c */
5465 #line 1943 "conf_parser.y"
5466 {
5467 if (conf_parser_ctx.pass == 2)
5468 yy_match_item->action |= SHARED_XLINE;
5469 }
5470 break;
5471
5472 case 319:
5473
5474 /* Line 1806 of yacc.c */
5475 #line 1947 "conf_parser.y"
5476 {
5477 if (conf_parser_ctx.pass == 2)
5478 yy_match_item->action |= SHARED_UNXLINE;
5479 }
5480 break;
5481
5482 case 320:
5483
5484 /* Line 1806 of yacc.c */
5485 #line 1951 "conf_parser.y"
5486 {
5487 if (conf_parser_ctx.pass == 2)
5488 yy_match_item->action |= SHARED_RESV;
5489 }
5490 break;
5491
5492 case 321:
5493
5494 /* Line 1806 of yacc.c */
5495 #line 1955 "conf_parser.y"
5496 {
5497 if (conf_parser_ctx.pass == 2)
5498 yy_match_item->action |= SHARED_UNRESV;
5499 }
5500 break;
5501
5502 case 322:
5503
5504 /* Line 1806 of yacc.c */
5505 #line 1959 "conf_parser.y"
5506 {
5507 if (conf_parser_ctx.pass == 2)
5508 yy_match_item->action |= SHARED_LOCOPS;
5509 }
5510 break;
5511
5512 case 323:
5513
5514 /* Line 1806 of yacc.c */
5515 #line 1963 "conf_parser.y"
5516 {
5517 if (conf_parser_ctx.pass == 2)
5518 yy_match_item->action = SHARED_ALL;
5519 }
5520 break;
5521
5522 case 324:
5523
5524 /* Line 1806 of yacc.c */
5525 #line 1972 "conf_parser.y"
5526 {
5527 if (conf_parser_ctx.pass == 2)
5528 {
5529 yy_conf = make_conf_item(CLUSTER_TYPE);
5530 yy_conf->flags = SHARED_ALL;
5531 }
5532 }
5533 break;
5534
5535 case 325:
5536
5537 /* Line 1806 of yacc.c */
5538 #line 1979 "conf_parser.y"
5539 {
5540 if (conf_parser_ctx.pass == 2)
5541 {
5542 if (yy_conf->name == NULL)
5543 DupString(yy_conf->name, "*");
5544 yy_conf = NULL;
5545 }
5546 }
5547 break;
5548
5549 case 331:
5550
5551 /* Line 1806 of yacc.c */
5552 #line 1992 "conf_parser.y"
5553 {
5554 if (conf_parser_ctx.pass == 2)
5555 DupString(yy_conf->name, yylval.string);
5556 }
5557 break;
5558
5559 case 332:
5560
5561 /* Line 1806 of yacc.c */
5562 #line 1998 "conf_parser.y"
5563 {
5564 if (conf_parser_ctx.pass == 2)
5565 yy_conf->flags = 0;
5566 }
5567 break;
5568
5569 case 336:
5570
5571 /* Line 1806 of yacc.c */
5572 #line 2005 "conf_parser.y"
5573 {
5574 if (conf_parser_ctx.pass == 2)
5575 yy_conf->flags |= SHARED_KLINE;
5576 }
5577 break;
5578
5579 case 337:
5580
5581 /* Line 1806 of yacc.c */
5582 #line 2009 "conf_parser.y"
5583 {
5584 if (conf_parser_ctx.pass == 2)
5585 yy_conf->flags |= SHARED_UNKLINE;
5586 }
5587 break;
5588
5589 case 338:
5590
5591 /* Line 1806 of yacc.c */
5592 #line 2013 "conf_parser.y"
5593 {
5594 if (conf_parser_ctx.pass == 2)
5595 yy_conf->flags |= SHARED_DLINE;
5596 }
5597 break;
5598
5599 case 339:
5600
5601 /* Line 1806 of yacc.c */
5602 #line 2017 "conf_parser.y"
5603 {
5604 if (conf_parser_ctx.pass == 2)
5605 yy_conf->flags |= SHARED_UNDLINE;
5606 }
5607 break;
5608
5609 case 340:
5610
5611 /* Line 1806 of yacc.c */
5612 #line 2021 "conf_parser.y"
5613 {
5614 if (conf_parser_ctx.pass == 2)
5615 yy_conf->flags |= SHARED_XLINE;
5616 }
5617 break;
5618
5619 case 341:
5620
5621 /* Line 1806 of yacc.c */
5622 #line 2025 "conf_parser.y"
5623 {
5624 if (conf_parser_ctx.pass == 2)
5625 yy_conf->flags |= SHARED_UNXLINE;
5626 }
5627 break;
5628
5629 case 342:
5630
5631 /* Line 1806 of yacc.c */
5632 #line 2029 "conf_parser.y"
5633 {
5634 if (conf_parser_ctx.pass == 2)
5635 yy_conf->flags |= SHARED_RESV;
5636 }
5637 break;
5638
5639 case 343:
5640
5641 /* Line 1806 of yacc.c */
5642 #line 2033 "conf_parser.y"
5643 {
5644 if (conf_parser_ctx.pass == 2)
5645 yy_conf->flags |= SHARED_UNRESV;
5646 }
5647 break;
5648
5649 case 344:
5650
5651 /* Line 1806 of yacc.c */
5652 #line 2037 "conf_parser.y"
5653 {
5654 if (conf_parser_ctx.pass == 2)
5655 yy_conf->flags |= SHARED_LOCOPS;
5656 }
5657 break;
5658
5659 case 345:
5660
5661 /* Line 1806 of yacc.c */
5662 #line 2041 "conf_parser.y"
5663 {
5664 if (conf_parser_ctx.pass == 2)
5665 yy_conf->flags = SHARED_ALL;
5666 }
5667 break;
5668
5669 case 346:
5670
5671 /* Line 1806 of yacc.c */
5672 #line 2050 "conf_parser.y"
5673 {
5674 if (conf_parser_ctx.pass == 2)
5675 {
5676 yy_conf = make_conf_item(SERVER_TYPE);
5677 yy_aconf = map_to_conf(yy_conf);
5678
5679 /* defaults */
5680 yy_aconf->port = PORTNUM;
5681 }
5682 else
5683 {
5684 MyFree(class_name);
5685 class_name = NULL;
5686 }
5687 }
5688 break;
5689
5690 case 347:
5691
5692 /* Line 1806 of yacc.c */
5693 #line 2065 "conf_parser.y"
5694 {
5695 if (conf_parser_ctx.pass == 2)
5696 {
5697 struct CollectItem *yy_hconf=NULL;
5698 struct CollectItem *yy_lconf=NULL;
5699 dlink_node *ptr = NULL, *next_ptr = NULL;
5700
5701 if (yy_aconf->host &&
5702 yy_aconf->passwd && yy_aconf->spasswd)
5703 {
5704 if (conf_add_server(yy_conf, class_name) == -1)
5705 {
5706 delete_conf_item(yy_conf);
5707 yy_conf = NULL;
5708 yy_aconf = NULL;
5709 }
5710 }
5711 else
5712 {
5713 /* Even if yy_conf ->name is NULL
5714 * should still unhook any hub/leaf confs still pending
5715 */
5716 unhook_hub_leaf_confs();
5717
5718 if (yy_conf->name != NULL)
5719 {
5720 if (yy_aconf->host == NULL)
5721 yyerror("Ignoring connect block -- missing host");
5722 else if (!yy_aconf->passwd || !yy_aconf->spasswd)
5723 yyerror("Ignoring connect block -- missing password");
5724 }
5725
5726
5727 /* XXX
5728 * This fixes a try_connections() core (caused by invalid class_ptr
5729 * pointers) reported by metalrock. That's an ugly fix, but there
5730 * is currently no better way. The entire config subsystem needs an
5731 * rewrite ASAP. make_conf_item() shouldn't really add things onto
5732 * a doubly linked list immediately without any sanity checks! -Michael
5733 */
5734 delete_conf_item(yy_conf);
5735
5736 yy_aconf = NULL;
5737 yy_conf = NULL;
5738 }
5739
5740 /*
5741 * yy_conf is still pointing at the server that is having
5742 * a connect block built for it. This means, y_aconf->name
5743 * points to the actual irc name this server will be known as.
5744 * Now this new server has a set or even just one hub_mask (or leaf_mask)
5745 * given in the link list at yy_hconf. Fill in the HUB confs
5746 * from this link list now.
5747 */
5748 DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
5749 {
5750 struct ConfItem *new_hub_conf;
5751 struct MatchItem *match_item;
5752
5753 yy_hconf = ptr->data;
5754
5755 /* yy_conf == NULL is a fatal error for this connect block! */
5756 if ((yy_conf != NULL) && (yy_conf->name != NULL))
5757 {
5758 new_hub_conf = make_conf_item(HUB_TYPE);
5759 match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
5760 DupString(new_hub_conf->name, yy_conf->name);
5761 if (yy_hconf->user != NULL)
5762 DupString(match_item->user, yy_hconf->user);
5763 else
5764 DupString(match_item->user, "*");
5765 if (yy_hconf->host != NULL)
5766 DupString(match_item->host, yy_hconf->host);
5767 else
5768 DupString(match_item->host, "*");
5769 }
5770 dlinkDelete(&yy_hconf->node, &hub_conf_list);
5771 free_collect_item(yy_hconf);
5772 }
5773
5774 /* Ditto for the LEAF confs */
5775
5776 DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
5777 {
5778 struct ConfItem *new_leaf_conf;
5779 struct MatchItem *match_item;
5780
5781 yy_lconf = ptr->data;
5782
5783 if ((yy_conf != NULL) && (yy_conf->name != NULL))
5784 {
5785 new_leaf_conf = make_conf_item(LEAF_TYPE);
5786 match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
5787 DupString(new_leaf_conf->name, yy_conf->name);
5788 if (yy_lconf->user != NULL)
5789 DupString(match_item->user, yy_lconf->user);
5790 else
5791 DupString(match_item->user, "*");
5792 if (yy_lconf->host != NULL)
5793 DupString(match_item->host, yy_lconf->host);
5794 else
5795 DupString(match_item->host, "*");
5796 }
5797 dlinkDelete(&yy_lconf->node, &leaf_conf_list);
5798 free_collect_item(yy_lconf);
5799 }
5800 MyFree(class_name);
5801 class_name = NULL;
5802 yy_conf = NULL;
5803 yy_aconf = NULL;
5804 }
5805 }
5806 break;
5807
5808 case 364:
5809
5810 /* Line 1806 of yacc.c */
5811 #line 2187 "conf_parser.y"
5812 {
5813 if (conf_parser_ctx.pass == 2)
5814 {
5815 if (yy_conf->name != NULL)
5816 yyerror("Multiple connect name entry");
5817
5818 MyFree(yy_conf->name);
5819 DupString(yy_conf->name, yylval.string);
5820 }
5821 }
5822 break;
5823
5824 case 365:
5825
5826 /* Line 1806 of yacc.c */
5827 #line 2199 "conf_parser.y"
5828 {
5829 if (conf_parser_ctx.pass == 2)
5830 {
5831 MyFree(yy_aconf->host);
5832 DupString(yy_aconf->host, yylval.string);
5833 }
5834 }
5835 break;
5836
5837 case 366:
5838
5839 /* Line 1806 of yacc.c */
5840 #line 2208 "conf_parser.y"
5841 {
5842 if (conf_parser_ctx.pass == 2)
5843 {
5844 struct addrinfo hints, *res;
5845
5846 memset(&hints, 0, sizeof(hints));
5847
5848 hints.ai_family = AF_UNSPEC;
5849 hints.ai_socktype = SOCK_STREAM;
5850 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5851
5852 if (getaddrinfo(yylval.string, NULL, &hints, &res))
5853 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
5854 else
5855 {
5856 assert(res != NULL);
5857
5858 memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
5859 yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
5860 yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
5861 freeaddrinfo(res);
5862 }
5863 }
5864 }
5865 break;
5866
5867 case 367:
5868
5869 /* Line 1806 of yacc.c */
5870 #line 2234 "conf_parser.y"
5871 {
5872 if (conf_parser_ctx.pass == 2)
5873 {
5874 if ((yyvsp[(3) - (4)].string)[0] == ':')
5875 yyerror("Server passwords cannot begin with a colon");
5876 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5877 yyerror("Server passwords cannot contain spaces");
5878 else {
5879 if (yy_aconf->spasswd != NULL)
5880 memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
5881
5882 MyFree(yy_aconf->spasswd);
5883 DupString(yy_aconf->spasswd, yylval.string);
5884 }
5885 }
5886 }
5887 break;
5888
5889 case 368:
5890
5891 /* Line 1806 of yacc.c */
5892 #line 2252 "conf_parser.y"
5893 {
5894 if (conf_parser_ctx.pass == 2)
5895 {
5896 if ((yyvsp[(3) - (4)].string)[0] == ':')
5897 yyerror("Server passwords cannot begin with a colon");
5898 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5899 yyerror("Server passwords cannot contain spaces");
5900 else {
5901 if (yy_aconf->passwd != NULL)
5902 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5903
5904 MyFree(yy_aconf->passwd);
5905 DupString(yy_aconf->passwd, yylval.string);
5906 }
5907 }
5908 }
5909 break;
5910
5911 case 369:
5912
5913 /* Line 1806 of yacc.c */
5914 #line 2270 "conf_parser.y"
5915 {
5916 if (conf_parser_ctx.pass == 2)
5917 yy_aconf->port = (yyvsp[(3) - (4)].number);
5918 }
5919 break;
5920
5921 case 370:
5922
5923 /* Line 1806 of yacc.c */
5924 #line 2276 "conf_parser.y"
5925 {
5926 if (conf_parser_ctx.pass == 2)
5927 yy_aconf->aftype = AF_INET;
5928 }
5929 break;
5930
5931 case 371:
5932
5933 /* Line 1806 of yacc.c */
5934 #line 2280 "conf_parser.y"
5935 {
5936 #ifdef IPV6
5937 if (conf_parser_ctx.pass == 2)
5938 yy_aconf->aftype = AF_INET6;
5939 #endif
5940 }
5941 break;
5942
5943 case 372:
5944
5945 /* Line 1806 of yacc.c */
5946 #line 2288 "conf_parser.y"
5947 {
5948 }
5949 break;
5950
5951 case 376:
5952
5953 /* Line 1806 of yacc.c */
5954 #line 2293 "conf_parser.y"
5955 {
5956 if (conf_parser_ctx.pass == 2)
5957 SetConfAllowAutoConn(yy_aconf);
5958 }
5959 break;
5960
5961 case 377:
5962
5963 /* Line 1806 of yacc.c */
5964 #line 2297 "conf_parser.y"
5965 {
5966 if (conf_parser_ctx.pass == 2)
5967 SetConfAwayBurst(yy_aconf);
5968 }
5969 break;
5970
5971 case 378:
5972
5973 /* Line 1806 of yacc.c */
5974 #line 2301 "conf_parser.y"
5975 {
5976 if (conf_parser_ctx.pass == 2)
5977 SetConfTopicBurst(yy_aconf);
5978 }
5979 break;
5980
5981 case 379:
5982
5983 /* Line 1806 of yacc.c */
5984 #line 2305 "conf_parser.y"
5985 {
5986 if (conf_parser_ctx.pass == 2)
5987 SetConfSSL(yy_aconf);
5988 }
5989 break;
5990
5991 case 380:
5992
5993 /* Line 1806 of yacc.c */
5994 #line 2311 "conf_parser.y"
5995 {
5996 if (conf_parser_ctx.pass == 2)
5997 {
5998 if (yylval.number)
5999 yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6000 else
6001 yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6002 }
6003 }
6004 break;
6005
6006 case 381:
6007
6008 /* Line 1806 of yacc.c */
6009 #line 2322 "conf_parser.y"
6010 {
6011 if (conf_parser_ctx.pass == 2)
6012 {
6013 struct CollectItem *yy_tmp;
6014
6015 yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6016 DupString(yy_tmp->host, yylval.string);
6017 DupString(yy_tmp->user, "*");
6018 dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6019 }
6020 }
6021 break;
6022
6023 case 382:
6024
6025 /* Line 1806 of yacc.c */
6026 #line 2335 "conf_parser.y"
6027 {
6028 if (conf_parser_ctx.pass == 2)
6029 {
6030 struct CollectItem *yy_tmp;
6031
6032 yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6033 DupString(yy_tmp->host, yylval.string);
6034 DupString(yy_tmp->user, "*");
6035 dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6036 }
6037 }
6038 break;
6039
6040 case 383:
6041
6042 /* Line 1806 of yacc.c */
6043 #line 2348 "conf_parser.y"
6044 {
6045 if (conf_parser_ctx.pass == 2)
6046 {
6047 MyFree(class_name);
6048 DupString(class_name, yylval.string);
6049 }
6050 }
6051 break;
6052
6053 case 384:
6054
6055 /* Line 1806 of yacc.c */
6056 #line 2357 "conf_parser.y"
6057 {
6058 #ifdef HAVE_LIBCRYPTO
6059 if (conf_parser_ctx.pass == 2)
6060 {
6061 MyFree(yy_aconf->cipher_list);
6062 DupString(yy_aconf->cipher_list, yylval.string);
6063 }
6064 #else
6065 if (conf_parser_ctx.pass == 2)
6066 yyerror("Ignoring connect::ciphers -- no OpenSSL support");
6067 #endif
6068 }
6069 break;
6070
6071 case 385:
6072
6073 /* Line 1806 of yacc.c */
6074 #line 2375 "conf_parser.y"
6075 {
6076 if (conf_parser_ctx.pass == 2)
6077 {
6078 userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6079 regex_ban = 0;
6080 }
6081 }
6082 break;
6083
6084 case 386:
6085
6086 /* Line 1806 of yacc.c */
6087 #line 2382 "conf_parser.y"
6088 {
6089 if (conf_parser_ctx.pass == 2)
6090 {
6091 if (userbuf[0] && hostbuf[0])
6092 {
6093 if (regex_ban)
6094 {
6095 #ifdef HAVE_LIBPCRE
6096 void *exp_user = NULL;
6097 void *exp_host = NULL;
6098 const char *errptr = NULL;
6099
6100 if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6101 !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6102 {
6103 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
6104 errptr);
6105 break;
6106 }
6107
6108 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6109 yy_aconf->regexuser = exp_user;
6110 yy_aconf->regexhost = exp_host;
6111
6112 DupString(yy_aconf->user, userbuf);
6113 DupString(yy_aconf->host, hostbuf);
6114
6115 if (reasonbuf[0])
6116 DupString(yy_aconf->reason, reasonbuf);
6117 else
6118 DupString(yy_aconf->reason, "No reason");
6119 #else
6120 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
6121 break;
6122 #endif
6123 }
6124 else
6125 {
6126 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6127
6128 DupString(yy_aconf->user, userbuf);
6129 DupString(yy_aconf->host, hostbuf);
6130
6131 if (reasonbuf[0])
6132 DupString(yy_aconf->reason, reasonbuf);
6133 else
6134 DupString(yy_aconf->reason, "No reason");
6135 add_conf_by_address(CONF_KILL, yy_aconf);
6136 }
6137 }
6138
6139 yy_aconf = NULL;
6140 }
6141 }
6142 break;
6143
6144 case 387:
6145
6146 /* Line 1806 of yacc.c */
6147 #line 2438 "conf_parser.y"
6148 {
6149 }
6150 break;
6151
6152 case 391:
6153
6154 /* Line 1806 of yacc.c */
6155 #line 2443 "conf_parser.y"
6156 {
6157 if (conf_parser_ctx.pass == 2)
6158 regex_ban = 1;
6159 }
6160 break;
6161
6162 case 398:
6163
6164 /* Line 1806 of yacc.c */
6165 #line 2452 "conf_parser.y"
6166 {
6167 if (conf_parser_ctx.pass == 2)
6168 {
6169 struct split_nuh_item nuh;
6170
6171 nuh.nuhmask = yylval.string;
6172 nuh.nickptr = NULL;
6173 nuh.userptr = userbuf;
6174 nuh.hostptr = hostbuf;
6175
6176 nuh.nicksize = 0;
6177 nuh.usersize = sizeof(userbuf);
6178 nuh.hostsize = sizeof(hostbuf);
6179
6180 split_nuh(&nuh);
6181 }
6182 }
6183 break;
6184
6185 case 399:
6186
6187 /* Line 1806 of yacc.c */
6188 #line 2471 "conf_parser.y"
6189 {
6190 if (conf_parser_ctx.pass == 2)
6191 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6192 }
6193 break;
6194
6195 case 400:
6196
6197 /* Line 1806 of yacc.c */
6198 #line 2480 "conf_parser.y"
6199 {
6200 if (conf_parser_ctx.pass == 2)
6201 hostbuf[0] = reasonbuf[0] = '\0';
6202 }
6203 break;
6204
6205 case 401:
6206
6207 /* Line 1806 of yacc.c */
6208 #line 2484 "conf_parser.y"
6209 {
6210 if (conf_parser_ctx.pass == 2)
6211 {
6212 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
6213 {
6214 yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
6215 DupString(yy_aconf->host, hostbuf);
6216
6217 if (reasonbuf[0])
6218 DupString(yy_aconf->reason, reasonbuf);
6219 else
6220 DupString(yy_aconf->reason, "No reason");
6221 add_conf_by_address(CONF_DLINE, yy_aconf);
6222 yy_aconf = NULL;
6223 }
6224 }
6225 }
6226 break;
6227
6228 case 407:
6229
6230 /* Line 1806 of yacc.c */
6231 #line 2506 "conf_parser.y"
6232 {
6233 if (conf_parser_ctx.pass == 2)
6234 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
6235 }
6236 break;
6237
6238 case 408:
6239
6240 /* Line 1806 of yacc.c */
6241 #line 2512 "conf_parser.y"
6242 {
6243 if (conf_parser_ctx.pass == 2)
6244 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6245 }
6246 break;
6247
6248 case 414:
6249
6250 /* Line 1806 of yacc.c */
6251 #line 2526 "conf_parser.y"
6252 {
6253 if (conf_parser_ctx.pass == 2)
6254 {
6255 if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
6256 {
6257 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
6258 DupString(yy_aconf->host, yylval.string);
6259
6260 add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
6261 yy_aconf = NULL;
6262 }
6263 }
6264 }
6265 break;
6266
6267 case 415:
6268
6269 /* Line 1806 of yacc.c */
6270 #line 2544 "conf_parser.y"
6271 {
6272 if (conf_parser_ctx.pass == 2)
6273 {
6274 regex_ban = 0;
6275 reasonbuf[0] = gecos_name[0] = '\0';
6276 }
6277 }
6278 break;
6279
6280 case 416:
6281
6282 /* Line 1806 of yacc.c */
6283 #line 2551 "conf_parser.y"
6284 {
6285 if (conf_parser_ctx.pass == 2)
6286 {
6287 if (gecos_name[0])
6288 {
6289 if (regex_ban)
6290 {
6291 #ifdef HAVE_LIBPCRE
6292 void *exp_p = NULL;
6293 const char *errptr = NULL;
6294
6295 if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
6296 {
6297 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
6298 errptr);
6299 break;
6300 }
6301
6302 yy_conf = make_conf_item(RXLINE_TYPE);
6303 yy_conf->regexpname = exp_p;
6304 #else
6305 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
6306 break;
6307 #endif
6308 }
6309 else
6310 yy_conf = make_conf_item(XLINE_TYPE);
6311
6312 yy_match_item = map_to_conf(yy_conf);
6313 DupString(yy_conf->name, gecos_name);
6314
6315 if (reasonbuf[0])
6316 DupString(yy_match_item->reason, reasonbuf);
6317 else
6318 DupString(yy_match_item->reason, "No reason");
6319 }
6320 }
6321 }
6322 break;
6323
6324 case 417:
6325
6326 /* Line 1806 of yacc.c */
6327 #line 2591 "conf_parser.y"
6328 {
6329 }
6330 break;
6331
6332 case 421:
6333
6334 /* Line 1806 of yacc.c */
6335 #line 2596 "conf_parser.y"
6336 {
6337 if (conf_parser_ctx.pass == 2)
6338 regex_ban = 1;
6339 }
6340 break;
6341
6342 case 428:
6343
6344 /* Line 1806 of yacc.c */
6345 #line 2605 "conf_parser.y"
6346 {
6347 if (conf_parser_ctx.pass == 2)
6348 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
6349 }
6350 break;
6351
6352 case 429:
6353
6354 /* Line 1806 of yacc.c */
6355 #line 2611 "conf_parser.y"
6356 {
6357 if (conf_parser_ctx.pass == 2)
6358 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6359 }
6360 break;
6361
6362 case 485:
6363
6364 /* Line 1806 of yacc.c */
6365 #line 2655 "conf_parser.y"
6366 {
6367 ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
6368 }
6369 break;
6370
6371 case 486:
6372
6373 /* Line 1806 of yacc.c */
6374 #line 2660 "conf_parser.y"
6375 {
6376 ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
6377 }
6378 break;
6379
6380 case 487:
6381
6382 /* Line 1806 of yacc.c */
6383 #line 2665 "conf_parser.y"
6384 {
6385 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
6386 }
6387 break;
6388
6389 case 488:
6390
6391 /* Line 1806 of yacc.c */
6392 #line 2670 "conf_parser.y"
6393 {
6394 ConfigFileEntry.use_whois_actually = yylval.number;
6395 }
6396 break;
6397
6398 case 489:
6399
6400 /* Line 1806 of yacc.c */
6401 #line 2675 "conf_parser.y"
6402 {
6403 GlobalSetOptions.rejecttime = yylval.number;
6404 }
6405 break;
6406
6407 case 490:
6408
6409 /* Line 1806 of yacc.c */
6410 #line 2680 "conf_parser.y"
6411 {
6412 ConfigFileEntry.tkline_expire_notices = yylval.number;
6413 }
6414 break;
6415
6416 case 491:
6417
6418 /* Line 1806 of yacc.c */
6419 #line 2685 "conf_parser.y"
6420 {
6421 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
6422 }
6423 break;
6424
6425 case 492:
6426
6427 /* Line 1806 of yacc.c */
6428 #line 2690 "conf_parser.y"
6429 {
6430 ConfigFileEntry.hide_spoof_ips = yylval.number;
6431 }
6432 break;
6433
6434 case 493:
6435
6436 /* Line 1806 of yacc.c */
6437 #line 2695 "conf_parser.y"
6438 {
6439 ConfigFileEntry.ignore_bogus_ts = yylval.number;
6440 }
6441 break;
6442
6443 case 494:
6444
6445 /* Line 1806 of yacc.c */
6446 #line 2700 "conf_parser.y"
6447 {
6448 ConfigFileEntry.disable_remote = yylval.number;
6449 }
6450 break;
6451
6452 case 495:
6453
6454 /* Line 1806 of yacc.c */
6455 #line 2705 "conf_parser.y"
6456 {
6457 ConfigFileEntry.failed_oper_notice = yylval.number;
6458 }
6459 break;
6460
6461 case 496:
6462
6463 /* Line 1806 of yacc.c */
6464 #line 2710 "conf_parser.y"
6465 {
6466 ConfigFileEntry.anti_nick_flood = yylval.number;
6467 }
6468 break;
6469
6470 case 497:
6471
6472 /* Line 1806 of yacc.c */
6473 #line 2715 "conf_parser.y"
6474 {
6475 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
6476 }
6477 break;
6478
6479 case 498:
6480
6481 /* Line 1806 of yacc.c */
6482 #line 2720 "conf_parser.y"
6483 {
6484 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
6485 }
6486 break;
6487
6488 case 499:
6489
6490 /* Line 1806 of yacc.c */
6491 #line 2725 "conf_parser.y"
6492 {
6493 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
6494 }
6495 break;
6496
6497 case 500:
6498
6499 /* Line 1806 of yacc.c */
6500 #line 2730 "conf_parser.y"
6501 {
6502 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
6503 }
6504 break;
6505
6506 case 501:
6507
6508 /* Line 1806 of yacc.c */
6509 #line 2735 "conf_parser.y"
6510 {
6511 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
6512 }
6513 break;
6514
6515 case 502:
6516
6517 /* Line 1806 of yacc.c */
6518 #line 2740 "conf_parser.y"
6519 {
6520 if (conf_parser_ctx.pass == 2)
6521 ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
6522 }
6523 break;
6524
6525 case 503:
6526
6527 /* Line 1806 of yacc.c */
6528 #line 2746 "conf_parser.y"
6529 {
6530 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6531 {
6532 ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
6533 ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
6534 ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
6535 exit(0);
6536 }
6537 }
6538 break;
6539
6540 case 504:
6541
6542 /* Line 1806 of yacc.c */
6543 #line 2757 "conf_parser.y"
6544 {
6545 ConfigFileEntry.kline_with_reason = yylval.number;
6546 }
6547 break;
6548
6549 case 505:
6550
6551 /* Line 1806 of yacc.c */
6552 #line 2762 "conf_parser.y"
6553 {
6554 if (conf_parser_ctx.pass == 2)
6555 {
6556 MyFree(ConfigFileEntry.kline_reason);
6557 DupString(ConfigFileEntry.kline_reason, yylval.string);
6558 }
6559 }
6560 break;
6561
6562 case 506:
6563
6564 /* Line 1806 of yacc.c */
6565 #line 2771 "conf_parser.y"
6566 {
6567 ConfigFileEntry.invisible_on_connect = yylval.number;
6568 }
6569 break;
6570
6571 case 507:
6572
6573 /* Line 1806 of yacc.c */
6574 #line 2776 "conf_parser.y"
6575 {
6576 ConfigFileEntry.warn_no_nline = yylval.number;
6577 }
6578 break;
6579
6580 case 508:
6581
6582 /* Line 1806 of yacc.c */
6583 #line 2781 "conf_parser.y"
6584 {
6585 ConfigFileEntry.stats_e_disabled = yylval.number;
6586 }
6587 break;
6588
6589 case 509:
6590
6591 /* Line 1806 of yacc.c */
6592 #line 2786 "conf_parser.y"
6593 {
6594 ConfigFileEntry.stats_o_oper_only = yylval.number;
6595 }
6596 break;
6597
6598 case 510:
6599
6600 /* Line 1806 of yacc.c */
6601 #line 2791 "conf_parser.y"
6602 {
6603 ConfigFileEntry.stats_P_oper_only = yylval.number;
6604 }
6605 break;
6606
6607 case 511:
6608
6609 /* Line 1806 of yacc.c */
6610 #line 2796 "conf_parser.y"
6611 {
6612 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
6613 }
6614 break;
6615
6616 case 512:
6617
6618 /* Line 1806 of yacc.c */
6619 #line 2799 "conf_parser.y"
6620 {
6621 ConfigFileEntry.stats_k_oper_only = 1;
6622 }
6623 break;
6624
6625 case 513:
6626
6627 /* Line 1806 of yacc.c */
6628 #line 2804 "conf_parser.y"
6629 {
6630 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
6631 }
6632 break;
6633
6634 case 514:
6635
6636 /* Line 1806 of yacc.c */
6637 #line 2807 "conf_parser.y"
6638 {
6639 ConfigFileEntry.stats_i_oper_only = 1;
6640 }
6641 break;
6642
6643 case 515:
6644
6645 /* Line 1806 of yacc.c */
6646 #line 2812 "conf_parser.y"
6647 {
6648 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
6649 }
6650 break;
6651
6652 case 516:
6653
6654 /* Line 1806 of yacc.c */
6655 #line 2817 "conf_parser.y"
6656 {
6657 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
6658 }
6659 break;
6660
6661 case 517:
6662
6663 /* Line 1806 of yacc.c */
6664 #line 2822 "conf_parser.y"
6665 {
6666 ConfigFileEntry.opers_bypass_callerid = yylval.number;
6667 }
6668 break;
6669
6670 case 518:
6671
6672 /* Line 1806 of yacc.c */
6673 #line 2827 "conf_parser.y"
6674 {
6675 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
6676 }
6677 break;
6678
6679 case 519:
6680
6681 /* Line 1806 of yacc.c */
6682 #line 2832 "conf_parser.y"
6683 {
6684 ConfigFileEntry.short_motd = yylval.number;
6685 }
6686 break;
6687
6688 case 520:
6689
6690 /* Line 1806 of yacc.c */
6691 #line 2837 "conf_parser.y"
6692 {
6693 ConfigFileEntry.no_oper_flood = yylval.number;
6694 }
6695 break;
6696
6697 case 521:
6698
6699 /* Line 1806 of yacc.c */
6700 #line 2842 "conf_parser.y"
6701 {
6702 ConfigFileEntry.true_no_oper_flood = yylval.number;
6703 }
6704 break;
6705
6706 case 522:
6707
6708 /* Line 1806 of yacc.c */
6709 #line 2847 "conf_parser.y"
6710 {
6711 ConfigFileEntry.oper_pass_resv = yylval.number;
6712 }
6713 break;
6714
6715 case 523:
6716
6717 /* Line 1806 of yacc.c */
6718 #line 2852 "conf_parser.y"
6719 {
6720 if (conf_parser_ctx.pass == 2)
6721 {
6722 if (strlen(yylval.string) > LOCALE_LENGTH-2)
6723 yylval.string[LOCALE_LENGTH-1] = '\0';
6724
6725 set_locale(yylval.string);
6726 }
6727 }
6728 break;
6729
6730 case 524:
6731
6732 /* Line 1806 of yacc.c */
6733 #line 2863 "conf_parser.y"
6734 {
6735 ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
6736 }
6737 break;
6738
6739 case 525:
6740
6741 /* Line 1806 of yacc.c */
6742 #line 2868 "conf_parser.y"
6743 {
6744 ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
6745 }
6746 break;
6747
6748 case 526:
6749
6750 /* Line 1806 of yacc.c */
6751 #line 2873 "conf_parser.y"
6752 {
6753 ConfigFileEntry.use_egd = yylval.number;
6754 }
6755 break;
6756
6757 case 527:
6758
6759 /* Line 1806 of yacc.c */
6760 #line 2878 "conf_parser.y"
6761 {
6762 if (conf_parser_ctx.pass == 2)
6763 {
6764 MyFree(ConfigFileEntry.egdpool_path);
6765 DupString(ConfigFileEntry.egdpool_path, yylval.string);
6766 }
6767 }
6768 break;
6769
6770 case 528:
6771
6772 /* Line 1806 of yacc.c */
6773 #line 2887 "conf_parser.y"
6774 {
6775 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6776 {
6777 MyFree(ConfigFileEntry.service_name);
6778 DupString(ConfigFileEntry.service_name, yylval.string);
6779 }
6780 }
6781 break;
6782
6783 case 529:
6784
6785 /* Line 1806 of yacc.c */
6786 #line 2896 "conf_parser.y"
6787 {
6788 ConfigFileEntry.ping_cookie = yylval.number;
6789 }
6790 break;
6791
6792 case 530:
6793
6794 /* Line 1806 of yacc.c */
6795 #line 2901 "conf_parser.y"
6796 {
6797 ConfigFileEntry.disable_auth = yylval.number;
6798 }
6799 break;
6800
6801 case 531:
6802
6803 /* Line 1806 of yacc.c */
6804 #line 2906 "conf_parser.y"
6805 {
6806 ConfigFileEntry.throttle_time = yylval.number;
6807 }
6808 break;
6809
6810 case 532:
6811
6812 /* Line 1806 of yacc.c */
6813 #line 2911 "conf_parser.y"
6814 {
6815 ConfigFileEntry.oper_umodes = 0;
6816 }
6817 break;
6818
6819 case 536:
6820
6821 /* Line 1806 of yacc.c */
6822 #line 2917 "conf_parser.y"
6823 {
6824 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6825 }
6826 break;
6827
6828 case 537:
6829
6830 /* Line 1806 of yacc.c */
6831 #line 2920 "conf_parser.y"
6832 {
6833 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6834 }
6835 break;
6836
6837 case 538:
6838
6839 /* Line 1806 of yacc.c */
6840 #line 2923 "conf_parser.y"
6841 {
6842 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6843 }
6844 break;
6845
6846 case 539:
6847
6848 /* Line 1806 of yacc.c */
6849 #line 2926 "conf_parser.y"
6850 {
6851 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6852 }
6853 break;
6854
6855 case 540:
6856
6857 /* Line 1806 of yacc.c */
6858 #line 2929 "conf_parser.y"
6859 {
6860 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6861 }
6862 break;
6863
6864 case 541:
6865
6866 /* Line 1806 of yacc.c */
6867 #line 2932 "conf_parser.y"
6868 {
6869 ConfigFileEntry.oper_umodes |= UMODE_FULL;
6870 }
6871 break;
6872
6873 case 542:
6874
6875 /* Line 1806 of yacc.c */
6876 #line 2935 "conf_parser.y"
6877 {
6878 ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6879 }
6880 break;
6881
6882 case 543:
6883
6884 /* Line 1806 of yacc.c */
6885 #line 2938 "conf_parser.y"
6886 {
6887 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6888 }
6889 break;
6890
6891 case 544:
6892
6893 /* Line 1806 of yacc.c */
6894 #line 2941 "conf_parser.y"
6895 {
6896 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6897 }
6898 break;
6899
6900 case 545:
6901
6902 /* Line 1806 of yacc.c */
6903 #line 2944 "conf_parser.y"
6904 {
6905 ConfigFileEntry.oper_umodes |= UMODE_REJ;
6906 }
6907 break;
6908
6909 case 546:
6910
6911 /* Line 1806 of yacc.c */
6912 #line 2947 "conf_parser.y"
6913 {
6914 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6915 }
6916 break;
6917
6918 case 547:
6919
6920 /* Line 1806 of yacc.c */
6921 #line 2950 "conf_parser.y"
6922 {
6923 ConfigFileEntry.oper_umodes |= UMODE_SPY;
6924 }
6925 break;
6926
6927 case 548:
6928
6929 /* Line 1806 of yacc.c */
6930 #line 2953 "conf_parser.y"
6931 {
6932 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6933 }
6934 break;
6935
6936 case 549:
6937
6938 /* Line 1806 of yacc.c */
6939 #line 2956 "conf_parser.y"
6940 {
6941 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6942 }
6943 break;
6944
6945 case 550:
6946
6947 /* Line 1806 of yacc.c */
6948 #line 2959 "conf_parser.y"
6949 {
6950 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6951 }
6952 break;
6953
6954 case 551:
6955
6956 /* Line 1806 of yacc.c */
6957 #line 2962 "conf_parser.y"
6958 {
6959 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6960 }
6961 break;
6962
6963 case 552:
6964
6965 /* Line 1806 of yacc.c */
6966 #line 2965 "conf_parser.y"
6967 {
6968 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6969 }
6970 break;
6971
6972 case 553:
6973
6974 /* Line 1806 of yacc.c */
6975 #line 2968 "conf_parser.y"
6976 {
6977 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6978 }
6979 break;
6980
6981 case 554:
6982
6983 /* Line 1806 of yacc.c */
6984 #line 2971 "conf_parser.y"
6985 {
6986 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6987 }
6988 break;
6989
6990 case 555:
6991
6992 /* Line 1806 of yacc.c */
6993 #line 2974 "conf_parser.y"
6994 {
6995 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6996 }
6997 break;
6998
6999 case 556:
7000
7001 /* Line 1806 of yacc.c */
7002 #line 2979 "conf_parser.y"
7003 {
7004 ConfigFileEntry.oper_only_umodes = 0;
7005 }
7006 break;
7007
7008 case 560:
7009
7010 /* Line 1806 of yacc.c */
7011 #line 2985 "conf_parser.y"
7012 {
7013 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7014 }
7015 break;
7016
7017 case 561:
7018
7019 /* Line 1806 of yacc.c */
7020 #line 2988 "conf_parser.y"
7021 {
7022 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7023 }
7024 break;
7025
7026 case 562:
7027
7028 /* Line 1806 of yacc.c */
7029 #line 2991 "conf_parser.y"
7030 {
7031 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7032 }
7033 break;
7034
7035 case 563:
7036
7037 /* Line 1806 of yacc.c */
7038 #line 2994 "conf_parser.y"
7039 {
7040 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7041 }
7042 break;
7043
7044 case 564:
7045
7046 /* Line 1806 of yacc.c */
7047 #line 2997 "conf_parser.y"
7048 {
7049 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7050 }
7051 break;
7052
7053 case 565:
7054
7055 /* Line 1806 of yacc.c */
7056 #line 3000 "conf_parser.y"
7057 {
7058 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7059 }
7060 break;
7061
7062 case 566:
7063
7064 /* Line 1806 of yacc.c */
7065 #line 3003 "conf_parser.y"
7066 {
7067 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7068 }
7069 break;
7070
7071 case 567:
7072
7073 /* Line 1806 of yacc.c */
7074 #line 3006 "conf_parser.y"
7075 {
7076 ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
7077 }
7078 break;
7079
7080 case 568:
7081
7082 /* Line 1806 of yacc.c */
7083 #line 3009 "conf_parser.y"
7084 {
7085 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
7086 }
7087 break;
7088
7089 case 569:
7090
7091 /* Line 1806 of yacc.c */
7092 #line 3012 "conf_parser.y"
7093 {
7094 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
7095 }
7096 break;
7097
7098 case 570:
7099
7100 /* Line 1806 of yacc.c */
7101 #line 3015 "conf_parser.y"
7102 {
7103 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
7104 }
7105 break;
7106
7107 case 571:
7108
7109 /* Line 1806 of yacc.c */
7110 #line 3018 "conf_parser.y"
7111 {
7112 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
7113 }
7114 break;
7115
7116 case 572:
7117
7118 /* Line 1806 of yacc.c */
7119 #line 3021 "conf_parser.y"
7120 {
7121 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
7122 }
7123 break;
7124
7125 case 573:
7126
7127 /* Line 1806 of yacc.c */
7128 #line 3024 "conf_parser.y"
7129 {
7130 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
7131 }
7132 break;
7133
7134 case 574:
7135
7136 /* Line 1806 of yacc.c */
7137 #line 3027 "conf_parser.y"
7138 {
7139 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
7140 }
7141 break;
7142
7143 case 575:
7144
7145 /* Line 1806 of yacc.c */
7146 #line 3030 "conf_parser.y"
7147 {
7148 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
7149 }
7150 break;
7151
7152 case 576:
7153
7154 /* Line 1806 of yacc.c */
7155 #line 3033 "conf_parser.y"
7156 {
7157 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
7158 }
7159 break;
7160
7161 case 577:
7162
7163 /* Line 1806 of yacc.c */
7164 #line 3036 "conf_parser.y"
7165 {
7166 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
7167 }
7168 break;
7169
7170 case 578:
7171
7172 /* Line 1806 of yacc.c */
7173 #line 3039 "conf_parser.y"
7174 {
7175 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
7176 }
7177 break;
7178
7179 case 579:
7180
7181 /* Line 1806 of yacc.c */
7182 #line 3042 "conf_parser.y"
7183 {
7184 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
7185 }
7186 break;
7187
7188 case 580:
7189
7190 /* Line 1806 of yacc.c */
7191 #line 3047 "conf_parser.y"
7192 {
7193 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
7194 }
7195 break;
7196
7197 case 581:
7198
7199 /* Line 1806 of yacc.c */
7200 #line 3052 "conf_parser.y"
7201 {
7202 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
7203 }
7204 break;
7205
7206 case 582:
7207
7208 /* Line 1806 of yacc.c */
7209 #line 3057 "conf_parser.y"
7210 {
7211 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
7212 }
7213 break;
7214
7215 case 583:
7216
7217 /* Line 1806 of yacc.c */
7218 #line 3062 "conf_parser.y"
7219 {
7220 ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
7221 }
7222 break;
7223
7224 case 584:
7225
7226 /* Line 1806 of yacc.c */
7227 #line 3071 "conf_parser.y"
7228 {
7229 if (conf_parser_ctx.pass == 2)
7230 {
7231 yy_conf = make_conf_item(GDENY_TYPE);
7232 yy_aconf = map_to_conf(yy_conf);
7233 }
7234 }
7235 break;
7236
7237 case 585:
7238
7239 /* Line 1806 of yacc.c */
7240 #line 3078 "conf_parser.y"
7241 {
7242 if (conf_parser_ctx.pass == 2)
7243 {
7244 /*
7245 * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
7246 * end we will have one extra, so we should free it.
7247 */
7248 if (yy_conf->name == NULL || yy_aconf->user == NULL)
7249 {
7250 delete_conf_item(yy_conf);
7251 yy_conf = NULL;
7252 yy_aconf = NULL;
7253 }
7254 }
7255 }
7256 break;
7257
7258 case 595:
7259
7260 /* Line 1806 of yacc.c */
7261 #line 3104 "conf_parser.y"
7262 {
7263 if (conf_parser_ctx.pass == 2)
7264 ConfigFileEntry.glines = yylval.number;
7265 }
7266 break;
7267
7268 case 596:
7269
7270 /* Line 1806 of yacc.c */
7271 #line 3110 "conf_parser.y"
7272 {
7273 if (conf_parser_ctx.pass == 2)
7274 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
7275 }
7276 break;
7277
7278 case 597:
7279
7280 /* Line 1806 of yacc.c */
7281 #line 3116 "conf_parser.y"
7282 {
7283 if (conf_parser_ctx.pass == 2)
7284 ConfigFileEntry.gline_logging = 0;
7285 }
7286 break;
7287
7288 case 601:
7289
7290 /* Line 1806 of yacc.c */
7291 #line 3122 "conf_parser.y"
7292 {
7293 if (conf_parser_ctx.pass == 2)
7294 ConfigFileEntry.gline_logging |= GDENY_REJECT;
7295 }
7296 break;
7297
7298 case 602:
7299
7300 /* Line 1806 of yacc.c */
7301 #line 3126 "conf_parser.y"
7302 {
7303 if (conf_parser_ctx.pass == 2)
7304 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
7305 }
7306 break;
7307
7308 case 603:
7309
7310 /* Line 1806 of yacc.c */
7311 #line 3132 "conf_parser.y"
7312 {
7313 if (conf_parser_ctx.pass == 2)
7314 {
7315 struct split_nuh_item nuh;
7316
7317 nuh.nuhmask = yylval.string;
7318 nuh.nickptr = NULL;
7319 nuh.userptr = userbuf;
7320 nuh.hostptr = hostbuf;
7321
7322 nuh.nicksize = 0;
7323 nuh.usersize = sizeof(userbuf);
7324 nuh.hostsize = sizeof(hostbuf);
7325
7326 split_nuh(&nuh);
7327
7328 if (yy_aconf->user == NULL)
7329 {
7330 DupString(yy_aconf->user, userbuf);
7331 DupString(yy_aconf->host, hostbuf);
7332 }
7333 else
7334 {
7335 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
7336
7337 DupString(yy_tmp->user, userbuf);
7338 DupString(yy_tmp->host, hostbuf);
7339
7340 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
7341 }
7342 }
7343 }
7344 break;
7345
7346 case 604:
7347
7348 /* Line 1806 of yacc.c */
7349 #line 3166 "conf_parser.y"
7350 {
7351 if (conf_parser_ctx.pass == 2)
7352 {
7353 MyFree(yy_conf->name);
7354 DupString(yy_conf->name, yylval.string);
7355 }
7356 }
7357 break;
7358
7359 case 605:
7360
7361 /* Line 1806 of yacc.c */
7362 #line 3175 "conf_parser.y"
7363 {
7364 if (conf_parser_ctx.pass == 2)
7365 yy_aconf->flags = 0;
7366 }
7367 break;
7368
7369 case 606:
7370
7371 /* Line 1806 of yacc.c */
7372 #line 3179 "conf_parser.y"
7373 {
7374 if (conf_parser_ctx.pass == 2)
7375 {
7376 struct CollectItem *yy_tmp = NULL;
7377 dlink_node *ptr, *next_ptr;
7378
7379 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
7380 {
7381 struct AccessItem *new_aconf;
7382 struct ConfItem *new_conf;
7383
7384 yy_tmp = ptr->data;
7385 new_conf = make_conf_item(GDENY_TYPE);
7386 new_aconf = map_to_conf(new_conf);
7387
7388 new_aconf->flags = yy_aconf->flags;
7389
7390 if (yy_conf->name != NULL)
7391 DupString(new_conf->name, yy_conf->name);
7392 else
7393 DupString(new_conf->name, "*");
7394 if (yy_aconf->user != NULL)
7395 DupString(new_aconf->user, yy_tmp->user);
7396 else
7397 DupString(new_aconf->user, "*");
7398 if (yy_aconf->host != NULL)
7399 DupString(new_aconf->host, yy_tmp->host);
7400 else
7401 DupString(new_aconf->host, "*");
7402
7403 dlinkDelete(&yy_tmp->node, &col_conf_list);
7404 }
7405
7406 /*
7407 * In case someone has fed us with more than one action= after user/name
7408 * which would leak memory -Michael
7409 */
7410 if (yy_conf->name == NULL || yy_aconf->user == NULL)
7411 delete_conf_item(yy_conf);
7412
7413 yy_conf = make_conf_item(GDENY_TYPE);
7414 yy_aconf = map_to_conf(yy_conf);
7415 }
7416 }
7417 break;
7418
7419 case 609:
7420
7421 /* Line 1806 of yacc.c */
7422 #line 3226 "conf_parser.y"
7423 {
7424 if (conf_parser_ctx.pass == 2)
7425 yy_aconf->flags |= GDENY_REJECT;
7426 }
7427 break;
7428
7429 case 610:
7430
7431 /* Line 1806 of yacc.c */
7432 #line 3230 "conf_parser.y"
7433 {
7434 if (conf_parser_ctx.pass == 2)
7435 yy_aconf->flags |= GDENY_BLOCK;
7436 }
7437 break;
7438
7439 case 633:
7440
7441 /* Line 1806 of yacc.c */
7442 #line 3254 "conf_parser.y"
7443 {
7444 ConfigChannel.disable_fake_channels = yylval.number;
7445 }
7446 break;
7447
7448 case 634:
7449
7450 /* Line 1806 of yacc.c */
7451 #line 3259 "conf_parser.y"
7452 {
7453 ConfigChannel.restrict_channels = yylval.number;
7454 }
7455 break;
7456
7457 case 635:
7458
7459 /* Line 1806 of yacc.c */
7460 #line 3264 "conf_parser.y"
7461 {
7462 ConfigChannel.disable_local_channels = yylval.number;
7463 }
7464 break;
7465
7466 case 636:
7467
7468 /* Line 1806 of yacc.c */
7469 #line 3269 "conf_parser.y"
7470 {
7471 ConfigChannel.use_except = yylval.number;
7472 }
7473 break;
7474
7475 case 637:
7476
7477 /* Line 1806 of yacc.c */
7478 #line 3274 "conf_parser.y"
7479 {
7480 ConfigChannel.use_invex = yylval.number;
7481 }
7482 break;
7483
7484 case 638:
7485
7486 /* Line 1806 of yacc.c */
7487 #line 3279 "conf_parser.y"
7488 {
7489 ConfigChannel.use_knock = yylval.number;
7490 }
7491 break;
7492
7493 case 639:
7494
7495 /* Line 1806 of yacc.c */
7496 #line 3284 "conf_parser.y"
7497 {
7498 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
7499 }
7500 break;
7501
7502 case 640:
7503
7504 /* Line 1806 of yacc.c */
7505 #line 3289 "conf_parser.y"
7506 {
7507 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
7508 }
7509 break;
7510
7511 case 641:
7512
7513 /* Line 1806 of yacc.c */
7514 #line 3294 "conf_parser.y"
7515 {
7516 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
7517 }
7518 break;
7519
7520 case 642:
7521
7522 /* Line 1806 of yacc.c */
7523 #line 3299 "conf_parser.y"
7524 {
7525 ConfigChannel.quiet_on_ban = yylval.number;
7526 }
7527 break;
7528
7529 case 643:
7530
7531 /* Line 1806 of yacc.c */
7532 #line 3304 "conf_parser.y"
7533 {
7534 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
7535 }
7536 break;
7537
7538 case 644:
7539
7540 /* Line 1806 of yacc.c */
7541 #line 3309 "conf_parser.y"
7542 {
7543 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
7544 }
7545 break;
7546
7547 case 645:
7548
7549 /* Line 1806 of yacc.c */
7550 #line 3314 "conf_parser.y"
7551 {
7552 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
7553 }
7554 break;
7555
7556 case 646:
7557
7558 /* Line 1806 of yacc.c */
7559 #line 3319 "conf_parser.y"
7560 {
7561 ConfigChannel.no_create_on_split = yylval.number;
7562 }
7563 break;
7564
7565 case 647:
7566
7567 /* Line 1806 of yacc.c */
7568 #line 3324 "conf_parser.y"
7569 {
7570 ConfigChannel.no_join_on_split = yylval.number;
7571 }
7572 break;
7573
7574 case 648:
7575
7576 /* Line 1806 of yacc.c */
7577 #line 3329 "conf_parser.y"
7578 {
7579 ConfigChannel.burst_topicwho = yylval.number;
7580 }
7581 break;
7582
7583 case 649:
7584
7585 /* Line 1806 of yacc.c */
7586 #line 3334 "conf_parser.y"
7587 {
7588 GlobalSetOptions.joinfloodcount = yylval.number;
7589 }
7590 break;
7591
7592 case 650:
7593
7594 /* Line 1806 of yacc.c */
7595 #line 3339 "conf_parser.y"
7596 {
7597 GlobalSetOptions.joinfloodtime = yylval.number;
7598 }
7599 break;
7600
7601 case 662:
7602
7603 /* Line 1806 of yacc.c */
7604 #line 3358 "conf_parser.y"
7605 {
7606 if (conf_parser_ctx.pass == 2)
7607 ConfigServerHide.flatten_links = yylval.number;
7608 }
7609 break;
7610
7611 case 663:
7612
7613 /* Line 1806 of yacc.c */
7614 #line 3364 "conf_parser.y"
7615 {
7616 if (conf_parser_ctx.pass == 2)
7617 ConfigServerHide.hide_servers = yylval.number;
7618 }
7619 break;
7620
7621 case 664:
7622
7623 /* Line 1806 of yacc.c */
7624 #line 3370 "conf_parser.y"
7625 {
7626 if (conf_parser_ctx.pass == 2)
7627 {
7628 MyFree(ConfigServerHide.hidden_name);
7629 DupString(ConfigServerHide.hidden_name, yylval.string);
7630 }
7631 }
7632 break;
7633
7634 case 665:
7635
7636 /* Line 1806 of yacc.c */
7637 #line 3379 "conf_parser.y"
7638 {
7639 if (conf_parser_ctx.pass == 2)
7640 {
7641 if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
7642 {
7643 eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
7644 ConfigServerHide.links_disabled = 0;
7645 }
7646
7647 ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
7648 }
7649 }
7650 break;
7651
7652 case 666:
7653
7654 /* Line 1806 of yacc.c */
7655 #line 3393 "conf_parser.y"
7656 {
7657 if (conf_parser_ctx.pass == 2)
7658 ConfigServerHide.hidden = yylval.number;
7659 }
7660 break;
7661
7662 case 667:
7663
7664 /* Line 1806 of yacc.c */
7665 #line 3399 "conf_parser.y"
7666 {
7667 if (conf_parser_ctx.pass == 2)
7668 ConfigServerHide.disable_hidden = yylval.number;
7669 }
7670 break;
7671
7672 case 668:
7673
7674 /* Line 1806 of yacc.c */
7675 #line 3405 "conf_parser.y"
7676 {
7677 if (conf_parser_ctx.pass == 2)
7678 ConfigServerHide.hide_server_ips = yylval.number;
7679 }
7680 break;
7681
7682
7683
7684 /* Line 1806 of yacc.c */
7685 #line 7686 "conf_parser.c"
7686 default: break;
7687 }
7688 /* User semantic actions sometimes alter yychar, and that requires
7689 that yytoken be updated with the new translation. We take the
7690 approach of translating immediately before every use of yytoken.
7691 One alternative is translating here after every semantic action,
7692 but that translation would be missed if the semantic action invokes
7693 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
7694 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
7695 incorrect destructor might then be invoked immediately. In the
7696 case of YYERROR or YYBACKUP, subsequent parser actions might lead
7697 to an incorrect destructor call or verbose syntax error message
7698 before the lookahead is translated. */
7699 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
7700
7701 YYPOPSTACK (yylen);
7702 yylen = 0;
7703 YY_STACK_PRINT (yyss, yyssp);
7704
7705 *++yyvsp = yyval;
7706
7707 /* Now `shift' the result of the reduction. Determine what state
7708 that goes to, based on the state we popped back to and the rule
7709 number reduced by. */
7710
7711 yyn = yyr1[yyn];
7712
7713 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
7714 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
7715 yystate = yytable[yystate];
7716 else
7717 yystate = yydefgoto[yyn - YYNTOKENS];
7718
7719 goto yynewstate;
7720
7721
7722 /*------------------------------------.
7723 | yyerrlab -- here on detecting error |
7724 `------------------------------------*/
7725 yyerrlab:
7726 /* Make sure we have latest lookahead translation. See comments at
7727 user semantic actions for why this is necessary. */
7728 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
7729
7730 /* If not already recovering from an error, report this error. */
7731 if (!yyerrstatus)
7732 {
7733 ++yynerrs;
7734 #if ! YYERROR_VERBOSE
7735 yyerror (YY_("syntax error"));
7736 #else
7737 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
7738 yyssp, yytoken)
7739 {
7740 char const *yymsgp = YY_("syntax error");
7741 int yysyntax_error_status;
7742 yysyntax_error_status = YYSYNTAX_ERROR;
7743 if (yysyntax_error_status == 0)
7744 yymsgp = yymsg;
7745 else if (yysyntax_error_status == 1)
7746 {
7747 if (yymsg != yymsgbuf)
7748 YYSTACK_FREE (yymsg);
7749 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
7750 if (!yymsg)
7751 {
7752 yymsg = yymsgbuf;
7753 yymsg_alloc = sizeof yymsgbuf;
7754 yysyntax_error_status = 2;
7755 }
7756 else
7757 {
7758 yysyntax_error_status = YYSYNTAX_ERROR;
7759 yymsgp = yymsg;
7760 }
7761 }
7762 yyerror (yymsgp);
7763 if (yysyntax_error_status == 2)
7764 goto yyexhaustedlab;
7765 }
7766 # undef YYSYNTAX_ERROR
7767 #endif
7768 }
7769
7770
7771
7772 if (yyerrstatus == 3)
7773 {
7774 /* If just tried and failed to reuse lookahead token after an
7775 error, discard it. */
7776
7777 if (yychar <= YYEOF)
7778 {
7779 /* Return failure if at end of input. */
7780 if (yychar == YYEOF)
7781 YYABORT;
7782 }
7783 else
7784 {
7785 yydestruct ("Error: discarding",
7786 yytoken, &yylval);
7787 yychar = YYEMPTY;
7788 }
7789 }
7790
7791 /* Else will try to reuse lookahead token after shifting the error
7792 token. */
7793 goto yyerrlab1;
7794
7795
7796 /*---------------------------------------------------.
7797 | yyerrorlab -- error raised explicitly by YYERROR. |
7798 `---------------------------------------------------*/
7799 yyerrorlab:
7800
7801 /* Pacify compilers like GCC when the user code never invokes
7802 YYERROR and the label yyerrorlab therefore never appears in user
7803 code. */
7804 if (/*CONSTCOND*/ 0)
7805 goto yyerrorlab;
7806
7807 /* Do not reclaim the symbols of the rule which action triggered
7808 this YYERROR. */
7809 YYPOPSTACK (yylen);
7810 yylen = 0;
7811 YY_STACK_PRINT (yyss, yyssp);
7812 yystate = *yyssp;
7813 goto yyerrlab1;
7814
7815
7816 /*-------------------------------------------------------------.
7817 | yyerrlab1 -- common code for both syntax error and YYERROR. |
7818 `-------------------------------------------------------------*/
7819 yyerrlab1:
7820 yyerrstatus = 3; /* Each real token shifted decrements this. */
7821
7822 for (;;)
7823 {
7824 yyn = yypact[yystate];
7825 if (!yypact_value_is_default (yyn))
7826 {
7827 yyn += YYTERROR;
7828 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
7829 {
7830 yyn = yytable[yyn];
7831 if (0 < yyn)
7832 break;
7833 }
7834 }
7835
7836 /* Pop the current state because it cannot handle the error token. */
7837 if (yyssp == yyss)
7838 YYABORT;
7839
7840
7841 yydestruct ("Error: popping",
7842 yystos[yystate], yyvsp);
7843 YYPOPSTACK (1);
7844 yystate = *yyssp;
7845 YY_STACK_PRINT (yyss, yyssp);
7846 }
7847
7848 *++yyvsp = yylval;
7849
7850
7851 /* Shift the error token. */
7852 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
7853
7854 yystate = yyn;
7855 goto yynewstate;
7856
7857
7858 /*-------------------------------------.
7859 | yyacceptlab -- YYACCEPT comes here. |
7860 `-------------------------------------*/
7861 yyacceptlab:
7862 yyresult = 0;
7863 goto yyreturn;
7864
7865 /*-----------------------------------.
7866 | yyabortlab -- YYABORT comes here. |
7867 `-----------------------------------*/
7868 yyabortlab:
7869 yyresult = 1;
7870 goto yyreturn;
7871
7872 #if !defined(yyoverflow) || YYERROR_VERBOSE
7873 /*-------------------------------------------------.
7874 | yyexhaustedlab -- memory exhaustion comes here. |
7875 `-------------------------------------------------*/
7876 yyexhaustedlab:
7877 yyerror (YY_("memory exhausted"));
7878 yyresult = 2;
7879 /* Fall through. */
7880 #endif
7881
7882 yyreturn:
7883 if (yychar != YYEMPTY)
7884 {
7885 /* Make sure we have latest lookahead translation. See comments at
7886 user semantic actions for why this is necessary. */
7887 yytoken = YYTRANSLATE (yychar);
7888 yydestruct ("Cleanup: discarding lookahead",
7889 yytoken, &yylval);
7890 }
7891 /* Do not reclaim the symbols of the rule which action triggered
7892 this YYABORT or YYACCEPT. */
7893 YYPOPSTACK (yylen);
7894 YY_STACK_PRINT (yyss, yyssp);
7895 while (yyssp != yyss)
7896 {
7897 yydestruct ("Cleanup: popping",
7898 yystos[*yyssp], yyvsp);
7899 YYPOPSTACK (1);
7900 }
7901 #ifndef yyoverflow
7902 if (yyss != yyssa)
7903 YYSTACK_FREE (yyss);
7904 #endif
7905 #if YYERROR_VERBOSE
7906 if (yymsg != yymsgbuf)
7907 YYSTACK_FREE (yymsg);
7908 #endif
7909 /* Make sure YYID is used. */
7910 return YYID (yyresult);
7911 }
7912
7913
7914

Properties

Name Value
svn:eol-style native