ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1474
Committed: Sun Jul 22 14:44:07 2012 UTC (13 years, 1 month ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 226917 byte(s)
Log Message:
- removed &localchannels

File Contents

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

Properties

Name Value
svn:eol-style native