ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1736
Committed: Sun Jan 13 09:31:46 2013 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 216912 byte(s)
Log Message:
- Forward-port -r1732 [Dropped support for linux rt signals]

File Contents

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

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision