ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1647
Committed: Fri Nov 9 20:11:58 2012 UTC (11 years, 5 months ago) by michael
Content type: text/x-csrc
File size: 218423 byte(s)
Log Message:
- Finish stabilizing/cleanup of conf parser

File Contents

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

Properties

Name Value
svn:eol-style native