ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1749
Committed: Tue Jan 15 19:01:16 2013 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 216881 byte(s)
Log Message:
- Rebuilt conf_parser.c
- Minor logic fixes to recently added away-notify capability

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, 978, 978, 979, 979, 979, 980, 980, 980, 981,
1255 981, 981, 983, 989, 995, 1001, 1012, 1018, 1025, 1024,
1256 1030, 1030, 1031, 1035, 1039, 1043, 1047, 1051, 1055, 1059,
1257 1063, 1067, 1071, 1075, 1079, 1083, 1087, 1091, 1095, 1099,
1258 1103, 1107, 1114, 1113, 1119, 1119, 1120, 1124, 1128, 1132,
1259 1136, 1140, 1144, 1148, 1152, 1156, 1160, 1164, 1168, 1172,
1260 1176, 1180, 1184, 1188, 1192, 1203, 1202, 1253, 1253, 1254,
1261 1255, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
1262 1264, 1264, 1265, 1267, 1273, 1279, 1285, 1291, 1297, 1303,
1263 1309, 1315, 1321, 1328, 1334, 1340, 1350, 1349, 1356, 1355,
1264 1360, 1360, 1361, 1365, 1369, 1375, 1375, 1376, 1376, 1376,
1265 1376, 1376, 1378, 1378, 1380, 1380, 1382, 1396, 1416, 1422,
1266 1432, 1431, 1473, 1473, 1474, 1474, 1474, 1474, 1475, 1475,
1267 1475, 1476, 1476, 1478, 1484, 1490, 1496, 1508, 1507, 1513,
1268 1513, 1514, 1518, 1522, 1526, 1530, 1534, 1538, 1542, 1546,
1269 1550, 1556, 1570, 1579, 1593, 1592, 1601, 1601, 1602, 1602,
1270 1602, 1602, 1604, 1610, 1619, 1628, 1630, 1630, 1631, 1631,
1271 1633, 1649, 1648, 1673, 1673, 1674, 1674, 1674, 1674, 1676,
1272 1682, 1702, 1701, 1707, 1707, 1708, 1712, 1716, 1720, 1724,
1273 1728, 1732, 1736, 1740, 1744, 1754, 1753, 1774, 1774, 1775,
1274 1775, 1775, 1777, 1784, 1783, 1789, 1789, 1790, 1794, 1798,
1275 1802, 1806, 1810, 1814, 1818, 1822, 1826, 1836, 1835, 1901,
1276 1901, 1902, 1902, 1902, 1903, 1903, 1904, 1904, 1904, 1905,
1277 1905, 1905, 1906, 1906, 1907, 1909, 1915, 1921, 1927, 1940,
1278 1953, 1959, 1963, 1972, 1971, 1976, 1976, 1977, 1981, 1987,
1279 1998, 2004, 2010, 2016, 2032, 2031, 2094, 2093, 2099, 2099,
1280 2100, 2106, 2106, 2107, 2107, 2107, 2107, 2109, 2129, 2139,
1281 2138, 2165, 2165, 2166, 2166, 2166, 2168, 2174, 2183, 2185,
1282 2185, 2186, 2186, 2188, 2206, 2205, 2251, 2250, 2256, 2256,
1283 2257, 2263, 2263, 2264, 2264, 2264, 2264, 2266, 2272, 2281,
1284 2284, 2284, 2285, 2285, 2286, 2286, 2287, 2287, 2288, 2288,
1285 2289, 2289, 2290, 2291, 2292, 2292, 2293, 2293, 2294, 2294,
1286 2295, 2295, 2296, 2296, 2297, 2297, 2298, 2299, 2299, 2300,
1287 2300, 2301, 2301, 2302, 2302, 2303, 2303, 2304, 2305, 2305,
1288 2306, 2307, 2308, 2308, 2309, 2309, 2310, 2311, 2312, 2313,
1289 2313, 2314, 2317, 2322, 2328, 2334, 2340, 2345, 2350, 2355,
1290 2360, 2365, 2370, 2375, 2380, 2385, 2390, 2395, 2400, 2405,
1291 2410, 2416, 2427, 2432, 2437, 2442, 2447, 2452, 2455, 2460,
1292 2463, 2468, 2473, 2478, 2483, 2488, 2493, 2498, 2503, 2508,
1293 2519, 2524, 2529, 2534, 2543, 2552, 2557, 2562, 2568, 2567,
1294 2572, 2572, 2573, 2576, 2579, 2582, 2585, 2588, 2591, 2594,
1295 2597, 2600, 2603, 2606, 2609, 2612, 2615, 2618, 2621, 2624,
1296 2627, 2630, 2636, 2635, 2640, 2640, 2641, 2644, 2647, 2650,
1297 2653, 2656, 2659, 2662, 2665, 2668, 2671, 2674, 2677, 2680,
1298 2683, 2686, 2689, 2692, 2695, 2698, 2703, 2708, 2713, 2722,
1299 2725, 2725, 2726, 2727, 2727, 2728, 2728, 2729, 2729, 2730,
1300 2731, 2731, 2732, 2733, 2733, 2734, 2734, 2736, 2741, 2746,
1301 2751, 2756, 2761, 2766, 2771, 2776, 2781, 2786, 2791, 2796,
1302 2801, 2809, 2812, 2812, 2813, 2813, 2814, 2815, 2815, 2816,
1303 2817, 2819, 2825, 2831, 2840, 2854, 2860
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 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3827
3828 conf->rsa_public_key = pkey;
3829 BIO_set_close(file, BIO_CLOSE);
3830 BIO_free(file);
3831 }
3832 #endif /* HAVE_LIBCRYPTO */
3833 }
3834 }
3835 break;
3836
3837 case 142:
3838 /* Line 1792 of yacc.c */
3839 #line 984 "conf_parser.y"
3840 {
3841 if (conf_parser_ctx.pass == 2)
3842 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3843 }
3844 break;
3845
3846 case 143:
3847 /* Line 1792 of yacc.c */
3848 #line 990 "conf_parser.y"
3849 {
3850 if (conf_parser_ctx.pass == 2)
3851 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3852 }
3853 break;
3854
3855 case 144:
3856 /* Line 1792 of yacc.c */
3857 #line 996 "conf_parser.y"
3858 {
3859 if (conf_parser_ctx.pass == 2)
3860 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3861 }
3862 break;
3863
3864 case 145:
3865 /* Line 1792 of yacc.c */
3866 #line 1002 "conf_parser.y"
3867 {
3868 if (conf_parser_ctx.pass == 2)
3869 {
3870 if (yylval.number)
3871 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3872 else
3873 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3874 }
3875 }
3876 break;
3877
3878 case 146:
3879 /* Line 1792 of yacc.c */
3880 #line 1013 "conf_parser.y"
3881 {
3882 if (conf_parser_ctx.pass == 2)
3883 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3884 }
3885 break;
3886
3887 case 147:
3888 /* Line 1792 of yacc.c */
3889 #line 1019 "conf_parser.y"
3890 {
3891 if (conf_parser_ctx.pass == 2)
3892 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3893 }
3894 break;
3895
3896 case 148:
3897 /* Line 1792 of yacc.c */
3898 #line 1025 "conf_parser.y"
3899 {
3900 if (conf_parser_ctx.pass == 2)
3901 block_state.modes.value = 0;
3902 }
3903 break;
3904
3905 case 152:
3906 /* Line 1792 of yacc.c */
3907 #line 1032 "conf_parser.y"
3908 {
3909 if (conf_parser_ctx.pass == 2)
3910 block_state.modes.value |= UMODE_BOTS;
3911 }
3912 break;
3913
3914 case 153:
3915 /* Line 1792 of yacc.c */
3916 #line 1036 "conf_parser.y"
3917 {
3918 if (conf_parser_ctx.pass == 2)
3919 block_state.modes.value |= UMODE_CCONN;
3920 }
3921 break;
3922
3923 case 154:
3924 /* Line 1792 of yacc.c */
3925 #line 1040 "conf_parser.y"
3926 {
3927 if (conf_parser_ctx.pass == 2)
3928 block_state.modes.value |= UMODE_CCONN_FULL;
3929 }
3930 break;
3931
3932 case 155:
3933 /* Line 1792 of yacc.c */
3934 #line 1044 "conf_parser.y"
3935 {
3936 if (conf_parser_ctx.pass == 2)
3937 block_state.modes.value |= UMODE_DEAF;
3938 }
3939 break;
3940
3941 case 156:
3942 /* Line 1792 of yacc.c */
3943 #line 1048 "conf_parser.y"
3944 {
3945 if (conf_parser_ctx.pass == 2)
3946 block_state.modes.value |= UMODE_DEBUG;
3947 }
3948 break;
3949
3950 case 157:
3951 /* Line 1792 of yacc.c */
3952 #line 1052 "conf_parser.y"
3953 {
3954 if (conf_parser_ctx.pass == 2)
3955 block_state.modes.value |= UMODE_FULL;
3956 }
3957 break;
3958
3959 case 158:
3960 /* Line 1792 of yacc.c */
3961 #line 1056 "conf_parser.y"
3962 {
3963 if (conf_parser_ctx.pass == 2)
3964 block_state.modes.value |= UMODE_HIDDEN;
3965 }
3966 break;
3967
3968 case 159:
3969 /* Line 1792 of yacc.c */
3970 #line 1060 "conf_parser.y"
3971 {
3972 if (conf_parser_ctx.pass == 2)
3973 block_state.modes.value |= UMODE_SKILL;
3974 }
3975 break;
3976
3977 case 160:
3978 /* Line 1792 of yacc.c */
3979 #line 1064 "conf_parser.y"
3980 {
3981 if (conf_parser_ctx.pass == 2)
3982 block_state.modes.value |= UMODE_NCHANGE;
3983 }
3984 break;
3985
3986 case 161:
3987 /* Line 1792 of yacc.c */
3988 #line 1068 "conf_parser.y"
3989 {
3990 if (conf_parser_ctx.pass == 2)
3991 block_state.modes.value |= UMODE_REJ;
3992 }
3993 break;
3994
3995 case 162:
3996 /* Line 1792 of yacc.c */
3997 #line 1072 "conf_parser.y"
3998 {
3999 if (conf_parser_ctx.pass == 2)
4000 block_state.modes.value |= UMODE_UNAUTH;
4001 }
4002 break;
4003
4004 case 163:
4005 /* Line 1792 of yacc.c */
4006 #line 1076 "conf_parser.y"
4007 {
4008 if (conf_parser_ctx.pass == 2)
4009 block_state.modes.value |= UMODE_SPY;
4010 }
4011 break;
4012
4013 case 164:
4014 /* Line 1792 of yacc.c */
4015 #line 1080 "conf_parser.y"
4016 {
4017 if (conf_parser_ctx.pass == 2)
4018 block_state.modes.value |= UMODE_EXTERNAL;
4019 }
4020 break;
4021
4022 case 165:
4023 /* Line 1792 of yacc.c */
4024 #line 1084 "conf_parser.y"
4025 {
4026 if (conf_parser_ctx.pass == 2)
4027 block_state.modes.value |= UMODE_OPERWALL;
4028 }
4029 break;
4030
4031 case 166:
4032 /* Line 1792 of yacc.c */
4033 #line 1088 "conf_parser.y"
4034 {
4035 if (conf_parser_ctx.pass == 2)
4036 block_state.modes.value |= UMODE_SERVNOTICE;
4037 }
4038 break;
4039
4040 case 167:
4041 /* Line 1792 of yacc.c */
4042 #line 1092 "conf_parser.y"
4043 {
4044 if (conf_parser_ctx.pass == 2)
4045 block_state.modes.value |= UMODE_INVISIBLE;
4046 }
4047 break;
4048
4049 case 168:
4050 /* Line 1792 of yacc.c */
4051 #line 1096 "conf_parser.y"
4052 {
4053 if (conf_parser_ctx.pass == 2)
4054 block_state.modes.value |= UMODE_WALLOP;
4055 }
4056 break;
4057
4058 case 169:
4059 /* Line 1792 of yacc.c */
4060 #line 1100 "conf_parser.y"
4061 {
4062 if (conf_parser_ctx.pass == 2)
4063 block_state.modes.value |= UMODE_SOFTCALLERID;
4064 }
4065 break;
4066
4067 case 170:
4068 /* Line 1792 of yacc.c */
4069 #line 1104 "conf_parser.y"
4070 {
4071 if (conf_parser_ctx.pass == 2)
4072 block_state.modes.value |= UMODE_CALLERID;
4073 }
4074 break;
4075
4076 case 171:
4077 /* Line 1792 of yacc.c */
4078 #line 1108 "conf_parser.y"
4079 {
4080 if (conf_parser_ctx.pass == 2)
4081 block_state.modes.value |= UMODE_LOCOPS;
4082 }
4083 break;
4084
4085 case 172:
4086 /* Line 1792 of yacc.c */
4087 #line 1114 "conf_parser.y"
4088 {
4089 if (conf_parser_ctx.pass == 2)
4090 block_state.port.value = 0;
4091 }
4092 break;
4093
4094 case 176:
4095 /* Line 1792 of yacc.c */
4096 #line 1121 "conf_parser.y"
4097 {
4098 if (conf_parser_ctx.pass == 2)
4099 block_state.port.value |= OPER_FLAG_GLOBAL_KILL;
4100 }
4101 break;
4102
4103 case 177:
4104 /* Line 1792 of yacc.c */
4105 #line 1125 "conf_parser.y"
4106 {
4107 if (conf_parser_ctx.pass == 2)
4108 block_state.port.value |= OPER_FLAG_REMOTE;
4109 }
4110 break;
4111
4112 case 178:
4113 /* Line 1792 of yacc.c */
4114 #line 1129 "conf_parser.y"
4115 {
4116 if (conf_parser_ctx.pass == 2)
4117 block_state.port.value |= OPER_FLAG_K;
4118 }
4119 break;
4120
4121 case 179:
4122 /* Line 1792 of yacc.c */
4123 #line 1133 "conf_parser.y"
4124 {
4125 if (conf_parser_ctx.pass == 2)
4126 block_state.port.value |= OPER_FLAG_UNKLINE;
4127 }
4128 break;
4129
4130 case 180:
4131 /* Line 1792 of yacc.c */
4132 #line 1137 "conf_parser.y"
4133 {
4134 if (conf_parser_ctx.pass == 2)
4135 block_state.port.value |= OPER_FLAG_DLINE;
4136 }
4137 break;
4138
4139 case 181:
4140 /* Line 1792 of yacc.c */
4141 #line 1141 "conf_parser.y"
4142 {
4143 if (conf_parser_ctx.pass == 2)
4144 block_state.port.value |= OPER_FLAG_UNDLINE;
4145 }
4146 break;
4147
4148 case 182:
4149 /* Line 1792 of yacc.c */
4150 #line 1145 "conf_parser.y"
4151 {
4152 if (conf_parser_ctx.pass == 2)
4153 block_state.port.value |= OPER_FLAG_X;
4154 }
4155 break;
4156
4157 case 183:
4158 /* Line 1792 of yacc.c */
4159 #line 1149 "conf_parser.y"
4160 {
4161 if (conf_parser_ctx.pass == 2)
4162 block_state.port.value |= OPER_FLAG_GLINE;
4163 }
4164 break;
4165
4166 case 184:
4167 /* Line 1792 of yacc.c */
4168 #line 1153 "conf_parser.y"
4169 {
4170 if (conf_parser_ctx.pass == 2)
4171 block_state.port.value |= OPER_FLAG_DIE;
4172 }
4173 break;
4174
4175 case 185:
4176 /* Line 1792 of yacc.c */
4177 #line 1157 "conf_parser.y"
4178 {
4179 if (conf_parser_ctx.pass == 2)
4180 block_state.port.value |= OPER_FLAG_RESTART;
4181 }
4182 break;
4183
4184 case 186:
4185 /* Line 1792 of yacc.c */
4186 #line 1161 "conf_parser.y"
4187 {
4188 if (conf_parser_ctx.pass == 2)
4189 block_state.port.value |= OPER_FLAG_REHASH;
4190 }
4191 break;
4192
4193 case 187:
4194 /* Line 1792 of yacc.c */
4195 #line 1165 "conf_parser.y"
4196 {
4197 if (conf_parser_ctx.pass == 2)
4198 block_state.port.value |= OPER_FLAG_ADMIN;
4199 }
4200 break;
4201
4202 case 188:
4203 /* Line 1792 of yacc.c */
4204 #line 1169 "conf_parser.y"
4205 {
4206 if (conf_parser_ctx.pass == 2)
4207 block_state.port.value |= OPER_FLAG_N;
4208 }
4209 break;
4210
4211 case 189:
4212 /* Line 1792 of yacc.c */
4213 #line 1173 "conf_parser.y"
4214 {
4215 if (conf_parser_ctx.pass == 2)
4216 block_state.port.value |= OPER_FLAG_OPERWALL;
4217 }
4218 break;
4219
4220 case 190:
4221 /* Line 1792 of yacc.c */
4222 #line 1177 "conf_parser.y"
4223 {
4224 if (conf_parser_ctx.pass == 2)
4225 block_state.port.value |= OPER_FLAG_GLOBOPS;
4226 }
4227 break;
4228
4229 case 191:
4230 /* Line 1792 of yacc.c */
4231 #line 1181 "conf_parser.y"
4232 {
4233 if (conf_parser_ctx.pass == 2)
4234 block_state.port.value |= OPER_FLAG_OPER_SPY;
4235 }
4236 break;
4237
4238 case 192:
4239 /* Line 1792 of yacc.c */
4240 #line 1185 "conf_parser.y"
4241 {
4242 if (conf_parser_ctx.pass == 2)
4243 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4244 }
4245 break;
4246
4247 case 193:
4248 /* Line 1792 of yacc.c */
4249 #line 1189 "conf_parser.y"
4250 {
4251 if (conf_parser_ctx.pass == 2)
4252 block_state.port.value |= OPER_FLAG_SET;
4253 }
4254 break;
4255
4256 case 194:
4257 /* Line 1792 of yacc.c */
4258 #line 1193 "conf_parser.y"
4259 {
4260 if (conf_parser_ctx.pass == 2)
4261 block_state.port.value |= OPER_FLAG_MODULE;
4262 }
4263 break;
4264
4265 case 195:
4266 /* Line 1792 of yacc.c */
4267 #line 1203 "conf_parser.y"
4268 {
4269 if (conf_parser_ctx.pass != 1)
4270 break;
4271
4272 reset_block_state();
4273
4274 block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4275 block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4276 block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4277 block_state.max_sendq.value = DEFAULT_SENDQ;
4278 block_state.max_recvq.value = DEFAULT_RECVQ;
4279
4280 }
4281 break;
4282
4283 case 196:
4284 /* Line 1792 of yacc.c */
4285 #line 1216 "conf_parser.y"
4286 {
4287 struct ClassItem *class = NULL;
4288
4289 if (conf_parser_ctx.pass != 1)
4290 break;
4291
4292 if (!block_state.class.buf[0])
4293 break;
4294
4295 if (!(class = class_find(block_state.class.buf, 0)))
4296 class = class_make();
4297
4298 class->active = 1;
4299 MyFree(class->name);
4300 class->name = xstrdup(block_state.class.buf);
4301 class->ping_freq = block_state.ping_freq.value;
4302 class->max_perip = block_state.max_perip.value;
4303 class->con_freq = block_state.con_freq.value;
4304 class->max_total = block_state.max_total.value;
4305 class->max_global = block_state.max_global.value;
4306 class->max_local = block_state.max_local.value;
4307 class->max_ident = block_state.max_ident.value;
4308 class->max_sendq = block_state.max_sendq.value;
4309 class->max_recvq = block_state.max_recvq.value;
4310
4311 if (class->number_per_cidr && block_state.number_per_cidr.value)
4312 if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4313 (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4314 if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4315 (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4316 rebuild_cidr_list(class);
4317
4318 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4319 class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4320 class->number_per_cidr = block_state.number_per_cidr.value;
4321 }
4322 break;
4323
4324 case 213:
4325 /* Line 1792 of yacc.c */
4326 #line 1268 "conf_parser.y"
4327 {
4328 if (conf_parser_ctx.pass == 1)
4329 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4330 }
4331 break;
4332
4333 case 214:
4334 /* Line 1792 of yacc.c */
4335 #line 1274 "conf_parser.y"
4336 {
4337 if (conf_parser_ctx.pass == 1)
4338 block_state.ping_freq.value = (yyvsp[(3) - (4)].number);
4339 }
4340 break;
4341
4342 case 215:
4343 /* Line 1792 of yacc.c */
4344 #line 1280 "conf_parser.y"
4345 {
4346 if (conf_parser_ctx.pass == 1)
4347 block_state.max_perip.value = (yyvsp[(3) - (4)].number);
4348 }
4349 break;
4350
4351 case 216:
4352 /* Line 1792 of yacc.c */
4353 #line 1286 "conf_parser.y"
4354 {
4355 if (conf_parser_ctx.pass == 1)
4356 block_state.con_freq.value = (yyvsp[(3) - (4)].number);
4357 }
4358 break;
4359
4360 case 217:
4361 /* Line 1792 of yacc.c */
4362 #line 1292 "conf_parser.y"
4363 {
4364 if (conf_parser_ctx.pass == 1)
4365 block_state.max_total.value = (yyvsp[(3) - (4)].number);
4366 }
4367 break;
4368
4369 case 218:
4370 /* Line 1792 of yacc.c */
4371 #line 1298 "conf_parser.y"
4372 {
4373 if (conf_parser_ctx.pass == 1)
4374 block_state.max_global.value = (yyvsp[(3) - (4)].number);
4375 }
4376 break;
4377
4378 case 219:
4379 /* Line 1792 of yacc.c */
4380 #line 1304 "conf_parser.y"
4381 {
4382 if (conf_parser_ctx.pass == 1)
4383 block_state.max_local.value = (yyvsp[(3) - (4)].number);
4384 }
4385 break;
4386
4387 case 220:
4388 /* Line 1792 of yacc.c */
4389 #line 1310 "conf_parser.y"
4390 {
4391 if (conf_parser_ctx.pass == 1)
4392 block_state.max_ident.value = (yyvsp[(3) - (4)].number);
4393 }
4394 break;
4395
4396 case 221:
4397 /* Line 1792 of yacc.c */
4398 #line 1316 "conf_parser.y"
4399 {
4400 if (conf_parser_ctx.pass == 1)
4401 block_state.max_sendq.value = (yyvsp[(3) - (4)].number);
4402 }
4403 break;
4404
4405 case 222:
4406 /* Line 1792 of yacc.c */
4407 #line 1322 "conf_parser.y"
4408 {
4409 if (conf_parser_ctx.pass == 1)
4410 if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
4411 block_state.max_recvq.value = (yyvsp[(3) - (4)].number);
4412 }
4413 break;
4414
4415 case 223:
4416 /* Line 1792 of yacc.c */
4417 #line 1329 "conf_parser.y"
4418 {
4419 if (conf_parser_ctx.pass == 1)
4420 block_state.cidr_bitlen_ipv4.value = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
4421 }
4422 break;
4423
4424 case 224:
4425 /* Line 1792 of yacc.c */
4426 #line 1335 "conf_parser.y"
4427 {
4428 if (conf_parser_ctx.pass == 1)
4429 block_state.cidr_bitlen_ipv6.value = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
4430 }
4431 break;
4432
4433 case 225:
4434 /* Line 1792 of yacc.c */
4435 #line 1341 "conf_parser.y"
4436 {
4437 if (conf_parser_ctx.pass == 1)
4438 block_state.number_per_cidr.value = (yyvsp[(3) - (4)].number);
4439 }
4440 break;
4441
4442 case 226:
4443 /* Line 1792 of yacc.c */
4444 #line 1350 "conf_parser.y"
4445 {
4446 if (conf_parser_ctx.pass == 2)
4447 reset_block_state();
4448 }
4449 break;
4450
4451 case 228:
4452 /* Line 1792 of yacc.c */
4453 #line 1356 "conf_parser.y"
4454 {
4455 block_state.flags.value = 0;
4456 }
4457 break;
4458
4459 case 232:
4460 /* Line 1792 of yacc.c */
4461 #line 1362 "conf_parser.y"
4462 {
4463 if (conf_parser_ctx.pass == 2)
4464 block_state.flags.value |= LISTENER_SSL;
4465 }
4466 break;
4467
4468 case 233:
4469 /* Line 1792 of yacc.c */
4470 #line 1366 "conf_parser.y"
4471 {
4472 if (conf_parser_ctx.pass == 2)
4473 block_state.flags.value |= LISTENER_HIDDEN;
4474 }
4475 break;
4476
4477 case 234:
4478 /* Line 1792 of yacc.c */
4479 #line 1370 "conf_parser.y"
4480 {
4481 if (conf_parser_ctx.pass == 2)
4482 block_state.flags.value |= LISTENER_SERVER;
4483 }
4484 break;
4485
4486 case 242:
4487 /* Line 1792 of yacc.c */
4488 #line 1378 "conf_parser.y"
4489 { block_state.flags.value = 0; }
4490 break;
4491
4492 case 246:
4493 /* Line 1792 of yacc.c */
4494 #line 1383 "conf_parser.y"
4495 {
4496 if (conf_parser_ctx.pass == 2)
4497 {
4498 if (block_state.flags.value & LISTENER_SSL)
4499 #ifdef HAVE_LIBCRYPTO
4500 if (!ServerInfo.server_ctx)
4501 #endif
4502 {
4503 yyerror("SSL not available - port closed");
4504 break;
4505 }
4506 add_listener((yyvsp[(1) - (1)].number), block_state.addr.buf, block_state.flags.value);
4507 }
4508 }
4509 break;
4510
4511 case 247:
4512 /* Line 1792 of yacc.c */
4513 #line 1397 "conf_parser.y"
4514 {
4515 if (conf_parser_ctx.pass == 2)
4516 {
4517 int i;
4518
4519 if (block_state.flags.value & LISTENER_SSL)
4520 #ifdef HAVE_LIBCRYPTO
4521 if (!ServerInfo.server_ctx)
4522 #endif
4523 {
4524 yyerror("SSL not available - port closed");
4525 break;
4526 }
4527
4528 for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4529 add_listener(i, block_state.addr.buf, block_state.flags.value);
4530 }
4531 }
4532 break;
4533
4534 case 248:
4535 /* Line 1792 of yacc.c */
4536 #line 1417 "conf_parser.y"
4537 {
4538 if (conf_parser_ctx.pass == 2)
4539 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4540 }
4541 break;
4542
4543 case 249:
4544 /* Line 1792 of yacc.c */
4545 #line 1423 "conf_parser.y"
4546 {
4547 if (conf_parser_ctx.pass == 2)
4548 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4549 }
4550 break;
4551
4552 case 250:
4553 /* Line 1792 of yacc.c */
4554 #line 1432 "conf_parser.y"
4555 {
4556 if (conf_parser_ctx.pass == 2)
4557 reset_block_state();
4558 }
4559 break;
4560
4561 case 251:
4562 /* Line 1792 of yacc.c */
4563 #line 1436 "conf_parser.y"
4564 {
4565 dlink_node *ptr = NULL;
4566
4567 if (conf_parser_ctx.pass != 2)
4568 break;
4569
4570 DLINK_FOREACH(ptr, block_state.mask.list.head)
4571 {
4572 struct MaskItem *conf = NULL;
4573 struct split_nuh_item nuh;
4574
4575 nuh.nuhmask = ptr->data;
4576 nuh.nickptr = NULL;
4577 nuh.userptr = block_state.user.buf;
4578 nuh.hostptr = block_state.host.buf;
4579 nuh.nicksize = 0;
4580 nuh.usersize = sizeof(block_state.user.buf);
4581 nuh.hostsize = sizeof(block_state.host.buf);
4582 split_nuh(&nuh);
4583
4584 conf = conf_make(CONF_CLIENT);
4585 conf->user = xstrdup(collapse(block_state.user.buf));
4586 conf->host = xstrdup(collapse(block_state.host.buf));
4587
4588 if (block_state.rpass.buf[0])
4589 conf->passwd = xstrdup(block_state.rpass.buf);
4590 if (block_state.name.buf[0])
4591 conf->passwd = xstrdup(block_state.name.buf);
4592
4593 conf->flags = block_state.flags.value;
4594 conf->port = block_state.port.value;
4595
4596 conf_add_class_to_conf(conf, block_state.class.buf);
4597 add_conf_by_address(CONF_CLIENT, conf);
4598 }
4599 }
4600 break;
4601
4602 case 263:
4603 /* Line 1792 of yacc.c */
4604 #line 1479 "conf_parser.y"
4605 {
4606 if (conf_parser_ctx.pass == 2)
4607 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4608 }
4609 break;
4610
4611 case 264:
4612 /* Line 1792 of yacc.c */
4613 #line 1485 "conf_parser.y"
4614 {
4615 if (conf_parser_ctx.pass == 2)
4616 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4617 }
4618 break;
4619
4620 case 265:
4621 /* Line 1792 of yacc.c */
4622 #line 1491 "conf_parser.y"
4623 {
4624 if (conf_parser_ctx.pass == 2)
4625 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4626 }
4627 break;
4628
4629 case 266:
4630 /* Line 1792 of yacc.c */
4631 #line 1497 "conf_parser.y"
4632 {
4633 if (conf_parser_ctx.pass == 2)
4634 {
4635 if (yylval.number)
4636 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4637 else
4638 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4639 }
4640 }
4641 break;
4642
4643 case 267:
4644 /* Line 1792 of yacc.c */
4645 #line 1508 "conf_parser.y"
4646 {
4647 if (conf_parser_ctx.pass == 2)
4648 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
4649 }
4650 break;
4651
4652 case 271:
4653 /* Line 1792 of yacc.c */
4654 #line 1515 "conf_parser.y"
4655 {
4656 if (conf_parser_ctx.pass == 2)
4657 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4658 }
4659 break;
4660
4661 case 272:
4662 /* Line 1792 of yacc.c */
4663 #line 1519 "conf_parser.y"
4664 {
4665 if (conf_parser_ctx.pass == 2)
4666 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4667 }
4668 break;
4669
4670 case 273:
4671 /* Line 1792 of yacc.c */
4672 #line 1523 "conf_parser.y"
4673 {
4674 if (conf_parser_ctx.pass == 2)
4675 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4676 }
4677 break;
4678
4679 case 274:
4680 /* Line 1792 of yacc.c */
4681 #line 1527 "conf_parser.y"
4682 {
4683 if (conf_parser_ctx.pass == 2)
4684 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4685 }
4686 break;
4687
4688 case 275:
4689 /* Line 1792 of yacc.c */
4690 #line 1531 "conf_parser.y"
4691 {
4692 if (conf_parser_ctx.pass == 2)
4693 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4694 }
4695 break;
4696
4697 case 276:
4698 /* Line 1792 of yacc.c */
4699 #line 1535 "conf_parser.y"
4700 {
4701 if (conf_parser_ctx.pass == 2)
4702 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4703 }
4704 break;
4705
4706 case 277:
4707 /* Line 1792 of yacc.c */
4708 #line 1539 "conf_parser.y"
4709 {
4710 if (conf_parser_ctx.pass == 2)
4711 block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4712 }
4713 break;
4714
4715 case 278:
4716 /* Line 1792 of yacc.c */
4717 #line 1543 "conf_parser.y"
4718 {
4719 if (conf_parser_ctx.pass == 2)
4720 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4721 }
4722 break;
4723
4724 case 279:
4725 /* Line 1792 of yacc.c */
4726 #line 1547 "conf_parser.y"
4727 {
4728 if (conf_parser_ctx.pass == 2)
4729 block_state.flags.value |= CONF_FLAGS_WEBIRC;
4730 }
4731 break;
4732
4733 case 280:
4734 /* Line 1792 of yacc.c */
4735 #line 1551 "conf_parser.y"
4736 {
4737 if (conf_parser_ctx.pass == 2)
4738 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4739 }
4740 break;
4741
4742 case 281:
4743 /* Line 1792 of yacc.c */
4744 #line 1557 "conf_parser.y"
4745 {
4746 if (conf_parser_ctx.pass != 2)
4747 break;
4748
4749 if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
4750 {
4751 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4752 block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4753 }
4754 else
4755 ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4756 }
4757 break;
4758
4759 case 282:
4760 /* Line 1792 of yacc.c */
4761 #line 1571 "conf_parser.y"
4762 {
4763 if (conf_parser_ctx.pass != 2)
4764 break;
4765
4766 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4767 block_state.flags.value |= CONF_FLAGS_REDIR;
4768 }
4769 break;
4770
4771 case 283:
4772 /* Line 1792 of yacc.c */
4773 #line 1580 "conf_parser.y"
4774 {
4775 if (conf_parser_ctx.pass != 2)
4776 break;
4777
4778 block_state.flags.value |= CONF_FLAGS_REDIR;
4779 block_state.port.value = (yyvsp[(3) - (4)].number);
4780 }
4781 break;
4782
4783 case 284:
4784 /* Line 1792 of yacc.c */
4785 #line 1593 "conf_parser.y"
4786 {
4787 if (conf_parser_ctx.pass != 2)
4788 break;
4789
4790 reset_block_state();
4791 strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4792 }
4793 break;
4794
4795 case 292:
4796 /* Line 1792 of yacc.c */
4797 #line 1605 "conf_parser.y"
4798 {
4799 if (conf_parser_ctx.pass == 2)
4800 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4801 }
4802 break;
4803
4804 case 293:
4805 /* Line 1792 of yacc.c */
4806 #line 1611 "conf_parser.y"
4807 {
4808 if (conf_parser_ctx.pass != 2)
4809 break;
4810
4811 if (IsChanPrefix(*yylval.string))
4812 create_channel_resv(yylval.string, block_state.rpass.buf, 1);
4813 }
4814 break;
4815
4816 case 294:
4817 /* Line 1792 of yacc.c */
4818 #line 1620 "conf_parser.y"
4819 {
4820 if (conf_parser_ctx.pass == 2)
4821 create_nick_resv(yylval.string, block_state.rpass.buf, 1);
4822 }
4823 break;
4824
4825 case 300:
4826 /* Line 1792 of yacc.c */
4827 #line 1634 "conf_parser.y"
4828 {
4829 if (conf_parser_ctx.pass == 2)
4830 {
4831 if (valid_servname(yylval.string))
4832 {
4833 struct MaskItem *conf = conf_make(CONF_SERVICE);
4834 conf->name = xstrdup(yylval.string);
4835 }
4836 }
4837 }
4838 break;
4839
4840 case 301:
4841 /* Line 1792 of yacc.c */
4842 #line 1649 "conf_parser.y"
4843 {
4844 if (conf_parser_ctx.pass != 2)
4845 break;
4846
4847 reset_block_state();
4848
4849 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4850 strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4851 strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4852 block_state.flags.value = SHARED_ALL;
4853 }
4854 break;
4855
4856 case 302:
4857 /* Line 1792 of yacc.c */
4858 #line 1660 "conf_parser.y"
4859 {
4860 struct MaskItem *conf = NULL;
4861
4862 if (conf_parser_ctx.pass != 2)
4863 break;
4864
4865 conf = conf_make(CONF_ULINE);
4866 conf->flags = block_state.flags.value;
4867 conf->name = xstrdup(block_state.name.buf);
4868 conf->user = xstrdup(block_state.user.buf);
4869 conf->user = xstrdup(block_state.host.buf);
4870 }
4871 break;
4872
4873 case 309:
4874 /* Line 1792 of yacc.c */
4875 #line 1677 "conf_parser.y"
4876 {
4877 if (conf_parser_ctx.pass == 2)
4878 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4879 }
4880 break;
4881
4882 case 310:
4883 /* Line 1792 of yacc.c */
4884 #line 1683 "conf_parser.y"
4885 {
4886 if (conf_parser_ctx.pass == 2)
4887 {
4888 struct split_nuh_item nuh;
4889
4890 nuh.nuhmask = yylval.string;
4891 nuh.nickptr = NULL;
4892 nuh.userptr = block_state.user.buf;
4893 nuh.hostptr = block_state.host.buf;
4894
4895 nuh.nicksize = 0;
4896 nuh.usersize = sizeof(block_state.user.buf);
4897 nuh.hostsize = sizeof(block_state.host.buf);
4898
4899 split_nuh(&nuh);
4900 }
4901 }
4902 break;
4903
4904 case 311:
4905 /* Line 1792 of yacc.c */
4906 #line 1702 "conf_parser.y"
4907 {
4908 if (conf_parser_ctx.pass == 2)
4909 block_state.flags.value = 0;
4910 }
4911 break;
4912
4913 case 315:
4914 /* Line 1792 of yacc.c */
4915 #line 1709 "conf_parser.y"
4916 {
4917 if (conf_parser_ctx.pass == 2)
4918 block_state.flags.value |= SHARED_KLINE;
4919 }
4920 break;
4921
4922 case 316:
4923 /* Line 1792 of yacc.c */
4924 #line 1713 "conf_parser.y"
4925 {
4926 if (conf_parser_ctx.pass == 2)
4927 block_state.flags.value |= SHARED_UNKLINE;
4928 }
4929 break;
4930
4931 case 317:
4932 /* Line 1792 of yacc.c */
4933 #line 1717 "conf_parser.y"
4934 {
4935 if (conf_parser_ctx.pass == 2)
4936 block_state.flags.value |= SHARED_DLINE;
4937 }
4938 break;
4939
4940 case 318:
4941 /* Line 1792 of yacc.c */
4942 #line 1721 "conf_parser.y"
4943 {
4944 if (conf_parser_ctx.pass == 2)
4945 block_state.flags.value |= SHARED_UNDLINE;
4946 }
4947 break;
4948
4949 case 319:
4950 /* Line 1792 of yacc.c */
4951 #line 1725 "conf_parser.y"
4952 {
4953 if (conf_parser_ctx.pass == 2)
4954 block_state.flags.value |= SHARED_XLINE;
4955 }
4956 break;
4957
4958 case 320:
4959 /* Line 1792 of yacc.c */
4960 #line 1729 "conf_parser.y"
4961 {
4962 if (conf_parser_ctx.pass == 2)
4963 block_state.flags.value |= SHARED_UNXLINE;
4964 }
4965 break;
4966
4967 case 321:
4968 /* Line 1792 of yacc.c */
4969 #line 1733 "conf_parser.y"
4970 {
4971 if (conf_parser_ctx.pass == 2)
4972 block_state.flags.value |= SHARED_RESV;
4973 }
4974 break;
4975
4976 case 322:
4977 /* Line 1792 of yacc.c */
4978 #line 1737 "conf_parser.y"
4979 {
4980 if (conf_parser_ctx.pass == 2)
4981 block_state.flags.value |= SHARED_UNRESV;
4982 }
4983 break;
4984
4985 case 323:
4986 /* Line 1792 of yacc.c */
4987 #line 1741 "conf_parser.y"
4988 {
4989 if (conf_parser_ctx.pass == 2)
4990 block_state.flags.value |= SHARED_LOCOPS;
4991 }
4992 break;
4993
4994 case 324:
4995 /* Line 1792 of yacc.c */
4996 #line 1745 "conf_parser.y"
4997 {
4998 if (conf_parser_ctx.pass == 2)
4999 block_state.flags.value = SHARED_ALL;
5000 }
5001 break;
5002
5003 case 325:
5004 /* Line 1792 of yacc.c */
5005 #line 1754 "conf_parser.y"
5006 {
5007 if (conf_parser_ctx.pass != 2)
5008 break;
5009
5010 reset_block_state();
5011
5012 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5013 block_state.flags.value = SHARED_ALL;
5014 }
5015 break;
5016
5017 case 326:
5018 /* Line 1792 of yacc.c */
5019 #line 1763 "conf_parser.y"
5020 {
5021 struct MaskItem *conf = NULL;
5022
5023 if (conf_parser_ctx.pass != 2)
5024 break;
5025
5026 conf = conf_make(CONF_CLUSTER);
5027 conf->flags = block_state.flags.value;
5028 conf->name = xstrdup(block_state.name.buf);
5029 }
5030 break;
5031
5032 case 332:
5033 /* Line 1792 of yacc.c */
5034 #line 1778 "conf_parser.y"
5035 {
5036 if (conf_parser_ctx.pass == 2)
5037 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5038 }
5039 break;
5040
5041 case 333:
5042 /* Line 1792 of yacc.c */
5043 #line 1784 "conf_parser.y"
5044 {
5045 if (conf_parser_ctx.pass == 2)
5046 block_state.flags.value = 0;
5047 }
5048 break;
5049
5050 case 337:
5051 /* Line 1792 of yacc.c */
5052 #line 1791 "conf_parser.y"
5053 {
5054 if (conf_parser_ctx.pass == 2)
5055 block_state.flags.value |= SHARED_KLINE;
5056 }
5057 break;
5058
5059 case 338:
5060 /* Line 1792 of yacc.c */
5061 #line 1795 "conf_parser.y"
5062 {
5063 if (conf_parser_ctx.pass == 2)
5064 block_state.flags.value |= SHARED_UNKLINE;
5065 }
5066 break;
5067
5068 case 339:
5069 /* Line 1792 of yacc.c */
5070 #line 1799 "conf_parser.y"
5071 {
5072 if (conf_parser_ctx.pass == 2)
5073 block_state.flags.value |= SHARED_DLINE;
5074 }
5075 break;
5076
5077 case 340:
5078 /* Line 1792 of yacc.c */
5079 #line 1803 "conf_parser.y"
5080 {
5081 if (conf_parser_ctx.pass == 2)
5082 block_state.flags.value |= SHARED_UNDLINE;
5083 }
5084 break;
5085
5086 case 341:
5087 /* Line 1792 of yacc.c */
5088 #line 1807 "conf_parser.y"
5089 {
5090 if (conf_parser_ctx.pass == 2)
5091 block_state.flags.value |= SHARED_XLINE;
5092 }
5093 break;
5094
5095 case 342:
5096 /* Line 1792 of yacc.c */
5097 #line 1811 "conf_parser.y"
5098 {
5099 if (conf_parser_ctx.pass == 2)
5100 block_state.flags.value |= SHARED_UNXLINE;
5101 }
5102 break;
5103
5104 case 343:
5105 /* Line 1792 of yacc.c */
5106 #line 1815 "conf_parser.y"
5107 {
5108 if (conf_parser_ctx.pass == 2)
5109 block_state.flags.value |= SHARED_RESV;
5110 }
5111 break;
5112
5113 case 344:
5114 /* Line 1792 of yacc.c */
5115 #line 1819 "conf_parser.y"
5116 {
5117 if (conf_parser_ctx.pass == 2)
5118 block_state.flags.value |= SHARED_UNRESV;
5119 }
5120 break;
5121
5122 case 345:
5123 /* Line 1792 of yacc.c */
5124 #line 1823 "conf_parser.y"
5125 {
5126 if (conf_parser_ctx.pass == 2)
5127 block_state.flags.value |= SHARED_LOCOPS;
5128 }
5129 break;
5130
5131 case 346:
5132 /* Line 1792 of yacc.c */
5133 #line 1827 "conf_parser.y"
5134 {
5135 if (conf_parser_ctx.pass == 2)
5136 block_state.flags.value = SHARED_ALL;
5137 }
5138 break;
5139
5140 case 347:
5141 /* Line 1792 of yacc.c */
5142 #line 1836 "conf_parser.y"
5143 {
5144
5145 if (conf_parser_ctx.pass != 2)
5146 break;
5147
5148 reset_block_state();
5149 block_state.port.value = PORTNUM;
5150 }
5151 break;
5152
5153 case 348:
5154 /* Line 1792 of yacc.c */
5155 #line 1844 "conf_parser.y"
5156 {
5157 struct MaskItem *conf = NULL;
5158 struct addrinfo hints, *res;
5159
5160 if (conf_parser_ctx.pass != 2)
5161 break;
5162
5163 if (!block_state.name.buf[0] ||
5164 !block_state.host.buf[0])
5165 break;
5166
5167 if (!(block_state.rpass.buf[0] ||
5168 block_state.spass.buf[0]))
5169 break;
5170
5171 if (has_wildcards(block_state.name.buf) ||
5172 has_wildcards(block_state.host.buf))
5173 break;
5174
5175 conf = conf_make(CONF_SERVER);
5176 conf->port = block_state.port.value;
5177 conf->flags = block_state.flags.value;
5178 conf->aftype = block_state.aftype.value;
5179 conf->host = xstrdup(block_state.host.buf);
5180 conf->name = xstrdup(block_state.name.buf);
5181 conf->passwd = xstrdup(block_state.rpass.buf);
5182 conf->spasswd = xstrdup(block_state.spass.buf);
5183 conf->cipher_list = xstrdup(block_state.ciph.buf);
5184
5185 dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5186 dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5187
5188 if (block_state.bind.buf[0])
5189 {
5190 memset(&hints, 0, sizeof(hints));
5191
5192 hints.ai_family = AF_UNSPEC;
5193 hints.ai_socktype = SOCK_STREAM;
5194 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5195
5196 if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5197 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5198 else
5199 {
5200 assert(res != NULL);
5201
5202 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5203 conf->bind.ss.ss_family = res->ai_family;
5204 conf->bind.ss_len = res->ai_addrlen;
5205 freeaddrinfo(res);
5206 }
5207 }
5208
5209 conf_add_class_to_conf(conf, block_state.class.buf);
5210 lookup_confhost(conf);
5211 }
5212 break;
5213
5214 case 365:
5215 /* Line 1792 of yacc.c */
5216 #line 1910 "conf_parser.y"
5217 {
5218 if (conf_parser_ctx.pass == 2)
5219 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5220 }
5221 break;
5222
5223 case 366:
5224 /* Line 1792 of yacc.c */
5225 #line 1916 "conf_parser.y"
5226 {
5227 if (conf_parser_ctx.pass == 2)
5228 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5229 }
5230 break;
5231
5232 case 367:
5233 /* Line 1792 of yacc.c */
5234 #line 1922 "conf_parser.y"
5235 {
5236 if (conf_parser_ctx.pass == 2)
5237 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5238 }
5239 break;
5240
5241 case 368:
5242 /* Line 1792 of yacc.c */
5243 #line 1928 "conf_parser.y"
5244 {
5245 if (conf_parser_ctx.pass != 2)
5246 break;
5247
5248 if ((yyvsp[(3) - (4)].string)[0] == ':')
5249 yyerror("Server passwords cannot begin with a colon");
5250 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5251 yyerror("Server passwords cannot contain spaces");
5252 else
5253 strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5254 }
5255 break;
5256
5257 case 369:
5258 /* Line 1792 of yacc.c */
5259 #line 1941 "conf_parser.y"
5260 {
5261 if (conf_parser_ctx.pass != 2)
5262 break;
5263
5264 if ((yyvsp[(3) - (4)].string)[0] == ':')
5265 yyerror("Server passwords cannot begin with a colon");
5266 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5267 yyerror("Server passwords cannot contain spaces");
5268 else
5269 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5270 }
5271 break;
5272
5273 case 370:
5274 /* Line 1792 of yacc.c */
5275 #line 1954 "conf_parser.y"
5276 {
5277 if (conf_parser_ctx.pass == 2)
5278 block_state.port.value = (yyvsp[(3) - (4)].number);
5279 }
5280 break;
5281
5282 case 371:
5283 /* Line 1792 of yacc.c */
5284 #line 1960 "conf_parser.y"
5285 {
5286 if (conf_parser_ctx.pass == 2)
5287 block_state.aftype.value = AF_INET;
5288 }
5289 break;
5290
5291 case 372:
5292 /* Line 1792 of yacc.c */
5293 #line 1964 "conf_parser.y"
5294 {
5295 #ifdef IPV6
5296 if (conf_parser_ctx.pass == 2)
5297 block_state.aftype.value = AF_INET6;
5298 #endif
5299 }
5300 break;
5301
5302 case 373:
5303 /* Line 1792 of yacc.c */
5304 #line 1972 "conf_parser.y"
5305 {
5306 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5307 }
5308 break;
5309
5310 case 377:
5311 /* Line 1792 of yacc.c */
5312 #line 1978 "conf_parser.y"
5313 {
5314 if (conf_parser_ctx.pass == 2)
5315 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5316 }
5317 break;
5318
5319 case 378:
5320 /* Line 1792 of yacc.c */
5321 #line 1982 "conf_parser.y"
5322 {
5323 if (conf_parser_ctx.pass == 2)
5324 block_state.flags.value |= CONF_FLAGS_SSL;
5325 }
5326 break;
5327
5328 case 379:
5329 /* Line 1792 of yacc.c */
5330 #line 1988 "conf_parser.y"
5331 {
5332 if (conf_parser_ctx.pass == 2)
5333 {
5334 if (yylval.number)
5335 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5336 else
5337 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5338 }
5339 }
5340 break;
5341
5342 case 380:
5343 /* Line 1792 of yacc.c */
5344 #line 1999 "conf_parser.y"
5345 {
5346 if (conf_parser_ctx.pass == 2)
5347 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5348 }
5349 break;
5350
5351 case 381:
5352 /* Line 1792 of yacc.c */
5353 #line 2005 "conf_parser.y"
5354 {
5355 if (conf_parser_ctx.pass == 2)
5356 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5357 }
5358 break;
5359
5360 case 382:
5361 /* Line 1792 of yacc.c */
5362 #line 2011 "conf_parser.y"
5363 {
5364 if (conf_parser_ctx.pass == 2)
5365 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5366 }
5367 break;
5368
5369 case 383:
5370 /* Line 1792 of yacc.c */
5371 #line 2017 "conf_parser.y"
5372 {
5373 #ifdef HAVE_LIBCRYPTO
5374 if (conf_parser_ctx.pass == 2)
5375 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5376 #else
5377 if (conf_parser_ctx.pass == 2)
5378 yyerror("Ignoring connect::ciphers -- no OpenSSL support");
5379 #endif
5380 }
5381 break;
5382
5383 case 384:
5384 /* Line 1792 of yacc.c */
5385 #line 2032 "conf_parser.y"
5386 {
5387 if (conf_parser_ctx.pass == 2)
5388 reset_block_state();
5389 }
5390 break;
5391
5392 case 385:
5393 /* Line 1792 of yacc.c */
5394 #line 2036 "conf_parser.y"
5395 {
5396 struct MaskItem *conf = NULL;
5397
5398 if (conf_parser_ctx.pass != 2)
5399 break;
5400
5401 if (!block_state.user.buf[0] ||
5402 !block_state.host.buf[0])
5403 break;
5404
5405
5406 if (block_state.port.value == 1)
5407 {
5408 #ifdef HAVE_LIBPCRE
5409 void *exp_user = NULL;
5410 void *exp_host = NULL;
5411 const char *errptr = NULL;
5412
5413 if (!(exp_user = ircd_pcre_compile(block_state.user.buf, &errptr)) ||
5414 !(exp_host = ircd_pcre_compile(block_state.host.buf, &errptr)))
5415 {
5416 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
5417 errptr);
5418 break;
5419 }
5420
5421 conf = conf_make(CONF_RKLINE);
5422 conf->regexuser = exp_user;
5423 conf->regexhost = exp_host;
5424
5425 conf->user = xstrdup(block_state.user.buf);
5426 conf->host = xstrdup(block_state.host.buf);
5427
5428 if (block_state.rpass.buf[0])
5429 conf->reason = xstrdup(block_state.rpass.buf);
5430 else
5431 conf->reason = xstrdup(CONF_NOREASON);
5432 #else
5433 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
5434 break;
5435 #endif
5436 }
5437 else
5438 {
5439 conf = conf_make(CONF_KLINE);
5440
5441 conf->user = xstrdup(block_state.user.buf);
5442 conf->host = xstrdup(block_state.host.buf);
5443
5444 if (block_state.rpass.buf[0])
5445 conf->reason = xstrdup(block_state.rpass.buf);
5446 else
5447 conf->reason = xstrdup(CONF_NOREASON);
5448 add_conf_by_address(CONF_KLINE, conf);
5449 }
5450 }
5451 break;
5452
5453 case 386:
5454 /* Line 1792 of yacc.c */
5455 #line 2094 "conf_parser.y"
5456 {
5457 if (conf_parser_ctx.pass == 2)
5458 block_state.port.value = 0;
5459 }
5460 break;
5461
5462 case 390:
5463 /* Line 1792 of yacc.c */
5464 #line 2101 "conf_parser.y"
5465 {
5466 if (conf_parser_ctx.pass == 2)
5467 block_state.port.value = 1;
5468 }
5469 break;
5470
5471 case 397:
5472 /* Line 1792 of yacc.c */
5473 #line 2110 "conf_parser.y"
5474 {
5475
5476 if (conf_parser_ctx.pass == 2)
5477 {
5478 struct split_nuh_item nuh;
5479
5480 nuh.nuhmask = yylval.string;
5481 nuh.nickptr = NULL;
5482 nuh.userptr = block_state.user.buf;
5483 nuh.hostptr = block_state.host.buf;
5484
5485 nuh.nicksize = 0;
5486 nuh.usersize = sizeof(block_state.user.buf);
5487 nuh.hostsize = sizeof(block_state.host.buf);
5488
5489 split_nuh(&nuh);
5490 }
5491 }
5492 break;
5493
5494 case 398:
5495 /* Line 1792 of yacc.c */
5496 #line 2130 "conf_parser.y"
5497 {
5498 if (conf_parser_ctx.pass == 2)
5499 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5500 }
5501 break;
5502
5503 case 399:
5504 /* Line 1792 of yacc.c */
5505 #line 2139 "conf_parser.y"
5506 {
5507 if (conf_parser_ctx.pass == 2)
5508 reset_block_state();
5509 }
5510 break;
5511
5512 case 400:
5513 /* Line 1792 of yacc.c */
5514 #line 2143 "conf_parser.y"
5515 {
5516 struct MaskItem *conf = NULL;
5517
5518 if (conf_parser_ctx.pass != 2)
5519 break;
5520
5521 if (!block_state.addr.buf[0])
5522 break;
5523
5524 if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5525 {
5526 conf = conf_make(CONF_DLINE);
5527 conf->host = xstrdup(block_state.addr.buf);
5528
5529 if (block_state.rpass.buf[0])
5530 conf->reason = xstrdup(block_state.rpass.buf);
5531 else
5532 conf->reason = xstrdup(CONF_NOREASON);
5533 add_conf_by_address(CONF_DLINE, conf);
5534 }
5535 }
5536 break;
5537
5538 case 406:
5539 /* Line 1792 of yacc.c */
5540 #line 2169 "conf_parser.y"
5541 {
5542 if (conf_parser_ctx.pass == 2)
5543 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5544 }
5545 break;
5546
5547 case 407:
5548 /* Line 1792 of yacc.c */
5549 #line 2175 "conf_parser.y"
5550 {
5551 if (conf_parser_ctx.pass == 2)
5552 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5553 }
5554 break;
5555
5556 case 413:
5557 /* Line 1792 of yacc.c */
5558 #line 2189 "conf_parser.y"
5559 {
5560 if (conf_parser_ctx.pass == 2)
5561 {
5562 if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5563 {
5564 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5565 conf->host = xstrdup(yylval.string);
5566
5567 add_conf_by_address(CONF_EXEMPT, conf);
5568 }
5569 }
5570 }
5571 break;
5572
5573 case 414:
5574 /* Line 1792 of yacc.c */
5575 #line 2206 "conf_parser.y"
5576 {
5577 if (conf_parser_ctx.pass == 2)
5578 reset_block_state();
5579 }
5580 break;
5581
5582 case 415:
5583 /* Line 1792 of yacc.c */
5584 #line 2210 "conf_parser.y"
5585 {
5586 struct MaskItem *conf = NULL;
5587
5588 if (conf_parser_ctx.pass != 2)
5589 break;
5590
5591 if (!block_state.name.buf[0])
5592 break;
5593
5594 if (block_state.port.value == 1)
5595 {
5596 #ifdef HAVE_LIBPCRE
5597 void *exp_p = NULL;
5598 const char *errptr = NULL;
5599
5600 if (!(exp_p = ircd_pcre_compile(block_state.name.buf, &errptr)))
5601 {
5602 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
5603 errptr);
5604 break;
5605 }
5606
5607 conf = conf_make(CONF_RXLINE);
5608 conf->regexuser = exp_p;
5609 #else
5610 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
5611 break;
5612 #endif
5613 }
5614 else
5615 conf = conf_make(CONF_XLINE);
5616
5617 conf->name = xstrdup(block_state.name.buf);
5618
5619 if (block_state.rpass.buf[0])
5620 conf->reason = xstrdup(block_state.rpass.buf);
5621 else
5622 conf->reason = xstrdup(CONF_NOREASON);
5623 }
5624 break;
5625
5626 case 416:
5627 /* Line 1792 of yacc.c */
5628 #line 2251 "conf_parser.y"
5629 {
5630 if (conf_parser_ctx.pass == 2)
5631 block_state.port.value = 0;
5632 }
5633 break;
5634
5635 case 420:
5636 /* Line 1792 of yacc.c */
5637 #line 2258 "conf_parser.y"
5638 {
5639 if (conf_parser_ctx.pass == 2)
5640 block_state.port.value = 1;
5641 }
5642 break;
5643
5644 case 427:
5645 /* Line 1792 of yacc.c */
5646 #line 2267 "conf_parser.y"
5647 {
5648 if (conf_parser_ctx.pass == 2)
5649 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5650 }
5651 break;
5652
5653 case 428:
5654 /* Line 1792 of yacc.c */
5655 #line 2273 "conf_parser.y"
5656 {
5657 if (conf_parser_ctx.pass == 2)
5658 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5659 }
5660 break;
5661
5662 case 482:
5663 /* Line 1792 of yacc.c */
5664 #line 2318 "conf_parser.y"
5665 {
5666 ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
5667 }
5668 break;
5669
5670 case 483:
5671 /* Line 1792 of yacc.c */
5672 #line 2323 "conf_parser.y"
5673 {
5674 if (conf_parser_ctx.pass == 2)
5675 ConfigFileEntry.glines = yylval.number;
5676 }
5677 break;
5678
5679 case 484:
5680 /* Line 1792 of yacc.c */
5681 #line 2329 "conf_parser.y"
5682 {
5683 if (conf_parser_ctx.pass == 2)
5684 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
5685 }
5686 break;
5687
5688 case 485:
5689 /* Line 1792 of yacc.c */
5690 #line 2335 "conf_parser.y"
5691 {
5692 if (conf_parser_ctx.pass == 2)
5693 ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
5694 }
5695 break;
5696
5697 case 486:
5698 /* Line 1792 of yacc.c */
5699 #line 2341 "conf_parser.y"
5700 {
5701 ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
5702 }
5703 break;
5704
5705 case 487:
5706 /* Line 1792 of yacc.c */
5707 #line 2346 "conf_parser.y"
5708 {
5709 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
5710 }
5711 break;
5712
5713 case 488:
5714 /* Line 1792 of yacc.c */
5715 #line 2351 "conf_parser.y"
5716 {
5717 ConfigFileEntry.tkline_expire_notices = yylval.number;
5718 }
5719 break;
5720
5721 case 489:
5722 /* Line 1792 of yacc.c */
5723 #line 2356 "conf_parser.y"
5724 {
5725 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
5726 }
5727 break;
5728
5729 case 490:
5730 /* Line 1792 of yacc.c */
5731 #line 2361 "conf_parser.y"
5732 {
5733 ConfigFileEntry.hide_spoof_ips = yylval.number;
5734 }
5735 break;
5736
5737 case 491:
5738 /* Line 1792 of yacc.c */
5739 #line 2366 "conf_parser.y"
5740 {
5741 ConfigFileEntry.ignore_bogus_ts = yylval.number;
5742 }
5743 break;
5744
5745 case 492:
5746 /* Line 1792 of yacc.c */
5747 #line 2371 "conf_parser.y"
5748 {
5749 ConfigFileEntry.disable_remote = yylval.number;
5750 }
5751 break;
5752
5753 case 493:
5754 /* Line 1792 of yacc.c */
5755 #line 2376 "conf_parser.y"
5756 {
5757 ConfigFileEntry.failed_oper_notice = yylval.number;
5758 }
5759 break;
5760
5761 case 494:
5762 /* Line 1792 of yacc.c */
5763 #line 2381 "conf_parser.y"
5764 {
5765 ConfigFileEntry.anti_nick_flood = yylval.number;
5766 }
5767 break;
5768
5769 case 495:
5770 /* Line 1792 of yacc.c */
5771 #line 2386 "conf_parser.y"
5772 {
5773 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5774 }
5775 break;
5776
5777 case 496:
5778 /* Line 1792 of yacc.c */
5779 #line 2391 "conf_parser.y"
5780 {
5781 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
5782 }
5783 break;
5784
5785 case 497:
5786 /* Line 1792 of yacc.c */
5787 #line 2396 "conf_parser.y"
5788 {
5789 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
5790 }
5791 break;
5792
5793 case 498:
5794 /* Line 1792 of yacc.c */
5795 #line 2401 "conf_parser.y"
5796 {
5797 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
5798 }
5799 break;
5800
5801 case 499:
5802 /* Line 1792 of yacc.c */
5803 #line 2406 "conf_parser.y"
5804 {
5805 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
5806 }
5807 break;
5808
5809 case 500:
5810 /* Line 1792 of yacc.c */
5811 #line 2411 "conf_parser.y"
5812 {
5813 if (conf_parser_ctx.pass == 2)
5814 ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
5815 }
5816 break;
5817
5818 case 501:
5819 /* Line 1792 of yacc.c */
5820 #line 2417 "conf_parser.y"
5821 {
5822 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
5823 {
5824 ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
5825 ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
5826 ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
5827 exit(0);
5828 }
5829 }
5830 break;
5831
5832 case 502:
5833 /* Line 1792 of yacc.c */
5834 #line 2428 "conf_parser.y"
5835 {
5836 ConfigFileEntry.invisible_on_connect = yylval.number;
5837 }
5838 break;
5839
5840 case 503:
5841 /* Line 1792 of yacc.c */
5842 #line 2433 "conf_parser.y"
5843 {
5844 ConfigFileEntry.warn_no_nline = yylval.number;
5845 }
5846 break;
5847
5848 case 504:
5849 /* Line 1792 of yacc.c */
5850 #line 2438 "conf_parser.y"
5851 {
5852 ConfigFileEntry.stats_e_disabled = yylval.number;
5853 }
5854 break;
5855
5856 case 505:
5857 /* Line 1792 of yacc.c */
5858 #line 2443 "conf_parser.y"
5859 {
5860 ConfigFileEntry.stats_o_oper_only = yylval.number;
5861 }
5862 break;
5863
5864 case 506:
5865 /* Line 1792 of yacc.c */
5866 #line 2448 "conf_parser.y"
5867 {
5868 ConfigFileEntry.stats_P_oper_only = yylval.number;
5869 }
5870 break;
5871
5872 case 507:
5873 /* Line 1792 of yacc.c */
5874 #line 2453 "conf_parser.y"
5875 {
5876 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5877 }
5878 break;
5879
5880 case 508:
5881 /* Line 1792 of yacc.c */
5882 #line 2456 "conf_parser.y"
5883 {
5884 ConfigFileEntry.stats_k_oper_only = 1;
5885 }
5886 break;
5887
5888 case 509:
5889 /* Line 1792 of yacc.c */
5890 #line 2461 "conf_parser.y"
5891 {
5892 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5893 }
5894 break;
5895
5896 case 510:
5897 /* Line 1792 of yacc.c */
5898 #line 2464 "conf_parser.y"
5899 {
5900 ConfigFileEntry.stats_i_oper_only = 1;
5901 }
5902 break;
5903
5904 case 511:
5905 /* Line 1792 of yacc.c */
5906 #line 2469 "conf_parser.y"
5907 {
5908 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
5909 }
5910 break;
5911
5912 case 512:
5913 /* Line 1792 of yacc.c */
5914 #line 2474 "conf_parser.y"
5915 {
5916 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
5917 }
5918 break;
5919
5920 case 513:
5921 /* Line 1792 of yacc.c */
5922 #line 2479 "conf_parser.y"
5923 {
5924 ConfigFileEntry.opers_bypass_callerid = yylval.number;
5925 }
5926 break;
5927
5928 case 514:
5929 /* Line 1792 of yacc.c */
5930 #line 2484 "conf_parser.y"
5931 {
5932 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
5933 }
5934 break;
5935
5936 case 515:
5937 /* Line 1792 of yacc.c */
5938 #line 2489 "conf_parser.y"
5939 {
5940 ConfigFileEntry.short_motd = yylval.number;
5941 }
5942 break;
5943
5944 case 516:
5945 /* Line 1792 of yacc.c */
5946 #line 2494 "conf_parser.y"
5947 {
5948 ConfigFileEntry.no_oper_flood = yylval.number;
5949 }
5950 break;
5951
5952 case 517:
5953 /* Line 1792 of yacc.c */
5954 #line 2499 "conf_parser.y"
5955 {
5956 ConfigFileEntry.true_no_oper_flood = yylval.number;
5957 }
5958 break;
5959
5960 case 518:
5961 /* Line 1792 of yacc.c */
5962 #line 2504 "conf_parser.y"
5963 {
5964 ConfigFileEntry.oper_pass_resv = yylval.number;
5965 }
5966 break;
5967
5968 case 519:
5969 /* Line 1792 of yacc.c */
5970 #line 2509 "conf_parser.y"
5971 {
5972 if (conf_parser_ctx.pass == 2)
5973 {
5974 if (strlen(yylval.string) > LOCALE_LENGTH-2)
5975 yylval.string[LOCALE_LENGTH-1] = '\0';
5976
5977 set_locale(yylval.string);
5978 }
5979 }
5980 break;
5981
5982 case 520:
5983 /* Line 1792 of yacc.c */
5984 #line 2520 "conf_parser.y"
5985 {
5986 ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
5987 }
5988 break;
5989
5990 case 521:
5991 /* Line 1792 of yacc.c */
5992 #line 2525 "conf_parser.y"
5993 {
5994 ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
5995 }
5996 break;
5997
5998 case 522:
5999 /* Line 1792 of yacc.c */
6000 #line 2530 "conf_parser.y"
6001 {
6002 ConfigFileEntry.use_egd = yylval.number;
6003 }
6004 break;
6005
6006 case 523:
6007 /* Line 1792 of yacc.c */
6008 #line 2535 "conf_parser.y"
6009 {
6010 if (conf_parser_ctx.pass == 2)
6011 {
6012 MyFree(ConfigFileEntry.egdpool_path);
6013 ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
6014 }
6015 }
6016 break;
6017
6018 case 524:
6019 /* Line 1792 of yacc.c */
6020 #line 2544 "conf_parser.y"
6021 {
6022 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6023 {
6024 MyFree(ConfigFileEntry.service_name);
6025 ConfigFileEntry.service_name = xstrdup(yylval.string);
6026 }
6027 }
6028 break;
6029
6030 case 525:
6031 /* Line 1792 of yacc.c */
6032 #line 2553 "conf_parser.y"
6033 {
6034 ConfigFileEntry.ping_cookie = yylval.number;
6035 }
6036 break;
6037
6038 case 526:
6039 /* Line 1792 of yacc.c */
6040 #line 2558 "conf_parser.y"
6041 {
6042 ConfigFileEntry.disable_auth = yylval.number;
6043 }
6044 break;
6045
6046 case 527:
6047 /* Line 1792 of yacc.c */
6048 #line 2563 "conf_parser.y"
6049 {
6050 ConfigFileEntry.throttle_time = yylval.number;
6051 }
6052 break;
6053
6054 case 528:
6055 /* Line 1792 of yacc.c */
6056 #line 2568 "conf_parser.y"
6057 {
6058 ConfigFileEntry.oper_umodes = 0;
6059 }
6060 break;
6061
6062 case 532:
6063 /* Line 1792 of yacc.c */
6064 #line 2574 "conf_parser.y"
6065 {
6066 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6067 }
6068 break;
6069
6070 case 533:
6071 /* Line 1792 of yacc.c */
6072 #line 2577 "conf_parser.y"
6073 {
6074 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6075 }
6076 break;
6077
6078 case 534:
6079 /* Line 1792 of yacc.c */
6080 #line 2580 "conf_parser.y"
6081 {
6082 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6083 }
6084 break;
6085
6086 case 535:
6087 /* Line 1792 of yacc.c */
6088 #line 2583 "conf_parser.y"
6089 {
6090 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6091 }
6092 break;
6093
6094 case 536:
6095 /* Line 1792 of yacc.c */
6096 #line 2586 "conf_parser.y"
6097 {
6098 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6099 }
6100 break;
6101
6102 case 537:
6103 /* Line 1792 of yacc.c */
6104 #line 2589 "conf_parser.y"
6105 {
6106 ConfigFileEntry.oper_umodes |= UMODE_FULL;
6107 }
6108 break;
6109
6110 case 538:
6111 /* Line 1792 of yacc.c */
6112 #line 2592 "conf_parser.y"
6113 {
6114 ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6115 }
6116 break;
6117
6118 case 539:
6119 /* Line 1792 of yacc.c */
6120 #line 2595 "conf_parser.y"
6121 {
6122 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6123 }
6124 break;
6125
6126 case 540:
6127 /* Line 1792 of yacc.c */
6128 #line 2598 "conf_parser.y"
6129 {
6130 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6131 }
6132 break;
6133
6134 case 541:
6135 /* Line 1792 of yacc.c */
6136 #line 2601 "conf_parser.y"
6137 {
6138 ConfigFileEntry.oper_umodes |= UMODE_REJ;
6139 }
6140 break;
6141
6142 case 542:
6143 /* Line 1792 of yacc.c */
6144 #line 2604 "conf_parser.y"
6145 {
6146 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6147 }
6148 break;
6149
6150 case 543:
6151 /* Line 1792 of yacc.c */
6152 #line 2607 "conf_parser.y"
6153 {
6154 ConfigFileEntry.oper_umodes |= UMODE_SPY;
6155 }
6156 break;
6157
6158 case 544:
6159 /* Line 1792 of yacc.c */
6160 #line 2610 "conf_parser.y"
6161 {
6162 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6163 }
6164 break;
6165
6166 case 545:
6167 /* Line 1792 of yacc.c */
6168 #line 2613 "conf_parser.y"
6169 {
6170 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6171 }
6172 break;
6173
6174 case 546:
6175 /* Line 1792 of yacc.c */
6176 #line 2616 "conf_parser.y"
6177 {
6178 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6179 }
6180 break;
6181
6182 case 547:
6183 /* Line 1792 of yacc.c */
6184 #line 2619 "conf_parser.y"
6185 {
6186 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6187 }
6188 break;
6189
6190 case 548:
6191 /* Line 1792 of yacc.c */
6192 #line 2622 "conf_parser.y"
6193 {
6194 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6195 }
6196 break;
6197
6198 case 549:
6199 /* Line 1792 of yacc.c */
6200 #line 2625 "conf_parser.y"
6201 {
6202 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6203 }
6204 break;
6205
6206 case 550:
6207 /* Line 1792 of yacc.c */
6208 #line 2628 "conf_parser.y"
6209 {
6210 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6211 }
6212 break;
6213
6214 case 551:
6215 /* Line 1792 of yacc.c */
6216 #line 2631 "conf_parser.y"
6217 {
6218 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6219 }
6220 break;
6221
6222 case 552:
6223 /* Line 1792 of yacc.c */
6224 #line 2636 "conf_parser.y"
6225 {
6226 ConfigFileEntry.oper_only_umodes = 0;
6227 }
6228 break;
6229
6230 case 556:
6231 /* Line 1792 of yacc.c */
6232 #line 2642 "conf_parser.y"
6233 {
6234 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6235 }
6236 break;
6237
6238 case 557:
6239 /* Line 1792 of yacc.c */
6240 #line 2645 "conf_parser.y"
6241 {
6242 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6243 }
6244 break;
6245
6246 case 558:
6247 /* Line 1792 of yacc.c */
6248 #line 2648 "conf_parser.y"
6249 {
6250 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6251 }
6252 break;
6253
6254 case 559:
6255 /* Line 1792 of yacc.c */
6256 #line 2651 "conf_parser.y"
6257 {
6258 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6259 }
6260 break;
6261
6262 case 560:
6263 /* Line 1792 of yacc.c */
6264 #line 2654 "conf_parser.y"
6265 {
6266 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6267 }
6268 break;
6269
6270 case 561:
6271 /* Line 1792 of yacc.c */
6272 #line 2657 "conf_parser.y"
6273 {
6274 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6275 }
6276 break;
6277
6278 case 562:
6279 /* Line 1792 of yacc.c */
6280 #line 2660 "conf_parser.y"
6281 {
6282 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6283 }
6284 break;
6285
6286 case 563:
6287 /* Line 1792 of yacc.c */
6288 #line 2663 "conf_parser.y"
6289 {
6290 ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6291 }
6292 break;
6293
6294 case 564:
6295 /* Line 1792 of yacc.c */
6296 #line 2666 "conf_parser.y"
6297 {
6298 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6299 }
6300 break;
6301
6302 case 565:
6303 /* Line 1792 of yacc.c */
6304 #line 2669 "conf_parser.y"
6305 {
6306 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6307 }
6308 break;
6309
6310 case 566:
6311 /* Line 1792 of yacc.c */
6312 #line 2672 "conf_parser.y"
6313 {
6314 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6315 }
6316 break;
6317
6318 case 567:
6319 /* Line 1792 of yacc.c */
6320 #line 2675 "conf_parser.y"
6321 {
6322 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6323 }
6324 break;
6325
6326 case 568:
6327 /* Line 1792 of yacc.c */
6328 #line 2678 "conf_parser.y"
6329 {
6330 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6331 }
6332 break;
6333
6334 case 569:
6335 /* Line 1792 of yacc.c */
6336 #line 2681 "conf_parser.y"
6337 {
6338 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6339 }
6340 break;
6341
6342 case 570:
6343 /* Line 1792 of yacc.c */
6344 #line 2684 "conf_parser.y"
6345 {
6346 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6347 }
6348 break;
6349
6350 case 571:
6351 /* Line 1792 of yacc.c */
6352 #line 2687 "conf_parser.y"
6353 {
6354 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6355 }
6356 break;
6357
6358 case 572:
6359 /* Line 1792 of yacc.c */
6360 #line 2690 "conf_parser.y"
6361 {
6362 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6363 }
6364 break;
6365
6366 case 573:
6367 /* Line 1792 of yacc.c */
6368 #line 2693 "conf_parser.y"
6369 {
6370 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6371 }
6372 break;
6373
6374 case 574:
6375 /* Line 1792 of yacc.c */
6376 #line 2696 "conf_parser.y"
6377 {
6378 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6379 }
6380 break;
6381
6382 case 575:
6383 /* Line 1792 of yacc.c */
6384 #line 2699 "conf_parser.y"
6385 {
6386 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6387 }
6388 break;
6389
6390 case 576:
6391 /* Line 1792 of yacc.c */
6392 #line 2704 "conf_parser.y"
6393 {
6394 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6395 }
6396 break;
6397
6398 case 577:
6399 /* Line 1792 of yacc.c */
6400 #line 2709 "conf_parser.y"
6401 {
6402 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6403 }
6404 break;
6405
6406 case 578:
6407 /* Line 1792 of yacc.c */
6408 #line 2714 "conf_parser.y"
6409 {
6410 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6411 }
6412 break;
6413
6414 case 597:
6415 /* Line 1792 of yacc.c */
6416 #line 2737 "conf_parser.y"
6417 {
6418 ConfigChannel.disable_fake_channels = yylval.number;
6419 }
6420 break;
6421
6422 case 598:
6423 /* Line 1792 of yacc.c */
6424 #line 2742 "conf_parser.y"
6425 {
6426 ConfigChannel.restrict_channels = yylval.number;
6427 }
6428 break;
6429
6430 case 599:
6431 /* Line 1792 of yacc.c */
6432 #line 2747 "conf_parser.y"
6433 {
6434 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6435 }
6436 break;
6437
6438 case 600:
6439 /* Line 1792 of yacc.c */
6440 #line 2752 "conf_parser.y"
6441 {
6442 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6443 }
6444 break;
6445
6446 case 601:
6447 /* Line 1792 of yacc.c */
6448 #line 2757 "conf_parser.y"
6449 {
6450 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6451 }
6452 break;
6453
6454 case 602:
6455 /* Line 1792 of yacc.c */
6456 #line 2762 "conf_parser.y"
6457 {
6458 ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
6459 }
6460 break;
6461
6462 case 603:
6463 /* Line 1792 of yacc.c */
6464 #line 2767 "conf_parser.y"
6465 {
6466 ConfigChannel.quiet_on_ban = yylval.number;
6467 }
6468 break;
6469
6470 case 604:
6471 /* Line 1792 of yacc.c */
6472 #line 2772 "conf_parser.y"
6473 {
6474 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
6475 }
6476 break;
6477
6478 case 605:
6479 /* Line 1792 of yacc.c */
6480 #line 2777 "conf_parser.y"
6481 {
6482 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
6483 }
6484 break;
6485
6486 case 606:
6487 /* Line 1792 of yacc.c */
6488 #line 2782 "conf_parser.y"
6489 {
6490 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
6491 }
6492 break;
6493
6494 case 607:
6495 /* Line 1792 of yacc.c */
6496 #line 2787 "conf_parser.y"
6497 {
6498 ConfigChannel.no_create_on_split = yylval.number;
6499 }
6500 break;
6501
6502 case 608:
6503 /* Line 1792 of yacc.c */
6504 #line 2792 "conf_parser.y"
6505 {
6506 ConfigChannel.no_join_on_split = yylval.number;
6507 }
6508 break;
6509
6510 case 609:
6511 /* Line 1792 of yacc.c */
6512 #line 2797 "conf_parser.y"
6513 {
6514 GlobalSetOptions.joinfloodcount = yylval.number;
6515 }
6516 break;
6517
6518 case 610:
6519 /* Line 1792 of yacc.c */
6520 #line 2802 "conf_parser.y"
6521 {
6522 GlobalSetOptions.joinfloodtime = yylval.number;
6523 }
6524 break;
6525
6526 case 621:
6527 /* Line 1792 of yacc.c */
6528 #line 2820 "conf_parser.y"
6529 {
6530 if (conf_parser_ctx.pass == 2)
6531 ConfigServerHide.flatten_links = yylval.number;
6532 }
6533 break;
6534
6535 case 622:
6536 /* Line 1792 of yacc.c */
6537 #line 2826 "conf_parser.y"
6538 {
6539 if (conf_parser_ctx.pass == 2)
6540 ConfigServerHide.hide_servers = yylval.number;
6541 }
6542 break;
6543
6544 case 623:
6545 /* Line 1792 of yacc.c */
6546 #line 2832 "conf_parser.y"
6547 {
6548 if (conf_parser_ctx.pass == 2)
6549 {
6550 MyFree(ConfigServerHide.hidden_name);
6551 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6552 }
6553 }
6554 break;
6555
6556 case 624:
6557 /* Line 1792 of yacc.c */
6558 #line 2841 "conf_parser.y"
6559 {
6560 if (conf_parser_ctx.pass == 2)
6561 {
6562 if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
6563 {
6564 eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
6565 ConfigServerHide.links_disabled = 0;
6566 }
6567
6568 ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
6569 }
6570 }
6571 break;
6572
6573 case 625:
6574 /* Line 1792 of yacc.c */
6575 #line 2855 "conf_parser.y"
6576 {
6577 if (conf_parser_ctx.pass == 2)
6578 ConfigServerHide.hidden = yylval.number;
6579 }
6580 break;
6581
6582 case 626:
6583 /* Line 1792 of yacc.c */
6584 #line 2861 "conf_parser.y"
6585 {
6586 if (conf_parser_ctx.pass == 2)
6587 ConfigServerHide.hide_server_ips = yylval.number;
6588 }
6589 break;
6590
6591
6592 /* Line 1792 of yacc.c */
6593 #line 6594 "conf_parser.c"
6594 default: break;
6595 }
6596 /* User semantic actions sometimes alter yychar, and that requires
6597 that yytoken be updated with the new translation. We take the
6598 approach of translating immediately before every use of yytoken.
6599 One alternative is translating here after every semantic action,
6600 but that translation would be missed if the semantic action invokes
6601 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6602 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6603 incorrect destructor might then be invoked immediately. In the
6604 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6605 to an incorrect destructor call or verbose syntax error message
6606 before the lookahead is translated. */
6607 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6608
6609 YYPOPSTACK (yylen);
6610 yylen = 0;
6611 YY_STACK_PRINT (yyss, yyssp);
6612
6613 *++yyvsp = yyval;
6614
6615 /* Now `shift' the result of the reduction. Determine what state
6616 that goes to, based on the state we popped back to and the rule
6617 number reduced by. */
6618
6619 yyn = yyr1[yyn];
6620
6621 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6622 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6623 yystate = yytable[yystate];
6624 else
6625 yystate = yydefgoto[yyn - YYNTOKENS];
6626
6627 goto yynewstate;
6628
6629
6630 /*------------------------------------.
6631 | yyerrlab -- here on detecting error |
6632 `------------------------------------*/
6633 yyerrlab:
6634 /* Make sure we have latest lookahead translation. See comments at
6635 user semantic actions for why this is necessary. */
6636 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6637
6638 /* If not already recovering from an error, report this error. */
6639 if (!yyerrstatus)
6640 {
6641 ++yynerrs;
6642 #if ! YYERROR_VERBOSE
6643 yyerror (YY_("syntax error"));
6644 #else
6645 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6646 yyssp, yytoken)
6647 {
6648 char const *yymsgp = YY_("syntax error");
6649 int yysyntax_error_status;
6650 yysyntax_error_status = YYSYNTAX_ERROR;
6651 if (yysyntax_error_status == 0)
6652 yymsgp = yymsg;
6653 else if (yysyntax_error_status == 1)
6654 {
6655 if (yymsg != yymsgbuf)
6656 YYSTACK_FREE (yymsg);
6657 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6658 if (!yymsg)
6659 {
6660 yymsg = yymsgbuf;
6661 yymsg_alloc = sizeof yymsgbuf;
6662 yysyntax_error_status = 2;
6663 }
6664 else
6665 {
6666 yysyntax_error_status = YYSYNTAX_ERROR;
6667 yymsgp = yymsg;
6668 }
6669 }
6670 yyerror (yymsgp);
6671 if (yysyntax_error_status == 2)
6672 goto yyexhaustedlab;
6673 }
6674 # undef YYSYNTAX_ERROR
6675 #endif
6676 }
6677
6678
6679
6680 if (yyerrstatus == 3)
6681 {
6682 /* If just tried and failed to reuse lookahead token after an
6683 error, discard it. */
6684
6685 if (yychar <= YYEOF)
6686 {
6687 /* Return failure if at end of input. */
6688 if (yychar == YYEOF)
6689 YYABORT;
6690 }
6691 else
6692 {
6693 yydestruct ("Error: discarding",
6694 yytoken, &yylval);
6695 yychar = YYEMPTY;
6696 }
6697 }
6698
6699 /* Else will try to reuse lookahead token after shifting the error
6700 token. */
6701 goto yyerrlab1;
6702
6703
6704 /*---------------------------------------------------.
6705 | yyerrorlab -- error raised explicitly by YYERROR. |
6706 `---------------------------------------------------*/
6707 yyerrorlab:
6708
6709 /* Pacify compilers like GCC when the user code never invokes
6710 YYERROR and the label yyerrorlab therefore never appears in user
6711 code. */
6712 if (/*CONSTCOND*/ 0)
6713 goto yyerrorlab;
6714
6715 /* Do not reclaim the symbols of the rule which action triggered
6716 this YYERROR. */
6717 YYPOPSTACK (yylen);
6718 yylen = 0;
6719 YY_STACK_PRINT (yyss, yyssp);
6720 yystate = *yyssp;
6721 goto yyerrlab1;
6722
6723
6724 /*-------------------------------------------------------------.
6725 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6726 `-------------------------------------------------------------*/
6727 yyerrlab1:
6728 yyerrstatus = 3; /* Each real token shifted decrements this. */
6729
6730 for (;;)
6731 {
6732 yyn = yypact[yystate];
6733 if (!yypact_value_is_default (yyn))
6734 {
6735 yyn += YYTERROR;
6736 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6737 {
6738 yyn = yytable[yyn];
6739 if (0 < yyn)
6740 break;
6741 }
6742 }
6743
6744 /* Pop the current state because it cannot handle the error token. */
6745 if (yyssp == yyss)
6746 YYABORT;
6747
6748
6749 yydestruct ("Error: popping",
6750 yystos[yystate], yyvsp);
6751 YYPOPSTACK (1);
6752 yystate = *yyssp;
6753 YY_STACK_PRINT (yyss, yyssp);
6754 }
6755
6756 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6757 *++yyvsp = yylval;
6758 YY_IGNORE_MAYBE_UNINITIALIZED_END
6759
6760
6761 /* Shift the error token. */
6762 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6763
6764 yystate = yyn;
6765 goto yynewstate;
6766
6767
6768 /*-------------------------------------.
6769 | yyacceptlab -- YYACCEPT comes here. |
6770 `-------------------------------------*/
6771 yyacceptlab:
6772 yyresult = 0;
6773 goto yyreturn;
6774
6775 /*-----------------------------------.
6776 | yyabortlab -- YYABORT comes here. |
6777 `-----------------------------------*/
6778 yyabortlab:
6779 yyresult = 1;
6780 goto yyreturn;
6781
6782 #if !defined yyoverflow || YYERROR_VERBOSE
6783 /*-------------------------------------------------.
6784 | yyexhaustedlab -- memory exhaustion comes here. |
6785 `-------------------------------------------------*/
6786 yyexhaustedlab:
6787 yyerror (YY_("memory exhausted"));
6788 yyresult = 2;
6789 /* Fall through. */
6790 #endif
6791
6792 yyreturn:
6793 if (yychar != YYEMPTY)
6794 {
6795 /* Make sure we have latest lookahead translation. See comments at
6796 user semantic actions for why this is necessary. */
6797 yytoken = YYTRANSLATE (yychar);
6798 yydestruct ("Cleanup: discarding lookahead",
6799 yytoken, &yylval);
6800 }
6801 /* Do not reclaim the symbols of the rule which action triggered
6802 this YYABORT or YYACCEPT. */
6803 YYPOPSTACK (yylen);
6804 YY_STACK_PRINT (yyss, yyssp);
6805 while (yyssp != yyss)
6806 {
6807 yydestruct ("Cleanup: popping",
6808 yystos[*yyssp], yyvsp);
6809 YYPOPSTACK (1);
6810 }
6811 #ifndef yyoverflow
6812 if (yyss != yyssa)
6813 YYSTACK_FREE (yyss);
6814 #endif
6815 #if YYERROR_VERBOSE
6816 if (yymsg != yymsgbuf)
6817 YYSTACK_FREE (yymsg);
6818 #endif
6819 /* Make sure YYID is used. */
6820 return YYID (yyresult);
6821 }
6822
6823

Properties

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