ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1715
Committed: Mon Dec 24 15:19:32 2012 UTC (12 years, 8 months ago) by michael
Content type: text/x-csrc
File size: 216831 byte(s)
Log Message:
- Improved WEBIRC authentication; added 'webirc' to auth::flags

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

Properties

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