ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1646
Committed: Wed Nov 7 21:02:43 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 217447 byte(s)
Log Message:
- First pass of conf parser stabilization/cleanup

File Contents

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

Properties

Name Value
svn:eol-style native