ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1651
Committed: Sun Nov 11 10:54:51 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 217163 byte(s)
Log Message:
- Fixed class blocks not getting default values set properly
- bison 2.6.5

File Contents

# Content
1 /* A Bison parser, made by GNU Bison 2.6.5. */
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.5"
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 360 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 360 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 376 of yacc.c */
645 #line 135 "conf_parser.y"
646
647 int number;
648 char *string;
649
650
651 /* Line 376 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 379 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, 978, 978, 979, 979, 979, 980, 980, 980, 981,
1253 981, 981, 983, 989, 995, 1001, 1012, 1018, 1025, 1024,
1254 1030, 1030, 1031, 1035, 1039, 1043, 1047, 1051, 1055, 1059,
1255 1063, 1067, 1071, 1075, 1079, 1083, 1087, 1091, 1095, 1099,
1256 1103, 1107, 1114, 1113, 1119, 1119, 1120, 1124, 1128, 1132,
1257 1136, 1140, 1144, 1148, 1152, 1156, 1160, 1164, 1168, 1172,
1258 1176, 1180, 1184, 1188, 1192, 1203, 1202, 1253, 1253, 1254,
1259 1255, 1255, 1256, 1257, 1258, 1259, 1260, 1261, 1262, 1263,
1260 1264, 1264, 1265, 1267, 1273, 1279, 1285, 1291, 1297, 1303,
1261 1309, 1315, 1321, 1328, 1334, 1340, 1350, 1349, 1356, 1355,
1262 1360, 1360, 1361, 1365, 1369, 1375, 1375, 1376, 1376, 1376,
1263 1376, 1376, 1378, 1378, 1380, 1380, 1382, 1396, 1416, 1422,
1264 1432, 1431, 1473, 1473, 1474, 1474, 1474, 1474, 1475, 1475,
1265 1475, 1476, 1476, 1478, 1484, 1490, 1496, 1508, 1507, 1513,
1266 1513, 1514, 1518, 1522, 1526, 1530, 1534, 1538, 1542, 1546,
1267 1552, 1566, 1575, 1589, 1588, 1597, 1597, 1598, 1598, 1598,
1268 1598, 1600, 1606, 1615, 1624, 1626, 1626, 1627, 1627, 1629,
1269 1645, 1644, 1669, 1669, 1670, 1670, 1670, 1670, 1672, 1678,
1270 1698, 1697, 1703, 1703, 1704, 1708, 1712, 1716, 1720, 1724,
1271 1728, 1732, 1736, 1740, 1750, 1749, 1770, 1770, 1771, 1771,
1272 1771, 1773, 1780, 1779, 1785, 1785, 1786, 1790, 1794, 1798,
1273 1802, 1806, 1810, 1814, 1818, 1822, 1832, 1831, 1897, 1897,
1274 1898, 1898, 1898, 1899, 1899, 1900, 1900, 1900, 1901, 1901,
1275 1901, 1902, 1902, 1903, 1905, 1911, 1917, 1923, 1936, 1949,
1276 1955, 1959, 1968, 1967, 1972, 1972, 1973, 1977, 1983, 1994,
1277 2000, 2006, 2012, 2028, 2027, 2090, 2089, 2095, 2095, 2096,
1278 2102, 2102, 2103, 2103, 2103, 2103, 2105, 2125, 2135, 2134,
1279 2161, 2161, 2162, 2162, 2162, 2164, 2170, 2179, 2181, 2181,
1280 2182, 2182, 2184, 2202, 2201, 2247, 2246, 2252, 2252, 2253,
1281 2259, 2259, 2260, 2260, 2260, 2260, 2262, 2268, 2277, 2280,
1282 2280, 2281, 2281, 2282, 2282, 2283, 2283, 2284, 2284, 2285,
1283 2285, 2286, 2287, 2288, 2288, 2289, 2289, 2290, 2290, 2291,
1284 2291, 2292, 2292, 2293, 2293, 2294, 2295, 2295, 2296, 2296,
1285 2297, 2297, 2298, 2298, 2299, 2299, 2300, 2301, 2301, 2302,
1286 2303, 2304, 2304, 2305, 2305, 2306, 2307, 2308, 2309, 2309,
1287 2310, 2313, 2318, 2324, 2330, 2336, 2341, 2346, 2351, 2356,
1288 2361, 2366, 2371, 2376, 2381, 2386, 2391, 2396, 2401, 2406,
1289 2412, 2423, 2428, 2433, 2438, 2443, 2448, 2451, 2456, 2459,
1290 2464, 2469, 2474, 2479, 2484, 2489, 2494, 2499, 2504, 2515,
1291 2520, 2525, 2530, 2539, 2548, 2553, 2558, 2564, 2563, 2568,
1292 2568, 2569, 2572, 2575, 2578, 2581, 2584, 2587, 2590, 2593,
1293 2596, 2599, 2602, 2605, 2608, 2611, 2614, 2617, 2620, 2623,
1294 2626, 2632, 2631, 2636, 2636, 2637, 2640, 2643, 2646, 2649,
1295 2652, 2655, 2658, 2661, 2664, 2667, 2670, 2673, 2676, 2679,
1296 2682, 2685, 2688, 2691, 2694, 2699, 2704, 2709, 2718, 2721,
1297 2721, 2722, 2723, 2723, 2724, 2724, 2725, 2725, 2726, 2727,
1298 2727, 2728, 2729, 2729, 2730, 2730, 2732, 2737, 2742, 2747,
1299 2752, 2757, 2762, 2767, 2772, 2777, 2782, 2787, 2792, 2797,
1300 2805, 2808, 2808, 2809, 2809, 2810, 2811, 2811, 2812, 2813,
1301 2815, 2821, 2827, 2836, 2850, 2856
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 /* Error token number */
2372 #define YYTERROR 1
2373 #define YYERRCODE 256
2374
2375
2376 /* This macro is provided for backward compatibility. */
2377 #ifndef YY_LOCATION_PRINT
2378 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2379 #endif
2380
2381
2382 /* YYLEX -- calling `yylex' with the right arguments. */
2383 #ifdef YYLEX_PARAM
2384 # define YYLEX yylex (YYLEX_PARAM)
2385 #else
2386 # define YYLEX yylex ()
2387 #endif
2388
2389 /* Enable debugging if requested. */
2390 #if YYDEBUG
2391
2392 # ifndef YYFPRINTF
2393 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2394 # define YYFPRINTF fprintf
2395 # endif
2396
2397 # define YYDPRINTF(Args) \
2398 do { \
2399 if (yydebug) \
2400 YYFPRINTF Args; \
2401 } while (YYID (0))
2402
2403 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2404 do { \
2405 if (yydebug) \
2406 { \
2407 YYFPRINTF (stderr, "%s ", Title); \
2408 yy_symbol_print (stderr, \
2409 Type, Value); \
2410 YYFPRINTF (stderr, "\n"); \
2411 } \
2412 } while (YYID (0))
2413
2414
2415 /*--------------------------------.
2416 | Print this symbol on YYOUTPUT. |
2417 `--------------------------------*/
2418
2419 /*ARGSUSED*/
2420 #if (defined __STDC__ || defined __C99__FUNC__ \
2421 || defined __cplusplus || defined _MSC_VER)
2422 static void
2423 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2424 #else
2425 static void
2426 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2427 FILE *yyoutput;
2428 int yytype;
2429 YYSTYPE const * const yyvaluep;
2430 #endif
2431 {
2432 FILE *yyo = yyoutput;
2433 YYUSE (yyo);
2434 if (!yyvaluep)
2435 return;
2436 # ifdef YYPRINT
2437 if (yytype < YYNTOKENS)
2438 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2439 # else
2440 YYUSE (yyoutput);
2441 # endif
2442 switch (yytype)
2443 {
2444 default:
2445 break;
2446 }
2447 }
2448
2449
2450 /*--------------------------------.
2451 | Print this symbol on YYOUTPUT. |
2452 `--------------------------------*/
2453
2454 #if (defined __STDC__ || defined __C99__FUNC__ \
2455 || defined __cplusplus || defined _MSC_VER)
2456 static void
2457 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2458 #else
2459 static void
2460 yy_symbol_print (yyoutput, yytype, yyvaluep)
2461 FILE *yyoutput;
2462 int yytype;
2463 YYSTYPE const * const yyvaluep;
2464 #endif
2465 {
2466 if (yytype < YYNTOKENS)
2467 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2468 else
2469 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2470
2471 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2472 YYFPRINTF (yyoutput, ")");
2473 }
2474
2475 /*------------------------------------------------------------------.
2476 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2477 | TOP (included). |
2478 `------------------------------------------------------------------*/
2479
2480 #if (defined __STDC__ || defined __C99__FUNC__ \
2481 || defined __cplusplus || defined _MSC_VER)
2482 static void
2483 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2484 #else
2485 static void
2486 yy_stack_print (yybottom, yytop)
2487 yytype_int16 *yybottom;
2488 yytype_int16 *yytop;
2489 #endif
2490 {
2491 YYFPRINTF (stderr, "Stack now");
2492 for (; yybottom <= yytop; yybottom++)
2493 {
2494 int yybot = *yybottom;
2495 YYFPRINTF (stderr, " %d", yybot);
2496 }
2497 YYFPRINTF (stderr, "\n");
2498 }
2499
2500 # define YY_STACK_PRINT(Bottom, Top) \
2501 do { \
2502 if (yydebug) \
2503 yy_stack_print ((Bottom), (Top)); \
2504 } while (YYID (0))
2505
2506
2507 /*------------------------------------------------.
2508 | Report that the YYRULE is going to be reduced. |
2509 `------------------------------------------------*/
2510
2511 #if (defined __STDC__ || defined __C99__FUNC__ \
2512 || defined __cplusplus || defined _MSC_VER)
2513 static void
2514 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2515 #else
2516 static void
2517 yy_reduce_print (yyvsp, yyrule)
2518 YYSTYPE *yyvsp;
2519 int yyrule;
2520 #endif
2521 {
2522 int yynrhs = yyr2[yyrule];
2523 int yyi;
2524 unsigned long int yylno = yyrline[yyrule];
2525 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2526 yyrule - 1, yylno);
2527 /* The symbols being reduced. */
2528 for (yyi = 0; yyi < yynrhs; yyi++)
2529 {
2530 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2531 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2532 &(yyvsp[(yyi + 1) - (yynrhs)])
2533 );
2534 YYFPRINTF (stderr, "\n");
2535 }
2536 }
2537
2538 # define YY_REDUCE_PRINT(Rule) \
2539 do { \
2540 if (yydebug) \
2541 yy_reduce_print (yyvsp, Rule); \
2542 } while (YYID (0))
2543
2544 /* Nonzero means print parse trace. It is left uninitialized so that
2545 multiple parsers can coexist. */
2546 int yydebug;
2547 #else /* !YYDEBUG */
2548 # define YYDPRINTF(Args)
2549 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2550 # define YY_STACK_PRINT(Bottom, Top)
2551 # define YY_REDUCE_PRINT(Rule)
2552 #endif /* !YYDEBUG */
2553
2554
2555 /* YYINITDEPTH -- initial size of the parser's stacks. */
2556 #ifndef YYINITDEPTH
2557 # define YYINITDEPTH 200
2558 #endif
2559
2560 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2561 if the built-in stack extension method is used).
2562
2563 Do not make this value too large; the results are undefined if
2564 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2565 evaluated with infinite-precision integer arithmetic. */
2566
2567 #ifndef YYMAXDEPTH
2568 # define YYMAXDEPTH 10000
2569 #endif
2570
2571
2572 #if YYERROR_VERBOSE
2573
2574 # ifndef yystrlen
2575 # if defined __GLIBC__ && defined _STRING_H
2576 # define yystrlen strlen
2577 # else
2578 /* Return the length of YYSTR. */
2579 #if (defined __STDC__ || defined __C99__FUNC__ \
2580 || defined __cplusplus || defined _MSC_VER)
2581 static YYSIZE_T
2582 yystrlen (const char *yystr)
2583 #else
2584 static YYSIZE_T
2585 yystrlen (yystr)
2586 const char *yystr;
2587 #endif
2588 {
2589 YYSIZE_T yylen;
2590 for (yylen = 0; yystr[yylen]; yylen++)
2591 continue;
2592 return yylen;
2593 }
2594 # endif
2595 # endif
2596
2597 # ifndef yystpcpy
2598 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2599 # define yystpcpy stpcpy
2600 # else
2601 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2602 YYDEST. */
2603 #if (defined __STDC__ || defined __C99__FUNC__ \
2604 || defined __cplusplus || defined _MSC_VER)
2605 static char *
2606 yystpcpy (char *yydest, const char *yysrc)
2607 #else
2608 static char *
2609 yystpcpy (yydest, yysrc)
2610 char *yydest;
2611 const char *yysrc;
2612 #endif
2613 {
2614 char *yyd = yydest;
2615 const char *yys = yysrc;
2616
2617 while ((*yyd++ = *yys++) != '\0')
2618 continue;
2619
2620 return yyd - 1;
2621 }
2622 # endif
2623 # endif
2624
2625 # ifndef yytnamerr
2626 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2627 quotes and backslashes, so that it's suitable for yyerror. The
2628 heuristic is that double-quoting is unnecessary unless the string
2629 contains an apostrophe, a comma, or backslash (other than
2630 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2631 null, do not copy; instead, return the length of what the result
2632 would have been. */
2633 static YYSIZE_T
2634 yytnamerr (char *yyres, const char *yystr)
2635 {
2636 if (*yystr == '"')
2637 {
2638 YYSIZE_T yyn = 0;
2639 char const *yyp = yystr;
2640
2641 for (;;)
2642 switch (*++yyp)
2643 {
2644 case '\'':
2645 case ',':
2646 goto do_not_strip_quotes;
2647
2648 case '\\':
2649 if (*++yyp != '\\')
2650 goto do_not_strip_quotes;
2651 /* Fall through. */
2652 default:
2653 if (yyres)
2654 yyres[yyn] = *yyp;
2655 yyn++;
2656 break;
2657
2658 case '"':
2659 if (yyres)
2660 yyres[yyn] = '\0';
2661 return yyn;
2662 }
2663 do_not_strip_quotes: ;
2664 }
2665
2666 if (! yyres)
2667 return yystrlen (yystr);
2668
2669 return yystpcpy (yyres, yystr) - yyres;
2670 }
2671 # endif
2672
2673 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2674 about the unexpected token YYTOKEN for the state stack whose top is
2675 YYSSP.
2676
2677 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2678 not large enough to hold the message. In that case, also set
2679 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2680 required number of bytes is too large to store. */
2681 static int
2682 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2683 yytype_int16 *yyssp, int yytoken)
2684 {
2685 YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
2686 YYSIZE_T yysize = yysize0;
2687 YYSIZE_T yysize1;
2688 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2689 /* Internationalized format string. */
2690 const char *yyformat = YY_NULL;
2691 /* Arguments of yyformat. */
2692 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2693 /* Number of reported tokens (one for the "unexpected", one per
2694 "expected"). */
2695 int yycount = 0;
2696
2697 /* There are many possibilities here to consider:
2698 - Assume YYFAIL is not used. It's too flawed to consider. See
2699 <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
2700 for details. YYERROR is fine as it does not invoke this
2701 function.
2702 - If this state is a consistent state with a default action, then
2703 the only way this function was invoked is if the default action
2704 is an error action. In that case, don't check for expected
2705 tokens because there are none.
2706 - The only way there can be no lookahead present (in yychar) is if
2707 this state is a consistent state with a default action. Thus,
2708 detecting the absence of a lookahead is sufficient to determine
2709 that there is no unexpected or expected token to report. In that
2710 case, just report a simple "syntax error".
2711 - Don't assume there isn't a lookahead just because this state is a
2712 consistent state with a default action. There might have been a
2713 previous inconsistent state, consistent state with a non-default
2714 action, or user semantic action that manipulated yychar.
2715 - Of course, the expected token list depends on states to have
2716 correct lookahead information, and it depends on the parser not
2717 to perform extra reductions after fetching a lookahead from the
2718 scanner and before detecting a syntax error. Thus, state merging
2719 (from LALR or IELR) and default reductions corrupt the expected
2720 token list. However, the list is correct for canonical LR with
2721 one exception: it will still contain any token that will not be
2722 accepted due to an error action in a later state.
2723 */
2724 if (yytoken != YYEMPTY)
2725 {
2726 int yyn = yypact[*yyssp];
2727 yyarg[yycount++] = yytname[yytoken];
2728 if (!yypact_value_is_default (yyn))
2729 {
2730 /* Start YYX at -YYN if negative to avoid negative indexes in
2731 YYCHECK. In other words, skip the first -YYN actions for
2732 this state because they are default actions. */
2733 int yyxbegin = yyn < 0 ? -yyn : 0;
2734 /* Stay within bounds of both yycheck and yytname. */
2735 int yychecklim = YYLAST - yyn + 1;
2736 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2737 int yyx;
2738
2739 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2740 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2741 && !yytable_value_is_error (yytable[yyx + yyn]))
2742 {
2743 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2744 {
2745 yycount = 1;
2746 yysize = yysize0;
2747 break;
2748 }
2749 yyarg[yycount++] = yytname[yyx];
2750 yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
2751 if (! (yysize <= yysize1
2752 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2753 return 2;
2754 yysize = yysize1;
2755 }
2756 }
2757 }
2758
2759 switch (yycount)
2760 {
2761 # define YYCASE_(N, S) \
2762 case N: \
2763 yyformat = S; \
2764 break
2765 YYCASE_(0, YY_("syntax error"));
2766 YYCASE_(1, YY_("syntax error, unexpected %s"));
2767 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2768 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2769 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2770 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2771 # undef YYCASE_
2772 }
2773
2774 yysize1 = yysize + yystrlen (yyformat);
2775 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2776 return 2;
2777 yysize = yysize1;
2778
2779 if (*yymsg_alloc < yysize)
2780 {
2781 *yymsg_alloc = 2 * yysize;
2782 if (! (yysize <= *yymsg_alloc
2783 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2784 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2785 return 1;
2786 }
2787
2788 /* Avoid sprintf, as that infringes on the user's name space.
2789 Don't have undefined behavior even if the translation
2790 produced a string with the wrong number of "%s"s. */
2791 {
2792 char *yyp = *yymsg;
2793 int yyi = 0;
2794 while ((*yyp = *yyformat) != '\0')
2795 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2796 {
2797 yyp += yytnamerr (yyp, yyarg[yyi++]);
2798 yyformat += 2;
2799 }
2800 else
2801 {
2802 yyp++;
2803 yyformat++;
2804 }
2805 }
2806 return 0;
2807 }
2808 #endif /* YYERROR_VERBOSE */
2809
2810 /*-----------------------------------------------.
2811 | Release the memory associated to this symbol. |
2812 `-----------------------------------------------*/
2813
2814 /*ARGSUSED*/
2815 #if (defined __STDC__ || defined __C99__FUNC__ \
2816 || defined __cplusplus || defined _MSC_VER)
2817 static void
2818 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2819 #else
2820 static void
2821 yydestruct (yymsg, yytype, yyvaluep)
2822 const char *yymsg;
2823 int yytype;
2824 YYSTYPE *yyvaluep;
2825 #endif
2826 {
2827 YYUSE (yyvaluep);
2828
2829 if (!yymsg)
2830 yymsg = "Deleting";
2831 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2832
2833 switch (yytype)
2834 {
2835
2836 default:
2837 break;
2838 }
2839 }
2840
2841
2842
2843
2844 /* The lookahead symbol. */
2845 int yychar;
2846
2847
2848 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2849 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2850 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
2851 #endif
2852 #ifndef YY_INITIAL_VALUE
2853 # define YY_INITIAL_VALUE(Value) /* Nothing. */
2854 #endif
2855
2856 /* The semantic value of the lookahead symbol. */
2857 YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
2858
2859 /* Number of syntax errors so far. */
2860 int yynerrs;
2861
2862
2863 /*----------.
2864 | yyparse. |
2865 `----------*/
2866
2867 #ifdef YYPARSE_PARAM
2868 #if (defined __STDC__ || defined __C99__FUNC__ \
2869 || defined __cplusplus || defined _MSC_VER)
2870 int
2871 yyparse (void *YYPARSE_PARAM)
2872 #else
2873 int
2874 yyparse (YYPARSE_PARAM)
2875 void *YYPARSE_PARAM;
2876 #endif
2877 #else /* ! YYPARSE_PARAM */
2878 #if (defined __STDC__ || defined __C99__FUNC__ \
2879 || defined __cplusplus || defined _MSC_VER)
2880 int
2881 yyparse (void)
2882 #else
2883 int
2884 yyparse ()
2885
2886 #endif
2887 #endif
2888 {
2889 int yystate;
2890 /* Number of tokens to shift before error messages enabled. */
2891 int yyerrstatus;
2892
2893 /* The stacks and their tools:
2894 `yyss': related to states.
2895 `yyvs': related to semantic values.
2896
2897 Refer to the stacks through separate pointers, to allow yyoverflow
2898 to reallocate them elsewhere. */
2899
2900 /* The state stack. */
2901 yytype_int16 yyssa[YYINITDEPTH];
2902 yytype_int16 *yyss;
2903 yytype_int16 *yyssp;
2904
2905 /* The semantic value stack. */
2906 YYSTYPE yyvsa[YYINITDEPTH];
2907 YYSTYPE *yyvs;
2908 YYSTYPE *yyvsp;
2909
2910 YYSIZE_T yystacksize;
2911
2912 int yyn;
2913 int yyresult;
2914 /* Lookahead token as an internal (translated) token number. */
2915 int yytoken = 0;
2916 /* The variables used to return semantic value and location from the
2917 action routines. */
2918 YYSTYPE yyval;
2919
2920 #if YYERROR_VERBOSE
2921 /* Buffer for error messages, and its allocated size. */
2922 char yymsgbuf[128];
2923 char *yymsg = yymsgbuf;
2924 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2925 #endif
2926
2927 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2928
2929 /* The number of symbols on the RHS of the reduced rule.
2930 Keep to zero when no symbol should be popped. */
2931 int yylen = 0;
2932
2933 yyssp = yyss = yyssa;
2934 yyvsp = yyvs = yyvsa;
2935 yystacksize = YYINITDEPTH;
2936
2937 YYDPRINTF ((stderr, "Starting parse\n"));
2938
2939 yystate = 0;
2940 yyerrstatus = 0;
2941 yynerrs = 0;
2942 yychar = YYEMPTY; /* Cause a token to be read. */
2943 goto yysetstate;
2944
2945 /*------------------------------------------------------------.
2946 | yynewstate -- Push a new state, which is found in yystate. |
2947 `------------------------------------------------------------*/
2948 yynewstate:
2949 /* In all cases, when you get here, the value and location stacks
2950 have just been pushed. So pushing a state here evens the stacks. */
2951 yyssp++;
2952
2953 yysetstate:
2954 *yyssp = yystate;
2955
2956 if (yyss + yystacksize - 1 <= yyssp)
2957 {
2958 /* Get the current used size of the three stacks, in elements. */
2959 YYSIZE_T yysize = yyssp - yyss + 1;
2960
2961 #ifdef yyoverflow
2962 {
2963 /* Give user a chance to reallocate the stack. Use copies of
2964 these so that the &'s don't force the real ones into
2965 memory. */
2966 YYSTYPE *yyvs1 = yyvs;
2967 yytype_int16 *yyss1 = yyss;
2968
2969 /* Each stack pointer address is followed by the size of the
2970 data in use in that stack, in bytes. This used to be a
2971 conditional around just the two extra args, but that might
2972 be undefined if yyoverflow is a macro. */
2973 yyoverflow (YY_("memory exhausted"),
2974 &yyss1, yysize * sizeof (*yyssp),
2975 &yyvs1, yysize * sizeof (*yyvsp),
2976 &yystacksize);
2977
2978 yyss = yyss1;
2979 yyvs = yyvs1;
2980 }
2981 #else /* no yyoverflow */
2982 # ifndef YYSTACK_RELOCATE
2983 goto yyexhaustedlab;
2984 # else
2985 /* Extend the stack our own way. */
2986 if (YYMAXDEPTH <= yystacksize)
2987 goto yyexhaustedlab;
2988 yystacksize *= 2;
2989 if (YYMAXDEPTH < yystacksize)
2990 yystacksize = YYMAXDEPTH;
2991
2992 {
2993 yytype_int16 *yyss1 = yyss;
2994 union yyalloc *yyptr =
2995 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2996 if (! yyptr)
2997 goto yyexhaustedlab;
2998 YYSTACK_RELOCATE (yyss_alloc, yyss);
2999 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3000 # undef YYSTACK_RELOCATE
3001 if (yyss1 != yyssa)
3002 YYSTACK_FREE (yyss1);
3003 }
3004 # endif
3005 #endif /* no yyoverflow */
3006
3007 yyssp = yyss + yysize - 1;
3008 yyvsp = yyvs + yysize - 1;
3009
3010 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
3011 (unsigned long int) yystacksize));
3012
3013 if (yyss + yystacksize - 1 <= yyssp)
3014 YYABORT;
3015 }
3016
3017 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3018
3019 if (yystate == YYFINAL)
3020 YYACCEPT;
3021
3022 goto yybackup;
3023
3024 /*-----------.
3025 | yybackup. |
3026 `-----------*/
3027 yybackup:
3028
3029 /* Do appropriate processing given the current state. Read a
3030 lookahead token if we need one and don't already have one. */
3031
3032 /* First try to decide what to do without reference to lookahead token. */
3033 yyn = yypact[yystate];
3034 if (yypact_value_is_default (yyn))
3035 goto yydefault;
3036
3037 /* Not known => get a lookahead token if don't already have one. */
3038
3039 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
3040 if (yychar == YYEMPTY)
3041 {
3042 YYDPRINTF ((stderr, "Reading a token: "));
3043 yychar = YYLEX;
3044 }
3045
3046 if (yychar <= YYEOF)
3047 {
3048 yychar = yytoken = YYEOF;
3049 YYDPRINTF ((stderr, "Now at end of input.\n"));
3050 }
3051 else
3052 {
3053 yytoken = YYTRANSLATE (yychar);
3054 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3055 }
3056
3057 /* If the proper action on seeing token YYTOKEN is to reduce or to
3058 detect an error, take that action. */
3059 yyn += yytoken;
3060 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3061 goto yydefault;
3062 yyn = yytable[yyn];
3063 if (yyn <= 0)
3064 {
3065 if (yytable_value_is_error (yyn))
3066 goto yyerrlab;
3067 yyn = -yyn;
3068 goto yyreduce;
3069 }
3070
3071 /* Count tokens shifted since error; after three, turn off error
3072 status. */
3073 if (yyerrstatus)
3074 yyerrstatus--;
3075
3076 /* Shift the lookahead token. */
3077 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3078
3079 /* Discard the shifted token. */
3080 yychar = YYEMPTY;
3081
3082 yystate = yyn;
3083 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3084 *++yyvsp = yylval;
3085 YY_IGNORE_MAYBE_UNINITIALIZED_END
3086
3087 goto yynewstate;
3088
3089
3090 /*-----------------------------------------------------------.
3091 | yydefault -- do the default action for the current state. |
3092 `-----------------------------------------------------------*/
3093 yydefault:
3094 yyn = yydefact[yystate];
3095 if (yyn == 0)
3096 goto yyerrlab;
3097 goto yyreduce;
3098
3099
3100 /*-----------------------------.
3101 | yyreduce -- Do a reduction. |
3102 `-----------------------------*/
3103 yyreduce:
3104 /* yyn is the number of a rule to reduce with. */
3105 yylen = yyr2[yyn];
3106
3107 /* If YYLEN is nonzero, implement the default value of the action:
3108 `$$ = $1'.
3109
3110 Otherwise, the following line sets YYVAL to garbage.
3111 This behavior is undocumented and Bison
3112 users should not rely upon it. Assigning to YYVAL
3113 unconditionally makes the parser a bit smaller, and it avoids a
3114 GCC warning that YYVAL may be used uninitialized. */
3115 yyval = yyvsp[1-yylen];
3116
3117
3118 YY_REDUCE_PRINT (yyn);
3119 switch (yyn)
3120 {
3121 case 26:
3122 /* Line 1778 of yacc.c */
3123 #line 383 "conf_parser.y"
3124 { (yyval.number) = 0; }
3125 break;
3126
3127 case 28:
3128 /* Line 1778 of yacc.c */
3129 #line 385 "conf_parser.y"
3130 {
3131 (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3132 }
3133 break;
3134
3135 case 29:
3136 /* Line 1778 of yacc.c */
3137 #line 389 "conf_parser.y"
3138 {
3139 (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3140 }
3141 break;
3142
3143 case 30:
3144 /* Line 1778 of yacc.c */
3145 #line 393 "conf_parser.y"
3146 {
3147 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3148 }
3149 break;
3150
3151 case 31:
3152 /* Line 1778 of yacc.c */
3153 #line 397 "conf_parser.y"
3154 {
3155 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3156 }
3157 break;
3158
3159 case 32:
3160 /* Line 1778 of yacc.c */
3161 #line 401 "conf_parser.y"
3162 {
3163 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3164 }
3165 break;
3166
3167 case 33:
3168 /* Line 1778 of yacc.c */
3169 #line 405 "conf_parser.y"
3170 {
3171 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3172 }
3173 break;
3174
3175 case 34:
3176 /* Line 1778 of yacc.c */
3177 #line 410 "conf_parser.y"
3178 { (yyval.number) = 0; }
3179 break;
3180
3181 case 36:
3182 /* Line 1778 of yacc.c */
3183 #line 411 "conf_parser.y"
3184 { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
3185 break;
3186
3187 case 37:
3188 /* Line 1778 of yacc.c */
3189 #line 412 "conf_parser.y"
3190 { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
3191 break;
3192
3193 case 38:
3194 /* Line 1778 of yacc.c */
3195 #line 413 "conf_parser.y"
3196 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
3197 break;
3198
3199 case 39:
3200 /* Line 1778 of yacc.c */
3201 #line 414 "conf_parser.y"
3202 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
3203 break;
3204
3205 case 46:
3206 /* Line 1778 of yacc.c */
3207 #line 428 "conf_parser.y"
3208 {
3209 if (conf_parser_ctx.pass == 2)
3210 add_conf_module(libio_basename(yylval.string));
3211 }
3212 break;
3213
3214 case 47:
3215 /* Line 1778 of yacc.c */
3216 #line 434 "conf_parser.y"
3217 {
3218 if (conf_parser_ctx.pass == 2)
3219 mod_add_path(yylval.string);
3220 }
3221 break;
3222
3223 case 71:
3224 /* Line 1778 of yacc.c */
3225 #line 459 "conf_parser.y"
3226 {
3227 #ifdef HAVE_LIBCRYPTO
3228 if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
3229 SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_SSLv3);
3230 #endif
3231 }
3232 break;
3233
3234 case 72:
3235 /* Line 1778 of yacc.c */
3236 #line 465 "conf_parser.y"
3237 {
3238 #ifdef HAVE_LIBCRYPTO
3239 if (conf_parser_ctx.pass == 2 && ServerInfo.client_ctx)
3240 SSL_CTX_clear_options(ServerInfo.client_ctx, SSL_OP_NO_TLSv1);
3241 #endif
3242 }
3243 break;
3244
3245 case 75:
3246 /* Line 1778 of yacc.c */
3247 #line 474 "conf_parser.y"
3248 {
3249 #ifdef HAVE_LIBCRYPTO
3250 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3251 SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3252 #endif
3253 }
3254 break;
3255
3256 case 76:
3257 /* Line 1778 of yacc.c */
3258 #line 480 "conf_parser.y"
3259 {
3260 #ifdef HAVE_LIBCRYPTO
3261 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3262 SSL_CTX_clear_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3263 #endif
3264 }
3265 break;
3266
3267 case 77:
3268 /* Line 1778 of yacc.c */
3269 #line 488 "conf_parser.y"
3270 {
3271 #ifdef HAVE_LIBCRYPTO
3272 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3273 {
3274 if (!ServerInfo.rsa_private_key_file)
3275 {
3276 yyerror("No rsa_private_key_file specified, SSL disabled");
3277 break;
3278 }
3279
3280 if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3281 SSL_FILETYPE_PEM) <= 0 ||
3282 SSL_CTX_use_certificate_file(ServerInfo.client_ctx, yylval.string,
3283 SSL_FILETYPE_PEM) <= 0)
3284 {
3285 yyerror(ERR_lib_error_string(ERR_get_error()));
3286 break;
3287 }
3288
3289 if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3290 SSL_FILETYPE_PEM) <= 0 ||
3291 SSL_CTX_use_PrivateKey_file(ServerInfo.client_ctx, ServerInfo.rsa_private_key_file,
3292 SSL_FILETYPE_PEM) <= 0)
3293 {
3294 yyerror(ERR_lib_error_string(ERR_get_error()));
3295 break;
3296 }
3297
3298 if (!SSL_CTX_check_private_key(ServerInfo.server_ctx) ||
3299 !SSL_CTX_check_private_key(ServerInfo.client_ctx))
3300 {
3301 yyerror(ERR_lib_error_string(ERR_get_error()));
3302 break;
3303 }
3304 }
3305 #endif
3306 }
3307 break;
3308
3309 case 78:
3310 /* Line 1778 of yacc.c */
3311 #line 527 "conf_parser.y"
3312 {
3313 #ifdef HAVE_LIBCRYPTO
3314 if (conf_parser_ctx.pass == 1)
3315 {
3316 BIO *file;
3317
3318 if (ServerInfo.rsa_private_key)
3319 {
3320 RSA_free(ServerInfo.rsa_private_key);
3321 ServerInfo.rsa_private_key = NULL;
3322 }
3323
3324 if (ServerInfo.rsa_private_key_file)
3325 {
3326 MyFree(ServerInfo.rsa_private_key_file);
3327 ServerInfo.rsa_private_key_file = NULL;
3328 }
3329
3330 ServerInfo.rsa_private_key_file = xstrdup(yylval.string);
3331
3332 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3333 {
3334 yyerror("File open failed, ignoring");
3335 break;
3336 }
3337
3338 ServerInfo.rsa_private_key = PEM_read_bio_RSAPrivateKey(file, NULL, 0, NULL);
3339
3340 BIO_set_close(file, BIO_CLOSE);
3341 BIO_free(file);
3342
3343 if (ServerInfo.rsa_private_key == NULL)
3344 {
3345 yyerror("Couldn't extract key, ignoring");
3346 break;
3347 }
3348
3349 if (!RSA_check_key(ServerInfo.rsa_private_key))
3350 {
3351 RSA_free(ServerInfo.rsa_private_key);
3352 ServerInfo.rsa_private_key = NULL;
3353
3354 yyerror("Invalid key, ignoring");
3355 break;
3356 }
3357
3358 /* require 2048 bit (256 byte) key */
3359 if (RSA_size(ServerInfo.rsa_private_key) != 256)
3360 {
3361 RSA_free(ServerInfo.rsa_private_key);
3362 ServerInfo.rsa_private_key = NULL;
3363
3364 yyerror("Not a 2048 bit key, ignoring");
3365 }
3366 }
3367 #endif
3368 }
3369 break;
3370
3371 case 79:
3372 /* Line 1778 of yacc.c */
3373 #line 586 "conf_parser.y"
3374 {
3375 /* TBD - XXX: error reporting */
3376 #ifdef HAVE_LIBCRYPTO
3377 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3378 {
3379 BIO *file = BIO_new_file(yylval.string, "r");
3380
3381 if (file)
3382 {
3383 DH *dh = PEM_read_bio_DHparams(file, NULL, NULL, NULL);
3384
3385 BIO_free(file);
3386
3387 if (dh)
3388 {
3389 if (DH_size(dh) < 128)
3390 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::ssl_dh_param_file -- need at least a 1024 bit DH prime size");
3391 else
3392 SSL_CTX_set_tmp_dh(ServerInfo.server_ctx, dh);
3393
3394 DH_free(dh);
3395 }
3396 }
3397 }
3398 #endif
3399 }
3400 break;
3401
3402 case 80:
3403 /* Line 1778 of yacc.c */
3404 #line 614 "conf_parser.y"
3405 {
3406 #ifdef HAVE_LIBCRYPTO
3407 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3408 SSL_CTX_set_cipher_list(ServerInfo.server_ctx, yylval.string);
3409 #endif
3410 }
3411 break;
3412
3413 case 81:
3414 /* Line 1778 of yacc.c */
3415 #line 622 "conf_parser.y"
3416 {
3417 /* this isn't rehashable */
3418 if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3419 {
3420 if (valid_servname(yylval.string))
3421 ServerInfo.name = xstrdup(yylval.string);
3422 else
3423 {
3424 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::name -- invalid name. Aborting.");
3425 exit(0);
3426 }
3427 }
3428 }
3429 break;
3430
3431 case 82:
3432 /* Line 1778 of yacc.c */
3433 #line 637 "conf_parser.y"
3434 {
3435 /* this isn't rehashable */
3436 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3437 {
3438 if (valid_sid(yylval.string))
3439 ServerInfo.sid = xstrdup(yylval.string);
3440 else
3441 {
3442 ilog(LOG_TYPE_IRCD, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3443 exit(0);
3444 }
3445 }
3446 }
3447 break;
3448
3449 case 83:
3450 /* Line 1778 of yacc.c */
3451 #line 652 "conf_parser.y"
3452 {
3453 if (conf_parser_ctx.pass == 2)
3454 {
3455 MyFree(ServerInfo.description);
3456 ServerInfo.description = xstrdup(yylval.string);
3457 }
3458 }
3459 break;
3460
3461 case 84:
3462 /* Line 1778 of yacc.c */
3463 #line 661 "conf_parser.y"
3464 {
3465 if (conf_parser_ctx.pass == 2)
3466 {
3467 char *p;
3468
3469 if ((p = strchr(yylval.string, ' ')) != NULL)
3470 p = '\0';
3471
3472 MyFree(ServerInfo.network_name);
3473 ServerInfo.network_name = xstrdup(yylval.string);
3474 }
3475 }
3476 break;
3477
3478 case 85:
3479 /* Line 1778 of yacc.c */
3480 #line 675 "conf_parser.y"
3481 {
3482 if (conf_parser_ctx.pass == 2)
3483 {
3484 MyFree(ServerInfo.network_desc);
3485 ServerInfo.network_desc = xstrdup(yylval.string);
3486 }
3487 }
3488 break;
3489
3490 case 86:
3491 /* Line 1778 of yacc.c */
3492 #line 684 "conf_parser.y"
3493 {
3494 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3495 {
3496 struct addrinfo hints, *res;
3497
3498 memset(&hints, 0, sizeof(hints));
3499
3500 hints.ai_family = AF_UNSPEC;
3501 hints.ai_socktype = SOCK_STREAM;
3502 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3503
3504 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3505 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3506 else
3507 {
3508 assert(res != NULL);
3509
3510 memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3511 ServerInfo.ip.ss.ss_family = res->ai_family;
3512 ServerInfo.ip.ss_len = res->ai_addrlen;
3513 freeaddrinfo(res);
3514
3515 ServerInfo.specific_ipv4_vhost = 1;
3516 }
3517 }
3518 }
3519 break;
3520
3521 case 87:
3522 /* Line 1778 of yacc.c */
3523 #line 712 "conf_parser.y"
3524 {
3525 #ifdef IPV6
3526 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3527 {
3528 struct addrinfo hints, *res;
3529
3530 memset(&hints, 0, sizeof(hints));
3531
3532 hints.ai_family = AF_UNSPEC;
3533 hints.ai_socktype = SOCK_STREAM;
3534 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3535
3536 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3537 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3538 else
3539 {
3540 assert(res != NULL);
3541
3542 memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3543 ServerInfo.ip6.ss.ss_family = res->ai_family;
3544 ServerInfo.ip6.ss_len = res->ai_addrlen;
3545 freeaddrinfo(res);
3546
3547 ServerInfo.specific_ipv6_vhost = 1;
3548 }
3549 }
3550 #endif
3551 }
3552 break;
3553
3554 case 88:
3555 /* Line 1778 of yacc.c */
3556 #line 742 "conf_parser.y"
3557 {
3558 if (conf_parser_ctx.pass == 2)
3559 {
3560 recalc_fdlimit(NULL);
3561
3562 if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3563 {
3564 char buf[IRCD_BUFSIZE];
3565 ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3566 yyerror(buf);
3567 }
3568 else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3569 {
3570 char buf[IRCD_BUFSIZE];
3571 ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3572 yyerror(buf);
3573 }
3574 else
3575 ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3576 }
3577 }
3578 break;
3579
3580 case 89:
3581 /* Line 1778 of yacc.c */
3582 #line 765 "conf_parser.y"
3583 {
3584 if (conf_parser_ctx.pass == 2)
3585 ServerInfo.hub = yylval.number;
3586 }
3587 break;
3588
3589 case 97:
3590 /* Line 1778 of yacc.c */
3591 #line 780 "conf_parser.y"
3592 {
3593 if (conf_parser_ctx.pass == 2)
3594 {
3595 MyFree(AdminInfo.name);
3596 AdminInfo.name = xstrdup(yylval.string);
3597 }
3598 }
3599 break;
3600
3601 case 98:
3602 /* Line 1778 of yacc.c */
3603 #line 789 "conf_parser.y"
3604 {
3605 if (conf_parser_ctx.pass == 2)
3606 {
3607 MyFree(AdminInfo.email);
3608 AdminInfo.email = xstrdup(yylval.string);
3609 }
3610 }
3611 break;
3612
3613 case 99:
3614 /* Line 1778 of yacc.c */
3615 #line 798 "conf_parser.y"
3616 {
3617 if (conf_parser_ctx.pass == 2)
3618 {
3619 MyFree(AdminInfo.description);
3620 AdminInfo.description = xstrdup(yylval.string);
3621 }
3622 }
3623 break;
3624
3625 case 106:
3626 /* Line 1778 of yacc.c */
3627 #line 816 "conf_parser.y"
3628 {
3629 if (conf_parser_ctx.pass == 2)
3630 ConfigLoggingEntry.use_logging = yylval.number;
3631 }
3632 break;
3633
3634 case 107:
3635 /* Line 1778 of yacc.c */
3636 #line 822 "conf_parser.y"
3637 {
3638 if (conf_parser_ctx.pass == 2)
3639 reset_block_state();
3640 }
3641 break;
3642
3643 case 108:
3644 /* Line 1778 of yacc.c */
3645 #line 826 "conf_parser.y"
3646 {
3647 if (conf_parser_ctx.pass != 2)
3648 break;
3649
3650 if (block_state.type.value && block_state.file.buf[0])
3651 log_add_file(block_state.type.value, block_state.size.value,
3652 block_state.file.buf);
3653 }
3654 break;
3655
3656 case 115:
3657 /* Line 1778 of yacc.c */
3658 #line 842 "conf_parser.y"
3659 {
3660 if (conf_parser_ctx.pass != 2)
3661 break;
3662
3663 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3664 }
3665 break;
3666
3667 case 116:
3668 /* Line 1778 of yacc.c */
3669 #line 850 "conf_parser.y"
3670 {
3671 block_state.size.value = (yyvsp[(3) - (4)].number);
3672 }
3673 break;
3674
3675 case 117:
3676 /* Line 1778 of yacc.c */
3677 #line 853 "conf_parser.y"
3678 {
3679 block_state.size.value = 0;
3680 }
3681 break;
3682
3683 case 118:
3684 /* Line 1778 of yacc.c */
3685 #line 858 "conf_parser.y"
3686 {
3687 if (conf_parser_ctx.pass == 2)
3688 block_state.type.value = 0;
3689 }
3690 break;
3691
3692 case 122:
3693 /* Line 1778 of yacc.c */
3694 #line 865 "conf_parser.y"
3695 {
3696 if (conf_parser_ctx.pass == 2)
3697 block_state.type.value = LOG_TYPE_USER;
3698 }
3699 break;
3700
3701 case 123:
3702 /* Line 1778 of yacc.c */
3703 #line 869 "conf_parser.y"
3704 {
3705 if (conf_parser_ctx.pass == 2)
3706 block_state.type.value = LOG_TYPE_OPER;
3707 }
3708 break;
3709
3710 case 124:
3711 /* Line 1778 of yacc.c */
3712 #line 873 "conf_parser.y"
3713 {
3714 if (conf_parser_ctx.pass == 2)
3715 block_state.type.value = LOG_TYPE_GLINE;
3716 }
3717 break;
3718
3719 case 125:
3720 /* Line 1778 of yacc.c */
3721 #line 877 "conf_parser.y"
3722 {
3723 if (conf_parser_ctx.pass == 2)
3724 block_state.type.value = LOG_TYPE_DLINE;
3725 }
3726 break;
3727
3728 case 126:
3729 /* Line 1778 of yacc.c */
3730 #line 881 "conf_parser.y"
3731 {
3732 if (conf_parser_ctx.pass == 2)
3733 block_state.type.value = LOG_TYPE_KLINE;
3734 }
3735 break;
3736
3737 case 127:
3738 /* Line 1778 of yacc.c */
3739 #line 885 "conf_parser.y"
3740 {
3741 if (conf_parser_ctx.pass == 2)
3742 block_state.type.value = LOG_TYPE_KILL;
3743 }
3744 break;
3745
3746 case 128:
3747 /* Line 1778 of yacc.c */
3748 #line 889 "conf_parser.y"
3749 {
3750 if (conf_parser_ctx.pass == 2)
3751 block_state.type.value = LOG_TYPE_DEBUG;
3752 }
3753 break;
3754
3755 case 129:
3756 /* Line 1778 of yacc.c */
3757 #line 899 "conf_parser.y"
3758 {
3759 if (conf_parser_ctx.pass != 2)
3760 break;
3761
3762 reset_block_state();
3763 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3764 }
3765 break;
3766
3767 case 130:
3768 /* Line 1778 of yacc.c */
3769 #line 906 "conf_parser.y"
3770 {
3771 dlink_node *ptr = NULL;
3772
3773 if (conf_parser_ctx.pass != 2)
3774 break;
3775
3776 if (!block_state.name.buf[0])
3777 break;
3778 #ifdef HAVE_LIBCRYPTO
3779 if (!(block_state.file.buf[0] ||
3780 block_state.rpass.buf[0]))
3781 break;
3782 #else
3783 if (!block_state.rpass.buf[0])
3784 break;
3785 #endif
3786
3787 DLINK_FOREACH(ptr, block_state.mask.list.head)
3788 {
3789 struct MaskItem *conf = NULL;
3790 struct split_nuh_item nuh;
3791
3792 nuh.nuhmask = ptr->data;
3793 nuh.nickptr = NULL;
3794 nuh.userptr = block_state.user.buf;
3795 nuh.hostptr = block_state.host.buf;
3796 nuh.nicksize = 0;
3797 nuh.usersize = sizeof(block_state.user.buf);
3798 nuh.hostsize = sizeof(block_state.host.buf);
3799 split_nuh(&nuh);
3800
3801 conf = conf_make(CONF_OPER);
3802 conf->name = xstrdup(block_state.name.buf);
3803 conf->user = xstrdup(block_state.user.buf);
3804 conf->host = xstrdup(block_state.host.buf);
3805
3806 if (block_state.rpass.buf[0])
3807 conf->passwd = xstrdup(block_state.rpass.buf);
3808
3809 conf->flags = block_state.flags.value;
3810 conf->modes = block_state.modes.value;
3811 conf->port = block_state.port.value;
3812 conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3813
3814 conf_add_class_to_conf(conf, block_state.class.buf);
3815
3816 #ifdef HAVE_LIBCRYPTO
3817 if (block_state.file.buf[0])
3818 {
3819 BIO *file = NULL;
3820 RSA *pkey = NULL;
3821
3822 if ((file = BIO_new_file(block_state.file.buf, "r")) == NULL)
3823 {
3824 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
3825 break;
3826 }
3827
3828 if ((pkey = PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL)) == NULL)
3829 {
3830 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
3831 break;
3832 }
3833
3834 conf->rsa_public_key = pkey;
3835 BIO_set_close(file, BIO_CLOSE);
3836 BIO_free(file);
3837 }
3838 #endif /* HAVE_LIBCRYPTO */
3839 }
3840 }
3841 break;
3842
3843 case 142:
3844 /* Line 1778 of yacc.c */
3845 #line 984 "conf_parser.y"
3846 {
3847 if (conf_parser_ctx.pass == 2)
3848 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3849 }
3850 break;
3851
3852 case 143:
3853 /* Line 1778 of yacc.c */
3854 #line 990 "conf_parser.y"
3855 {
3856 if (conf_parser_ctx.pass == 2)
3857 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3858 }
3859 break;
3860
3861 case 144:
3862 /* Line 1778 of yacc.c */
3863 #line 996 "conf_parser.y"
3864 {
3865 if (conf_parser_ctx.pass == 2)
3866 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3867 }
3868 break;
3869
3870 case 145:
3871 /* Line 1778 of yacc.c */
3872 #line 1002 "conf_parser.y"
3873 {
3874 if (conf_parser_ctx.pass == 2)
3875 {
3876 if (yylval.number)
3877 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3878 else
3879 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3880 }
3881 }
3882 break;
3883
3884 case 146:
3885 /* Line 1778 of yacc.c */
3886 #line 1013 "conf_parser.y"
3887 {
3888 if (conf_parser_ctx.pass == 2)
3889 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3890 }
3891 break;
3892
3893 case 147:
3894 /* Line 1778 of yacc.c */
3895 #line 1019 "conf_parser.y"
3896 {
3897 if (conf_parser_ctx.pass == 2)
3898 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3899 }
3900 break;
3901
3902 case 148:
3903 /* Line 1778 of yacc.c */
3904 #line 1025 "conf_parser.y"
3905 {
3906 if (conf_parser_ctx.pass == 2)
3907 block_state.modes.value = 0;
3908 }
3909 break;
3910
3911 case 152:
3912 /* Line 1778 of yacc.c */
3913 #line 1032 "conf_parser.y"
3914 {
3915 if (conf_parser_ctx.pass == 2)
3916 block_state.modes.value |= UMODE_BOTS;
3917 }
3918 break;
3919
3920 case 153:
3921 /* Line 1778 of yacc.c */
3922 #line 1036 "conf_parser.y"
3923 {
3924 if (conf_parser_ctx.pass == 2)
3925 block_state.modes.value |= UMODE_CCONN;
3926 }
3927 break;
3928
3929 case 154:
3930 /* Line 1778 of yacc.c */
3931 #line 1040 "conf_parser.y"
3932 {
3933 if (conf_parser_ctx.pass == 2)
3934 block_state.modes.value |= UMODE_CCONN_FULL;
3935 }
3936 break;
3937
3938 case 155:
3939 /* Line 1778 of yacc.c */
3940 #line 1044 "conf_parser.y"
3941 {
3942 if (conf_parser_ctx.pass == 2)
3943 block_state.modes.value |= UMODE_DEAF;
3944 }
3945 break;
3946
3947 case 156:
3948 /* Line 1778 of yacc.c */
3949 #line 1048 "conf_parser.y"
3950 {
3951 if (conf_parser_ctx.pass == 2)
3952 block_state.modes.value |= UMODE_DEBUG;
3953 }
3954 break;
3955
3956 case 157:
3957 /* Line 1778 of yacc.c */
3958 #line 1052 "conf_parser.y"
3959 {
3960 if (conf_parser_ctx.pass == 2)
3961 block_state.modes.value |= UMODE_FULL;
3962 }
3963 break;
3964
3965 case 158:
3966 /* Line 1778 of yacc.c */
3967 #line 1056 "conf_parser.y"
3968 {
3969 if (conf_parser_ctx.pass == 2)
3970 block_state.modes.value |= UMODE_HIDDEN;
3971 }
3972 break;
3973
3974 case 159:
3975 /* Line 1778 of yacc.c */
3976 #line 1060 "conf_parser.y"
3977 {
3978 if (conf_parser_ctx.pass == 2)
3979 block_state.modes.value |= UMODE_SKILL;
3980 }
3981 break;
3982
3983 case 160:
3984 /* Line 1778 of yacc.c */
3985 #line 1064 "conf_parser.y"
3986 {
3987 if (conf_parser_ctx.pass == 2)
3988 block_state.modes.value |= UMODE_NCHANGE;
3989 }
3990 break;
3991
3992 case 161:
3993 /* Line 1778 of yacc.c */
3994 #line 1068 "conf_parser.y"
3995 {
3996 if (conf_parser_ctx.pass == 2)
3997 block_state.modes.value |= UMODE_REJ;
3998 }
3999 break;
4000
4001 case 162:
4002 /* Line 1778 of yacc.c */
4003 #line 1072 "conf_parser.y"
4004 {
4005 if (conf_parser_ctx.pass == 2)
4006 block_state.modes.value |= UMODE_UNAUTH;
4007 }
4008 break;
4009
4010 case 163:
4011 /* Line 1778 of yacc.c */
4012 #line 1076 "conf_parser.y"
4013 {
4014 if (conf_parser_ctx.pass == 2)
4015 block_state.modes.value |= UMODE_SPY;
4016 }
4017 break;
4018
4019 case 164:
4020 /* Line 1778 of yacc.c */
4021 #line 1080 "conf_parser.y"
4022 {
4023 if (conf_parser_ctx.pass == 2)
4024 block_state.modes.value |= UMODE_EXTERNAL;
4025 }
4026 break;
4027
4028 case 165:
4029 /* Line 1778 of yacc.c */
4030 #line 1084 "conf_parser.y"
4031 {
4032 if (conf_parser_ctx.pass == 2)
4033 block_state.modes.value |= UMODE_OPERWALL;
4034 }
4035 break;
4036
4037 case 166:
4038 /* Line 1778 of yacc.c */
4039 #line 1088 "conf_parser.y"
4040 {
4041 if (conf_parser_ctx.pass == 2)
4042 block_state.modes.value |= UMODE_SERVNOTICE;
4043 }
4044 break;
4045
4046 case 167:
4047 /* Line 1778 of yacc.c */
4048 #line 1092 "conf_parser.y"
4049 {
4050 if (conf_parser_ctx.pass == 2)
4051 block_state.modes.value |= UMODE_INVISIBLE;
4052 }
4053 break;
4054
4055 case 168:
4056 /* Line 1778 of yacc.c */
4057 #line 1096 "conf_parser.y"
4058 {
4059 if (conf_parser_ctx.pass == 2)
4060 block_state.modes.value |= UMODE_WALLOP;
4061 }
4062 break;
4063
4064 case 169:
4065 /* Line 1778 of yacc.c */
4066 #line 1100 "conf_parser.y"
4067 {
4068 if (conf_parser_ctx.pass == 2)
4069 block_state.modes.value |= UMODE_SOFTCALLERID;
4070 }
4071 break;
4072
4073 case 170:
4074 /* Line 1778 of yacc.c */
4075 #line 1104 "conf_parser.y"
4076 {
4077 if (conf_parser_ctx.pass == 2)
4078 block_state.modes.value |= UMODE_CALLERID;
4079 }
4080 break;
4081
4082 case 171:
4083 /* Line 1778 of yacc.c */
4084 #line 1108 "conf_parser.y"
4085 {
4086 if (conf_parser_ctx.pass == 2)
4087 block_state.modes.value |= UMODE_LOCOPS;
4088 }
4089 break;
4090
4091 case 172:
4092 /* Line 1778 of yacc.c */
4093 #line 1114 "conf_parser.y"
4094 {
4095 if (conf_parser_ctx.pass == 2)
4096 block_state.port.value = 0;
4097 }
4098 break;
4099
4100 case 176:
4101 /* Line 1778 of yacc.c */
4102 #line 1121 "conf_parser.y"
4103 {
4104 if (conf_parser_ctx.pass == 2)
4105 block_state.port.value |= OPER_FLAG_GLOBAL_KILL;
4106 }
4107 break;
4108
4109 case 177:
4110 /* Line 1778 of yacc.c */
4111 #line 1125 "conf_parser.y"
4112 {
4113 if (conf_parser_ctx.pass == 2)
4114 block_state.port.value |= OPER_FLAG_REMOTE;
4115 }
4116 break;
4117
4118 case 178:
4119 /* Line 1778 of yacc.c */
4120 #line 1129 "conf_parser.y"
4121 {
4122 if (conf_parser_ctx.pass == 2)
4123 block_state.port.value |= OPER_FLAG_K;
4124 }
4125 break;
4126
4127 case 179:
4128 /* Line 1778 of yacc.c */
4129 #line 1133 "conf_parser.y"
4130 {
4131 if (conf_parser_ctx.pass == 2)
4132 block_state.port.value |= OPER_FLAG_UNKLINE;
4133 }
4134 break;
4135
4136 case 180:
4137 /* Line 1778 of yacc.c */
4138 #line 1137 "conf_parser.y"
4139 {
4140 if (conf_parser_ctx.pass == 2)
4141 block_state.port.value |= OPER_FLAG_DLINE;
4142 }
4143 break;
4144
4145 case 181:
4146 /* Line 1778 of yacc.c */
4147 #line 1141 "conf_parser.y"
4148 {
4149 if (conf_parser_ctx.pass == 2)
4150 block_state.port.value |= OPER_FLAG_UNDLINE;
4151 }
4152 break;
4153
4154 case 182:
4155 /* Line 1778 of yacc.c */
4156 #line 1145 "conf_parser.y"
4157 {
4158 if (conf_parser_ctx.pass == 2)
4159 block_state.port.value |= OPER_FLAG_X;
4160 }
4161 break;
4162
4163 case 183:
4164 /* Line 1778 of yacc.c */
4165 #line 1149 "conf_parser.y"
4166 {
4167 if (conf_parser_ctx.pass == 2)
4168 block_state.port.value |= OPER_FLAG_GLINE;
4169 }
4170 break;
4171
4172 case 184:
4173 /* Line 1778 of yacc.c */
4174 #line 1153 "conf_parser.y"
4175 {
4176 if (conf_parser_ctx.pass == 2)
4177 block_state.port.value |= OPER_FLAG_DIE;
4178 }
4179 break;
4180
4181 case 185:
4182 /* Line 1778 of yacc.c */
4183 #line 1157 "conf_parser.y"
4184 {
4185 if (conf_parser_ctx.pass == 2)
4186 block_state.port.value |= OPER_FLAG_RESTART;
4187 }
4188 break;
4189
4190 case 186:
4191 /* Line 1778 of yacc.c */
4192 #line 1161 "conf_parser.y"
4193 {
4194 if (conf_parser_ctx.pass == 2)
4195 block_state.port.value |= OPER_FLAG_REHASH;
4196 }
4197 break;
4198
4199 case 187:
4200 /* Line 1778 of yacc.c */
4201 #line 1165 "conf_parser.y"
4202 {
4203 if (conf_parser_ctx.pass == 2)
4204 block_state.port.value |= OPER_FLAG_ADMIN;
4205 }
4206 break;
4207
4208 case 188:
4209 /* Line 1778 of yacc.c */
4210 #line 1169 "conf_parser.y"
4211 {
4212 if (conf_parser_ctx.pass == 2)
4213 block_state.port.value |= OPER_FLAG_N;
4214 }
4215 break;
4216
4217 case 189:
4218 /* Line 1778 of yacc.c */
4219 #line 1173 "conf_parser.y"
4220 {
4221 if (conf_parser_ctx.pass == 2)
4222 block_state.port.value |= OPER_FLAG_OPERWALL;
4223 }
4224 break;
4225
4226 case 190:
4227 /* Line 1778 of yacc.c */
4228 #line 1177 "conf_parser.y"
4229 {
4230 if (conf_parser_ctx.pass == 2)
4231 block_state.port.value |= OPER_FLAG_GLOBOPS;
4232 }
4233 break;
4234
4235 case 191:
4236 /* Line 1778 of yacc.c */
4237 #line 1181 "conf_parser.y"
4238 {
4239 if (conf_parser_ctx.pass == 2)
4240 block_state.port.value |= OPER_FLAG_OPER_SPY;
4241 }
4242 break;
4243
4244 case 192:
4245 /* Line 1778 of yacc.c */
4246 #line 1185 "conf_parser.y"
4247 {
4248 if (conf_parser_ctx.pass == 2)
4249 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4250 }
4251 break;
4252
4253 case 193:
4254 /* Line 1778 of yacc.c */
4255 #line 1189 "conf_parser.y"
4256 {
4257 if (conf_parser_ctx.pass == 2)
4258 block_state.port.value |= OPER_FLAG_SET;
4259 }
4260 break;
4261
4262 case 194:
4263 /* Line 1778 of yacc.c */
4264 #line 1193 "conf_parser.y"
4265 {
4266 if (conf_parser_ctx.pass == 2)
4267 block_state.port.value |= OPER_FLAG_MODULE;
4268 }
4269 break;
4270
4271 case 195:
4272 /* Line 1778 of yacc.c */
4273 #line 1203 "conf_parser.y"
4274 {
4275 if (conf_parser_ctx.pass != 1)
4276 break;
4277
4278 reset_block_state();
4279
4280 block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4281 block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4282 block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4283 block_state.max_sendq.value = DEFAULT_SENDQ;
4284 block_state.max_recvq.value = DEFAULT_RECVQ;
4285
4286 }
4287 break;
4288
4289 case 196:
4290 /* Line 1778 of yacc.c */
4291 #line 1216 "conf_parser.y"
4292 {
4293 struct ClassItem *class = NULL;
4294
4295 if (conf_parser_ctx.pass != 1)
4296 break;
4297
4298 if (!block_state.class.buf[0])
4299 break;
4300
4301 if (!(class = class_find(block_state.class.buf, 0)))
4302 class = class_make();
4303
4304 class->active = 1;
4305 MyFree(class->name);
4306 class->name = xstrdup(block_state.class.buf);
4307 class->ping_freq = block_state.ping_freq.value;
4308 class->max_perip = block_state.max_perip.value;
4309 class->con_freq = block_state.con_freq.value;
4310 class->max_total = block_state.max_total.value;
4311 class->max_global = block_state.max_global.value;
4312 class->max_local = block_state.max_local.value;
4313 class->max_ident = block_state.max_ident.value;
4314 class->max_sendq = block_state.max_sendq.value;
4315 class->max_recvq = block_state.max_recvq.value;
4316
4317 if (class->number_per_cidr && block_state.number_per_cidr.value)
4318 if ((class->cidr_bitlen_ipv4 && block_state.cidr_bitlen_ipv4.value) ||
4319 (class->cidr_bitlen_ipv6 && block_state.cidr_bitlen_ipv6.value))
4320 if ((class->cidr_bitlen_ipv4 != block_state.cidr_bitlen_ipv4.value) ||
4321 (class->cidr_bitlen_ipv6 != block_state.cidr_bitlen_ipv6.value))
4322 rebuild_cidr_list(class);
4323
4324 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4325 class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4326 class->number_per_cidr = block_state.number_per_cidr.value;
4327 }
4328 break;
4329
4330 case 213:
4331 /* Line 1778 of yacc.c */
4332 #line 1268 "conf_parser.y"
4333 {
4334 if (conf_parser_ctx.pass == 1)
4335 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4336 }
4337 break;
4338
4339 case 214:
4340 /* Line 1778 of yacc.c */
4341 #line 1274 "conf_parser.y"
4342 {
4343 if (conf_parser_ctx.pass == 1)
4344 block_state.ping_freq.value = (yyvsp[(3) - (4)].number);
4345 }
4346 break;
4347
4348 case 215:
4349 /* Line 1778 of yacc.c */
4350 #line 1280 "conf_parser.y"
4351 {
4352 if (conf_parser_ctx.pass == 1)
4353 block_state.max_perip.value = (yyvsp[(3) - (4)].number);
4354 }
4355 break;
4356
4357 case 216:
4358 /* Line 1778 of yacc.c */
4359 #line 1286 "conf_parser.y"
4360 {
4361 if (conf_parser_ctx.pass == 1)
4362 block_state.con_freq.value = (yyvsp[(3) - (4)].number);
4363 }
4364 break;
4365
4366 case 217:
4367 /* Line 1778 of yacc.c */
4368 #line 1292 "conf_parser.y"
4369 {
4370 if (conf_parser_ctx.pass == 1)
4371 block_state.max_total.value = (yyvsp[(3) - (4)].number);
4372 }
4373 break;
4374
4375 case 218:
4376 /* Line 1778 of yacc.c */
4377 #line 1298 "conf_parser.y"
4378 {
4379 if (conf_parser_ctx.pass == 1)
4380 block_state.max_global.value = (yyvsp[(3) - (4)].number);
4381 }
4382 break;
4383
4384 case 219:
4385 /* Line 1778 of yacc.c */
4386 #line 1304 "conf_parser.y"
4387 {
4388 if (conf_parser_ctx.pass == 1)
4389 block_state.max_local.value = (yyvsp[(3) - (4)].number);
4390 }
4391 break;
4392
4393 case 220:
4394 /* Line 1778 of yacc.c */
4395 #line 1310 "conf_parser.y"
4396 {
4397 if (conf_parser_ctx.pass == 1)
4398 block_state.max_ident.value = (yyvsp[(3) - (4)].number);
4399 }
4400 break;
4401
4402 case 221:
4403 /* Line 1778 of yacc.c */
4404 #line 1316 "conf_parser.y"
4405 {
4406 if (conf_parser_ctx.pass == 1)
4407 block_state.max_sendq.value = (yyvsp[(3) - (4)].number);
4408 }
4409 break;
4410
4411 case 222:
4412 /* Line 1778 of yacc.c */
4413 #line 1322 "conf_parser.y"
4414 {
4415 if (conf_parser_ctx.pass == 1)
4416 if ((yyvsp[(3) - (4)].number) >= CLIENT_FLOOD_MIN && (yyvsp[(3) - (4)].number) <= CLIENT_FLOOD_MAX)
4417 block_state.max_recvq.value = (yyvsp[(3) - (4)].number);
4418 }
4419 break;
4420
4421 case 223:
4422 /* Line 1778 of yacc.c */
4423 #line 1329 "conf_parser.y"
4424 {
4425 if (conf_parser_ctx.pass == 1)
4426 block_state.cidr_bitlen_ipv4.value = (yyvsp[(3) - (4)].number) > 32 ? 32 : (yyvsp[(3) - (4)].number);
4427 }
4428 break;
4429
4430 case 224:
4431 /* Line 1778 of yacc.c */
4432 #line 1335 "conf_parser.y"
4433 {
4434 if (conf_parser_ctx.pass == 1)
4435 block_state.cidr_bitlen_ipv6.value = (yyvsp[(3) - (4)].number) > 128 ? 128 : (yyvsp[(3) - (4)].number);
4436 }
4437 break;
4438
4439 case 225:
4440 /* Line 1778 of yacc.c */
4441 #line 1341 "conf_parser.y"
4442 {
4443 if (conf_parser_ctx.pass == 1)
4444 block_state.number_per_cidr.value = (yyvsp[(3) - (4)].number);
4445 }
4446 break;
4447
4448 case 226:
4449 /* Line 1778 of yacc.c */
4450 #line 1350 "conf_parser.y"
4451 {
4452 if (conf_parser_ctx.pass == 2)
4453 reset_block_state();
4454 }
4455 break;
4456
4457 case 228:
4458 /* Line 1778 of yacc.c */
4459 #line 1356 "conf_parser.y"
4460 {
4461 block_state.flags.value = 0;
4462 }
4463 break;
4464
4465 case 232:
4466 /* Line 1778 of yacc.c */
4467 #line 1362 "conf_parser.y"
4468 {
4469 if (conf_parser_ctx.pass == 2)
4470 block_state.flags.value |= LISTENER_SSL;
4471 }
4472 break;
4473
4474 case 233:
4475 /* Line 1778 of yacc.c */
4476 #line 1366 "conf_parser.y"
4477 {
4478 if (conf_parser_ctx.pass == 2)
4479 block_state.flags.value |= LISTENER_HIDDEN;
4480 }
4481 break;
4482
4483 case 234:
4484 /* Line 1778 of yacc.c */
4485 #line 1370 "conf_parser.y"
4486 {
4487 if (conf_parser_ctx.pass == 2)
4488 block_state.flags.value |= LISTENER_SERVER;
4489 }
4490 break;
4491
4492 case 242:
4493 /* Line 1778 of yacc.c */
4494 #line 1378 "conf_parser.y"
4495 { block_state.flags.value = 0; }
4496 break;
4497
4498 case 246:
4499 /* Line 1778 of yacc.c */
4500 #line 1383 "conf_parser.y"
4501 {
4502 if (conf_parser_ctx.pass == 2)
4503 {
4504 if (block_state.flags.value & LISTENER_SSL)
4505 #ifdef HAVE_LIBCRYPTO
4506 if (!ServerInfo.server_ctx)
4507 #endif
4508 {
4509 yyerror("SSL not available - port closed");
4510 break;
4511 }
4512 add_listener((yyvsp[(1) - (1)].number), block_state.addr.buf, block_state.flags.value);
4513 }
4514 }
4515 break;
4516
4517 case 247:
4518 /* Line 1778 of yacc.c */
4519 #line 1397 "conf_parser.y"
4520 {
4521 if (conf_parser_ctx.pass == 2)
4522 {
4523 int i;
4524
4525 if (block_state.flags.value & LISTENER_SSL)
4526 #ifdef HAVE_LIBCRYPTO
4527 if (!ServerInfo.server_ctx)
4528 #endif
4529 {
4530 yyerror("SSL not available - port closed");
4531 break;
4532 }
4533
4534 for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
4535 add_listener(i, block_state.addr.buf, block_state.flags.value);
4536 }
4537 }
4538 break;
4539
4540 case 248:
4541 /* Line 1778 of yacc.c */
4542 #line 1417 "conf_parser.y"
4543 {
4544 if (conf_parser_ctx.pass == 2)
4545 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4546 }
4547 break;
4548
4549 case 249:
4550 /* Line 1778 of yacc.c */
4551 #line 1423 "conf_parser.y"
4552 {
4553 if (conf_parser_ctx.pass == 2)
4554 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4555 }
4556 break;
4557
4558 case 250:
4559 /* Line 1778 of yacc.c */
4560 #line 1432 "conf_parser.y"
4561 {
4562 if (conf_parser_ctx.pass == 2)
4563 reset_block_state();
4564 }
4565 break;
4566
4567 case 251:
4568 /* Line 1778 of yacc.c */
4569 #line 1436 "conf_parser.y"
4570 {
4571 dlink_node *ptr = NULL;
4572
4573 if (conf_parser_ctx.pass != 2)
4574 break;
4575
4576 DLINK_FOREACH(ptr, block_state.mask.list.head)
4577 {
4578 struct MaskItem *conf = NULL;
4579 struct split_nuh_item nuh;
4580
4581 nuh.nuhmask = ptr->data;
4582 nuh.nickptr = NULL;
4583 nuh.userptr = block_state.user.buf;
4584 nuh.hostptr = block_state.host.buf;
4585 nuh.nicksize = 0;
4586 nuh.usersize = sizeof(block_state.user.buf);
4587 nuh.hostsize = sizeof(block_state.host.buf);
4588 split_nuh(&nuh);
4589
4590 conf = conf_make(CONF_CLIENT);
4591 conf->user = xstrdup(collapse(block_state.user.buf));
4592 conf->host = xstrdup(collapse(block_state.host.buf));
4593
4594 if (block_state.rpass.buf[0])
4595 conf->passwd = xstrdup(block_state.rpass.buf);
4596 if (block_state.name.buf[0])
4597 conf->passwd = xstrdup(block_state.name.buf);
4598
4599 conf->flags = block_state.flags.value;
4600 conf->port = block_state.port.value;
4601
4602 conf_add_class_to_conf(conf, block_state.class.buf);
4603 add_conf_by_address(CONF_CLIENT, conf);
4604 }
4605 }
4606 break;
4607
4608 case 263:
4609 /* Line 1778 of yacc.c */
4610 #line 1479 "conf_parser.y"
4611 {
4612 if (conf_parser_ctx.pass == 2)
4613 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4614 }
4615 break;
4616
4617 case 264:
4618 /* Line 1778 of yacc.c */
4619 #line 1485 "conf_parser.y"
4620 {
4621 if (conf_parser_ctx.pass == 2)
4622 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4623 }
4624 break;
4625
4626 case 265:
4627 /* Line 1778 of yacc.c */
4628 #line 1491 "conf_parser.y"
4629 {
4630 if (conf_parser_ctx.pass == 2)
4631 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4632 }
4633 break;
4634
4635 case 266:
4636 /* Line 1778 of yacc.c */
4637 #line 1497 "conf_parser.y"
4638 {
4639 if (conf_parser_ctx.pass == 2)
4640 {
4641 if (yylval.number)
4642 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4643 else
4644 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4645 }
4646 }
4647 break;
4648
4649 case 267:
4650 /* Line 1778 of yacc.c */
4651 #line 1508 "conf_parser.y"
4652 {
4653 if (conf_parser_ctx.pass == 2)
4654 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
4655 }
4656 break;
4657
4658 case 271:
4659 /* Line 1778 of yacc.c */
4660 #line 1515 "conf_parser.y"
4661 {
4662 if (conf_parser_ctx.pass == 2)
4663 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4664 }
4665 break;
4666
4667 case 272:
4668 /* Line 1778 of yacc.c */
4669 #line 1519 "conf_parser.y"
4670 {
4671 if (conf_parser_ctx.pass == 2)
4672 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4673 }
4674 break;
4675
4676 case 273:
4677 /* Line 1778 of yacc.c */
4678 #line 1523 "conf_parser.y"
4679 {
4680 if (conf_parser_ctx.pass == 2)
4681 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4682 }
4683 break;
4684
4685 case 274:
4686 /* Line 1778 of yacc.c */
4687 #line 1527 "conf_parser.y"
4688 {
4689 if (conf_parser_ctx.pass == 2)
4690 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4691 }
4692 break;
4693
4694 case 275:
4695 /* Line 1778 of yacc.c */
4696 #line 1531 "conf_parser.y"
4697 {
4698 if (conf_parser_ctx.pass == 2)
4699 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4700 }
4701 break;
4702
4703 case 276:
4704 /* Line 1778 of yacc.c */
4705 #line 1535 "conf_parser.y"
4706 {
4707 if (conf_parser_ctx.pass == 2)
4708 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4709 }
4710 break;
4711
4712 case 277:
4713 /* Line 1778 of yacc.c */
4714 #line 1539 "conf_parser.y"
4715 {
4716 if (conf_parser_ctx.pass == 2)
4717 block_state.flags.value |= CONF_FLAGS_EXEMPTGLINE;
4718 }
4719 break;
4720
4721 case 278:
4722 /* Line 1778 of yacc.c */
4723 #line 1543 "conf_parser.y"
4724 {
4725 if (conf_parser_ctx.pass == 2)
4726 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4727 }
4728 break;
4729
4730 case 279:
4731 /* Line 1778 of yacc.c */
4732 #line 1547 "conf_parser.y"
4733 {
4734 if (conf_parser_ctx.pass == 2)
4735 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4736 }
4737 break;
4738
4739 case 280:
4740 /* Line 1778 of yacc.c */
4741 #line 1553 "conf_parser.y"
4742 {
4743 if (conf_parser_ctx.pass != 2)
4744 break;
4745
4746 if (strlen(yylval.string) <= HOSTLEN && valid_hostname(yylval.string))
4747 {
4748 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4749 block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4750 }
4751 else
4752 ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4753 }
4754 break;
4755
4756 case 281:
4757 /* Line 1778 of yacc.c */
4758 #line 1567 "conf_parser.y"
4759 {
4760 if (conf_parser_ctx.pass != 2)
4761 break;
4762
4763 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4764 block_state.flags.value |= CONF_FLAGS_REDIR;
4765 }
4766 break;
4767
4768 case 282:
4769 /* Line 1778 of yacc.c */
4770 #line 1576 "conf_parser.y"
4771 {
4772 if (conf_parser_ctx.pass != 2)
4773 break;
4774
4775 block_state.flags.value |= CONF_FLAGS_REDIR;
4776 block_state.port.value = (yyvsp[(3) - (4)].number);
4777 }
4778 break;
4779
4780 case 283:
4781 /* Line 1778 of yacc.c */
4782 #line 1589 "conf_parser.y"
4783 {
4784 if (conf_parser_ctx.pass != 2)
4785 break;
4786
4787 reset_block_state();
4788 strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4789 }
4790 break;
4791
4792 case 291:
4793 /* Line 1778 of yacc.c */
4794 #line 1601 "conf_parser.y"
4795 {
4796 if (conf_parser_ctx.pass == 2)
4797 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4798 }
4799 break;
4800
4801 case 292:
4802 /* Line 1778 of yacc.c */
4803 #line 1607 "conf_parser.y"
4804 {
4805 if (conf_parser_ctx.pass != 2)
4806 break;
4807
4808 if (IsChanPrefix(*yylval.string))
4809 create_channel_resv(yylval.string, block_state.rpass.buf, 1);
4810 }
4811 break;
4812
4813 case 293:
4814 /* Line 1778 of yacc.c */
4815 #line 1616 "conf_parser.y"
4816 {
4817 if (conf_parser_ctx.pass == 2)
4818 create_nick_resv(yylval.string, block_state.rpass.buf, 1);
4819 }
4820 break;
4821
4822 case 299:
4823 /* Line 1778 of yacc.c */
4824 #line 1630 "conf_parser.y"
4825 {
4826 if (conf_parser_ctx.pass == 2)
4827 {
4828 if (valid_servname(yylval.string))
4829 {
4830 struct MaskItem *conf = conf_make(CONF_SERVICE);
4831 conf->name = xstrdup(yylval.string);
4832 }
4833 }
4834 }
4835 break;
4836
4837 case 300:
4838 /* Line 1778 of yacc.c */
4839 #line 1645 "conf_parser.y"
4840 {
4841 if (conf_parser_ctx.pass != 2)
4842 break;
4843
4844 reset_block_state();
4845
4846 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4847 strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4848 strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4849 block_state.flags.value = SHARED_ALL;
4850 }
4851 break;
4852
4853 case 301:
4854 /* Line 1778 of yacc.c */
4855 #line 1656 "conf_parser.y"
4856 {
4857 struct MaskItem *conf = NULL;
4858
4859 if (conf_parser_ctx.pass != 2)
4860 break;
4861
4862 conf = conf_make(CONF_ULINE);
4863 conf->flags = block_state.flags.value;
4864 conf->name = xstrdup(block_state.name.buf);
4865 conf->user = xstrdup(block_state.user.buf);
4866 conf->user = xstrdup(block_state.host.buf);
4867 }
4868 break;
4869
4870 case 308:
4871 /* Line 1778 of yacc.c */
4872 #line 1673 "conf_parser.y"
4873 {
4874 if (conf_parser_ctx.pass == 2)
4875 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4876 }
4877 break;
4878
4879 case 309:
4880 /* Line 1778 of yacc.c */
4881 #line 1679 "conf_parser.y"
4882 {
4883 if (conf_parser_ctx.pass == 2)
4884 {
4885 struct split_nuh_item nuh;
4886
4887 nuh.nuhmask = yylval.string;
4888 nuh.nickptr = NULL;
4889 nuh.userptr = block_state.user.buf;
4890 nuh.hostptr = block_state.host.buf;
4891
4892 nuh.nicksize = 0;
4893 nuh.usersize = sizeof(block_state.user.buf);
4894 nuh.hostsize = sizeof(block_state.host.buf);
4895
4896 split_nuh(&nuh);
4897 }
4898 }
4899 break;
4900
4901 case 310:
4902 /* Line 1778 of yacc.c */
4903 #line 1698 "conf_parser.y"
4904 {
4905 if (conf_parser_ctx.pass == 2)
4906 block_state.flags.value = 0;
4907 }
4908 break;
4909
4910 case 314:
4911 /* Line 1778 of yacc.c */
4912 #line 1705 "conf_parser.y"
4913 {
4914 if (conf_parser_ctx.pass == 2)
4915 block_state.flags.value |= SHARED_KLINE;
4916 }
4917 break;
4918
4919 case 315:
4920 /* Line 1778 of yacc.c */
4921 #line 1709 "conf_parser.y"
4922 {
4923 if (conf_parser_ctx.pass == 2)
4924 block_state.flags.value |= SHARED_UNKLINE;
4925 }
4926 break;
4927
4928 case 316:
4929 /* Line 1778 of yacc.c */
4930 #line 1713 "conf_parser.y"
4931 {
4932 if (conf_parser_ctx.pass == 2)
4933 block_state.flags.value |= SHARED_DLINE;
4934 }
4935 break;
4936
4937 case 317:
4938 /* Line 1778 of yacc.c */
4939 #line 1717 "conf_parser.y"
4940 {
4941 if (conf_parser_ctx.pass == 2)
4942 block_state.flags.value |= SHARED_UNDLINE;
4943 }
4944 break;
4945
4946 case 318:
4947 /* Line 1778 of yacc.c */
4948 #line 1721 "conf_parser.y"
4949 {
4950 if (conf_parser_ctx.pass == 2)
4951 block_state.flags.value |= SHARED_XLINE;
4952 }
4953 break;
4954
4955 case 319:
4956 /* Line 1778 of yacc.c */
4957 #line 1725 "conf_parser.y"
4958 {
4959 if (conf_parser_ctx.pass == 2)
4960 block_state.flags.value |= SHARED_UNXLINE;
4961 }
4962 break;
4963
4964 case 320:
4965 /* Line 1778 of yacc.c */
4966 #line 1729 "conf_parser.y"
4967 {
4968 if (conf_parser_ctx.pass == 2)
4969 block_state.flags.value |= SHARED_RESV;
4970 }
4971 break;
4972
4973 case 321:
4974 /* Line 1778 of yacc.c */
4975 #line 1733 "conf_parser.y"
4976 {
4977 if (conf_parser_ctx.pass == 2)
4978 block_state.flags.value |= SHARED_UNRESV;
4979 }
4980 break;
4981
4982 case 322:
4983 /* Line 1778 of yacc.c */
4984 #line 1737 "conf_parser.y"
4985 {
4986 if (conf_parser_ctx.pass == 2)
4987 block_state.flags.value |= SHARED_LOCOPS;
4988 }
4989 break;
4990
4991 case 323:
4992 /* Line 1778 of yacc.c */
4993 #line 1741 "conf_parser.y"
4994 {
4995 if (conf_parser_ctx.pass == 2)
4996 block_state.flags.value = SHARED_ALL;
4997 }
4998 break;
4999
5000 case 324:
5001 /* Line 1778 of yacc.c */
5002 #line 1750 "conf_parser.y"
5003 {
5004 if (conf_parser_ctx.pass != 2)
5005 break;
5006
5007 reset_block_state();
5008
5009 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
5010 block_state.flags.value = SHARED_ALL;
5011 }
5012 break;
5013
5014 case 325:
5015 /* Line 1778 of yacc.c */
5016 #line 1759 "conf_parser.y"
5017 {
5018 struct MaskItem *conf = NULL;
5019
5020 if (conf_parser_ctx.pass != 2)
5021 break;
5022
5023 conf = conf_make(CONF_CLUSTER);
5024 conf->flags = block_state.flags.value;
5025 conf->name = xstrdup(block_state.name.buf);
5026 }
5027 break;
5028
5029 case 331:
5030 /* Line 1778 of yacc.c */
5031 #line 1774 "conf_parser.y"
5032 {
5033 if (conf_parser_ctx.pass == 2)
5034 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5035 }
5036 break;
5037
5038 case 332:
5039 /* Line 1778 of yacc.c */
5040 #line 1780 "conf_parser.y"
5041 {
5042 if (conf_parser_ctx.pass == 2)
5043 block_state.flags.value = 0;
5044 }
5045 break;
5046
5047 case 336:
5048 /* Line 1778 of yacc.c */
5049 #line 1787 "conf_parser.y"
5050 {
5051 if (conf_parser_ctx.pass == 2)
5052 block_state.flags.value |= SHARED_KLINE;
5053 }
5054 break;
5055
5056 case 337:
5057 /* Line 1778 of yacc.c */
5058 #line 1791 "conf_parser.y"
5059 {
5060 if (conf_parser_ctx.pass == 2)
5061 block_state.flags.value |= SHARED_UNKLINE;
5062 }
5063 break;
5064
5065 case 338:
5066 /* Line 1778 of yacc.c */
5067 #line 1795 "conf_parser.y"
5068 {
5069 if (conf_parser_ctx.pass == 2)
5070 block_state.flags.value |= SHARED_DLINE;
5071 }
5072 break;
5073
5074 case 339:
5075 /* Line 1778 of yacc.c */
5076 #line 1799 "conf_parser.y"
5077 {
5078 if (conf_parser_ctx.pass == 2)
5079 block_state.flags.value |= SHARED_UNDLINE;
5080 }
5081 break;
5082
5083 case 340:
5084 /* Line 1778 of yacc.c */
5085 #line 1803 "conf_parser.y"
5086 {
5087 if (conf_parser_ctx.pass == 2)
5088 block_state.flags.value |= SHARED_XLINE;
5089 }
5090 break;
5091
5092 case 341:
5093 /* Line 1778 of yacc.c */
5094 #line 1807 "conf_parser.y"
5095 {
5096 if (conf_parser_ctx.pass == 2)
5097 block_state.flags.value |= SHARED_UNXLINE;
5098 }
5099 break;
5100
5101 case 342:
5102 /* Line 1778 of yacc.c */
5103 #line 1811 "conf_parser.y"
5104 {
5105 if (conf_parser_ctx.pass == 2)
5106 block_state.flags.value |= SHARED_RESV;
5107 }
5108 break;
5109
5110 case 343:
5111 /* Line 1778 of yacc.c */
5112 #line 1815 "conf_parser.y"
5113 {
5114 if (conf_parser_ctx.pass == 2)
5115 block_state.flags.value |= SHARED_UNRESV;
5116 }
5117 break;
5118
5119 case 344:
5120 /* Line 1778 of yacc.c */
5121 #line 1819 "conf_parser.y"
5122 {
5123 if (conf_parser_ctx.pass == 2)
5124 block_state.flags.value |= SHARED_LOCOPS;
5125 }
5126 break;
5127
5128 case 345:
5129 /* Line 1778 of yacc.c */
5130 #line 1823 "conf_parser.y"
5131 {
5132 if (conf_parser_ctx.pass == 2)
5133 block_state.flags.value = SHARED_ALL;
5134 }
5135 break;
5136
5137 case 346:
5138 /* Line 1778 of yacc.c */
5139 #line 1832 "conf_parser.y"
5140 {
5141
5142 if (conf_parser_ctx.pass != 2)
5143 break;
5144
5145 reset_block_state();
5146 block_state.port.value = PORTNUM;
5147 }
5148 break;
5149
5150 case 347:
5151 /* Line 1778 of yacc.c */
5152 #line 1840 "conf_parser.y"
5153 {
5154 struct MaskItem *conf = NULL;
5155 struct addrinfo hints, *res;
5156
5157 if (conf_parser_ctx.pass != 2)
5158 break;
5159
5160 if (!block_state.name.buf[0] ||
5161 !block_state.host.buf[0])
5162 break;
5163
5164 if (!(block_state.rpass.buf[0] ||
5165 block_state.spass.buf[0]))
5166 break;
5167
5168 if (has_wildcards(block_state.name.buf) ||
5169 has_wildcards(block_state.host.buf))
5170 break;
5171
5172 conf = conf_make(CONF_SERVER);
5173 conf->port = block_state.port.value;
5174 conf->flags = block_state.flags.value;
5175 conf->aftype = block_state.aftype.value;
5176 conf->host = xstrdup(block_state.host.buf);
5177 conf->name = xstrdup(block_state.name.buf);
5178 conf->passwd = xstrdup(block_state.rpass.buf);
5179 conf->spasswd = xstrdup(block_state.spass.buf);
5180 conf->cipher_list = xstrdup(block_state.ciph.buf);
5181
5182 dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5183 dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5184
5185 if (block_state.bind.buf[0])
5186 {
5187 memset(&hints, 0, sizeof(hints));
5188
5189 hints.ai_family = AF_UNSPEC;
5190 hints.ai_socktype = SOCK_STREAM;
5191 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5192
5193 if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5194 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5195 else
5196 {
5197 assert(res != NULL);
5198
5199 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5200 conf->bind.ss.ss_family = res->ai_family;
5201 conf->bind.ss_len = res->ai_addrlen;
5202 freeaddrinfo(res);
5203 }
5204 }
5205
5206 conf_add_class_to_conf(conf, block_state.class.buf);
5207 lookup_confhost(conf);
5208 }
5209 break;
5210
5211 case 364:
5212 /* Line 1778 of yacc.c */
5213 #line 1906 "conf_parser.y"
5214 {
5215 if (conf_parser_ctx.pass == 2)
5216 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5217 }
5218 break;
5219
5220 case 365:
5221 /* Line 1778 of yacc.c */
5222 #line 1912 "conf_parser.y"
5223 {
5224 if (conf_parser_ctx.pass == 2)
5225 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5226 }
5227 break;
5228
5229 case 366:
5230 /* Line 1778 of yacc.c */
5231 #line 1918 "conf_parser.y"
5232 {
5233 if (conf_parser_ctx.pass == 2)
5234 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5235 }
5236 break;
5237
5238 case 367:
5239 /* Line 1778 of yacc.c */
5240 #line 1924 "conf_parser.y"
5241 {
5242 if (conf_parser_ctx.pass != 2)
5243 break;
5244
5245 if ((yyvsp[(3) - (4)].string)[0] == ':')
5246 yyerror("Server passwords cannot begin with a colon");
5247 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5248 yyerror("Server passwords cannot contain spaces");
5249 else
5250 strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5251 }
5252 break;
5253
5254 case 368:
5255 /* Line 1778 of yacc.c */
5256 #line 1937 "conf_parser.y"
5257 {
5258 if (conf_parser_ctx.pass != 2)
5259 break;
5260
5261 if ((yyvsp[(3) - (4)].string)[0] == ':')
5262 yyerror("Server passwords cannot begin with a colon");
5263 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
5264 yyerror("Server passwords cannot contain spaces");
5265 else
5266 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5267 }
5268 break;
5269
5270 case 369:
5271 /* Line 1778 of yacc.c */
5272 #line 1950 "conf_parser.y"
5273 {
5274 if (conf_parser_ctx.pass == 2)
5275 block_state.port.value = (yyvsp[(3) - (4)].number);
5276 }
5277 break;
5278
5279 case 370:
5280 /* Line 1778 of yacc.c */
5281 #line 1956 "conf_parser.y"
5282 {
5283 if (conf_parser_ctx.pass == 2)
5284 block_state.aftype.value = AF_INET;
5285 }
5286 break;
5287
5288 case 371:
5289 /* Line 1778 of yacc.c */
5290 #line 1960 "conf_parser.y"
5291 {
5292 #ifdef IPV6
5293 if (conf_parser_ctx.pass == 2)
5294 block_state.aftype.value = AF_INET6;
5295 #endif
5296 }
5297 break;
5298
5299 case 372:
5300 /* Line 1778 of yacc.c */
5301 #line 1968 "conf_parser.y"
5302 {
5303 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5304 }
5305 break;
5306
5307 case 376:
5308 /* Line 1778 of yacc.c */
5309 #line 1974 "conf_parser.y"
5310 {
5311 if (conf_parser_ctx.pass == 2)
5312 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5313 }
5314 break;
5315
5316 case 377:
5317 /* Line 1778 of yacc.c */
5318 #line 1978 "conf_parser.y"
5319 {
5320 if (conf_parser_ctx.pass == 2)
5321 block_state.flags.value |= CONF_FLAGS_SSL;
5322 }
5323 break;
5324
5325 case 378:
5326 /* Line 1778 of yacc.c */
5327 #line 1984 "conf_parser.y"
5328 {
5329 if (conf_parser_ctx.pass == 2)
5330 {
5331 if (yylval.number)
5332 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5333 else
5334 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5335 }
5336 }
5337 break;
5338
5339 case 379:
5340 /* Line 1778 of yacc.c */
5341 #line 1995 "conf_parser.y"
5342 {
5343 if (conf_parser_ctx.pass == 2)
5344 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5345 }
5346 break;
5347
5348 case 380:
5349 /* Line 1778 of yacc.c */
5350 #line 2001 "conf_parser.y"
5351 {
5352 if (conf_parser_ctx.pass == 2)
5353 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5354 }
5355 break;
5356
5357 case 381:
5358 /* Line 1778 of yacc.c */
5359 #line 2007 "conf_parser.y"
5360 {
5361 if (conf_parser_ctx.pass == 2)
5362 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5363 }
5364 break;
5365
5366 case 382:
5367 /* Line 1778 of yacc.c */
5368 #line 2013 "conf_parser.y"
5369 {
5370 #ifdef HAVE_LIBCRYPTO
5371 if (conf_parser_ctx.pass == 2)
5372 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5373 #else
5374 if (conf_parser_ctx.pass == 2)
5375 yyerror("Ignoring connect::ciphers -- no OpenSSL support");
5376 #endif
5377 }
5378 break;
5379
5380 case 383:
5381 /* Line 1778 of yacc.c */
5382 #line 2028 "conf_parser.y"
5383 {
5384 if (conf_parser_ctx.pass == 2)
5385 reset_block_state();
5386 }
5387 break;
5388
5389 case 384:
5390 /* Line 1778 of yacc.c */
5391 #line 2032 "conf_parser.y"
5392 {
5393 struct MaskItem *conf = NULL;
5394
5395 if (conf_parser_ctx.pass != 2)
5396 break;
5397
5398 if (!block_state.user.buf[0] ||
5399 !block_state.host.buf[0])
5400 break;
5401
5402
5403 if (block_state.port.value == 1)
5404 {
5405 #ifdef HAVE_LIBPCRE
5406 void *exp_user = NULL;
5407 void *exp_host = NULL;
5408 const char *errptr = NULL;
5409
5410 if (!(exp_user = ircd_pcre_compile(block_state.user.buf, &errptr)) ||
5411 !(exp_host = ircd_pcre_compile(block_state.host.buf, &errptr)))
5412 {
5413 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: %s",
5414 errptr);
5415 break;
5416 }
5417
5418 conf = conf_make(CONF_RKLINE);
5419 conf->regexuser = exp_user;
5420 conf->regexhost = exp_host;
5421
5422 conf->user = xstrdup(block_state.user.buf);
5423 conf->host = xstrdup(block_state.host.buf);
5424
5425 if (block_state.rpass.buf[0])
5426 conf->reason = xstrdup(block_state.rpass.buf);
5427 else
5428 conf->reason = xstrdup(CONF_NOREASON);
5429 #else
5430 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based K-Line: no PCRE support");
5431 break;
5432 #endif
5433 }
5434 else
5435 {
5436 conf = conf_make(CONF_KLINE);
5437
5438 conf->user = xstrdup(block_state.user.buf);
5439 conf->host = xstrdup(block_state.host.buf);
5440
5441 if (block_state.rpass.buf[0])
5442 conf->reason = xstrdup(block_state.rpass.buf);
5443 else
5444 conf->reason = xstrdup(CONF_NOREASON);
5445 add_conf_by_address(CONF_KLINE, conf);
5446 }
5447 }
5448 break;
5449
5450 case 385:
5451 /* Line 1778 of yacc.c */
5452 #line 2090 "conf_parser.y"
5453 {
5454 if (conf_parser_ctx.pass == 2)
5455 block_state.port.value = 0;
5456 }
5457 break;
5458
5459 case 389:
5460 /* Line 1778 of yacc.c */
5461 #line 2097 "conf_parser.y"
5462 {
5463 if (conf_parser_ctx.pass == 2)
5464 block_state.port.value = 1;
5465 }
5466 break;
5467
5468 case 396:
5469 /* Line 1778 of yacc.c */
5470 #line 2106 "conf_parser.y"
5471 {
5472
5473 if (conf_parser_ctx.pass == 2)
5474 {
5475 struct split_nuh_item nuh;
5476
5477 nuh.nuhmask = yylval.string;
5478 nuh.nickptr = NULL;
5479 nuh.userptr = block_state.user.buf;
5480 nuh.hostptr = block_state.host.buf;
5481
5482 nuh.nicksize = 0;
5483 nuh.usersize = sizeof(block_state.user.buf);
5484 nuh.hostsize = sizeof(block_state.host.buf);
5485
5486 split_nuh(&nuh);
5487 }
5488 }
5489 break;
5490
5491 case 397:
5492 /* Line 1778 of yacc.c */
5493 #line 2126 "conf_parser.y"
5494 {
5495 if (conf_parser_ctx.pass == 2)
5496 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5497 }
5498 break;
5499
5500 case 398:
5501 /* Line 1778 of yacc.c */
5502 #line 2135 "conf_parser.y"
5503 {
5504 if (conf_parser_ctx.pass == 2)
5505 reset_block_state();
5506 }
5507 break;
5508
5509 case 399:
5510 /* Line 1778 of yacc.c */
5511 #line 2139 "conf_parser.y"
5512 {
5513 struct MaskItem *conf = NULL;
5514
5515 if (conf_parser_ctx.pass != 2)
5516 break;
5517
5518 if (!block_state.addr.buf[0])
5519 break;
5520
5521 if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5522 {
5523 conf = conf_make(CONF_DLINE);
5524 conf->host = xstrdup(block_state.addr.buf);
5525
5526 if (block_state.rpass.buf[0])
5527 conf->reason = xstrdup(block_state.rpass.buf);
5528 else
5529 conf->reason = xstrdup(CONF_NOREASON);
5530 add_conf_by_address(CONF_DLINE, conf);
5531 }
5532 }
5533 break;
5534
5535 case 405:
5536 /* Line 1778 of yacc.c */
5537 #line 2165 "conf_parser.y"
5538 {
5539 if (conf_parser_ctx.pass == 2)
5540 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5541 }
5542 break;
5543
5544 case 406:
5545 /* Line 1778 of yacc.c */
5546 #line 2171 "conf_parser.y"
5547 {
5548 if (conf_parser_ctx.pass == 2)
5549 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5550 }
5551 break;
5552
5553 case 412:
5554 /* Line 1778 of yacc.c */
5555 #line 2185 "conf_parser.y"
5556 {
5557 if (conf_parser_ctx.pass == 2)
5558 {
5559 if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5560 {
5561 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5562 conf->host = xstrdup(yylval.string);
5563
5564 add_conf_by_address(CONF_EXEMPT, conf);
5565 }
5566 }
5567 }
5568 break;
5569
5570 case 413:
5571 /* Line 1778 of yacc.c */
5572 #line 2202 "conf_parser.y"
5573 {
5574 if (conf_parser_ctx.pass == 2)
5575 reset_block_state();
5576 }
5577 break;
5578
5579 case 414:
5580 /* Line 1778 of yacc.c */
5581 #line 2206 "conf_parser.y"
5582 {
5583 struct MaskItem *conf = NULL;
5584
5585 if (conf_parser_ctx.pass != 2)
5586 break;
5587
5588 if (!block_state.name.buf[0])
5589 break;
5590
5591 if (block_state.port.value == 1)
5592 {
5593 #ifdef HAVE_LIBPCRE
5594 void *exp_p = NULL;
5595 const char *errptr = NULL;
5596
5597 if (!(exp_p = ircd_pcre_compile(block_state.name.buf, &errptr)))
5598 {
5599 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: %s",
5600 errptr);
5601 break;
5602 }
5603
5604 conf = conf_make(CONF_RXLINE);
5605 conf->regexuser = exp_p;
5606 #else
5607 ilog(LOG_TYPE_IRCD, "Failed to add regular expression based X-Line: no PCRE support");
5608 break;
5609 #endif
5610 }
5611 else
5612 conf = conf_make(CONF_XLINE);
5613
5614 conf->name = xstrdup(block_state.name.buf);
5615
5616 if (block_state.rpass.buf[0])
5617 conf->reason = xstrdup(block_state.rpass.buf);
5618 else
5619 conf->reason = xstrdup(CONF_NOREASON);
5620 }
5621 break;
5622
5623 case 415:
5624 /* Line 1778 of yacc.c */
5625 #line 2247 "conf_parser.y"
5626 {
5627 if (conf_parser_ctx.pass == 2)
5628 block_state.port.value = 0;
5629 }
5630 break;
5631
5632 case 419:
5633 /* Line 1778 of yacc.c */
5634 #line 2254 "conf_parser.y"
5635 {
5636 if (conf_parser_ctx.pass == 2)
5637 block_state.port.value = 1;
5638 }
5639 break;
5640
5641 case 426:
5642 /* Line 1778 of yacc.c */
5643 #line 2263 "conf_parser.y"
5644 {
5645 if (conf_parser_ctx.pass == 2)
5646 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5647 }
5648 break;
5649
5650 case 427:
5651 /* Line 1778 of yacc.c */
5652 #line 2269 "conf_parser.y"
5653 {
5654 if (conf_parser_ctx.pass == 2)
5655 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5656 }
5657 break;
5658
5659 case 481:
5660 /* Line 1778 of yacc.c */
5661 #line 2314 "conf_parser.y"
5662 {
5663 ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
5664 }
5665 break;
5666
5667 case 482:
5668 /* Line 1778 of yacc.c */
5669 #line 2319 "conf_parser.y"
5670 {
5671 if (conf_parser_ctx.pass == 2)
5672 ConfigFileEntry.glines = yylval.number;
5673 }
5674 break;
5675
5676 case 483:
5677 /* Line 1778 of yacc.c */
5678 #line 2325 "conf_parser.y"
5679 {
5680 if (conf_parser_ctx.pass == 2)
5681 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
5682 }
5683 break;
5684
5685 case 484:
5686 /* Line 1778 of yacc.c */
5687 #line 2331 "conf_parser.y"
5688 {
5689 if (conf_parser_ctx.pass == 2)
5690 ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
5691 }
5692 break;
5693
5694 case 485:
5695 /* Line 1778 of yacc.c */
5696 #line 2337 "conf_parser.y"
5697 {
5698 ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
5699 }
5700 break;
5701
5702 case 486:
5703 /* Line 1778 of yacc.c */
5704 #line 2342 "conf_parser.y"
5705 {
5706 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
5707 }
5708 break;
5709
5710 case 487:
5711 /* Line 1778 of yacc.c */
5712 #line 2347 "conf_parser.y"
5713 {
5714 ConfigFileEntry.tkline_expire_notices = yylval.number;
5715 }
5716 break;
5717
5718 case 488:
5719 /* Line 1778 of yacc.c */
5720 #line 2352 "conf_parser.y"
5721 {
5722 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
5723 }
5724 break;
5725
5726 case 489:
5727 /* Line 1778 of yacc.c */
5728 #line 2357 "conf_parser.y"
5729 {
5730 ConfigFileEntry.hide_spoof_ips = yylval.number;
5731 }
5732 break;
5733
5734 case 490:
5735 /* Line 1778 of yacc.c */
5736 #line 2362 "conf_parser.y"
5737 {
5738 ConfigFileEntry.ignore_bogus_ts = yylval.number;
5739 }
5740 break;
5741
5742 case 491:
5743 /* Line 1778 of yacc.c */
5744 #line 2367 "conf_parser.y"
5745 {
5746 ConfigFileEntry.disable_remote = yylval.number;
5747 }
5748 break;
5749
5750 case 492:
5751 /* Line 1778 of yacc.c */
5752 #line 2372 "conf_parser.y"
5753 {
5754 ConfigFileEntry.failed_oper_notice = yylval.number;
5755 }
5756 break;
5757
5758 case 493:
5759 /* Line 1778 of yacc.c */
5760 #line 2377 "conf_parser.y"
5761 {
5762 ConfigFileEntry.anti_nick_flood = yylval.number;
5763 }
5764 break;
5765
5766 case 494:
5767 /* Line 1778 of yacc.c */
5768 #line 2382 "conf_parser.y"
5769 {
5770 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
5771 }
5772 break;
5773
5774 case 495:
5775 /* Line 1778 of yacc.c */
5776 #line 2387 "conf_parser.y"
5777 {
5778 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
5779 }
5780 break;
5781
5782 case 496:
5783 /* Line 1778 of yacc.c */
5784 #line 2392 "conf_parser.y"
5785 {
5786 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
5787 }
5788 break;
5789
5790 case 497:
5791 /* Line 1778 of yacc.c */
5792 #line 2397 "conf_parser.y"
5793 {
5794 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
5795 }
5796 break;
5797
5798 case 498:
5799 /* Line 1778 of yacc.c */
5800 #line 2402 "conf_parser.y"
5801 {
5802 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
5803 }
5804 break;
5805
5806 case 499:
5807 /* Line 1778 of yacc.c */
5808 #line 2407 "conf_parser.y"
5809 {
5810 if (conf_parser_ctx.pass == 2)
5811 ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
5812 }
5813 break;
5814
5815 case 500:
5816 /* Line 1778 of yacc.c */
5817 #line 2413 "conf_parser.y"
5818 {
5819 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
5820 {
5821 ilog(LOG_TYPE_IRCD, "You haven't read your config file properly.");
5822 ilog(LOG_TYPE_IRCD, "There is a line in the example conf that will kill your server if not removed.");
5823 ilog(LOG_TYPE_IRCD, "Consider actually reading/editing the conf file, and removing this line.");
5824 exit(0);
5825 }
5826 }
5827 break;
5828
5829 case 501:
5830 /* Line 1778 of yacc.c */
5831 #line 2424 "conf_parser.y"
5832 {
5833 ConfigFileEntry.invisible_on_connect = yylval.number;
5834 }
5835 break;
5836
5837 case 502:
5838 /* Line 1778 of yacc.c */
5839 #line 2429 "conf_parser.y"
5840 {
5841 ConfigFileEntry.warn_no_nline = yylval.number;
5842 }
5843 break;
5844
5845 case 503:
5846 /* Line 1778 of yacc.c */
5847 #line 2434 "conf_parser.y"
5848 {
5849 ConfigFileEntry.stats_e_disabled = yylval.number;
5850 }
5851 break;
5852
5853 case 504:
5854 /* Line 1778 of yacc.c */
5855 #line 2439 "conf_parser.y"
5856 {
5857 ConfigFileEntry.stats_o_oper_only = yylval.number;
5858 }
5859 break;
5860
5861 case 505:
5862 /* Line 1778 of yacc.c */
5863 #line 2444 "conf_parser.y"
5864 {
5865 ConfigFileEntry.stats_P_oper_only = yylval.number;
5866 }
5867 break;
5868
5869 case 506:
5870 /* Line 1778 of yacc.c */
5871 #line 2449 "conf_parser.y"
5872 {
5873 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
5874 }
5875 break;
5876
5877 case 507:
5878 /* Line 1778 of yacc.c */
5879 #line 2452 "conf_parser.y"
5880 {
5881 ConfigFileEntry.stats_k_oper_only = 1;
5882 }
5883 break;
5884
5885 case 508:
5886 /* Line 1778 of yacc.c */
5887 #line 2457 "conf_parser.y"
5888 {
5889 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
5890 }
5891 break;
5892
5893 case 509:
5894 /* Line 1778 of yacc.c */
5895 #line 2460 "conf_parser.y"
5896 {
5897 ConfigFileEntry.stats_i_oper_only = 1;
5898 }
5899 break;
5900
5901 case 510:
5902 /* Line 1778 of yacc.c */
5903 #line 2465 "conf_parser.y"
5904 {
5905 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
5906 }
5907 break;
5908
5909 case 511:
5910 /* Line 1778 of yacc.c */
5911 #line 2470 "conf_parser.y"
5912 {
5913 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
5914 }
5915 break;
5916
5917 case 512:
5918 /* Line 1778 of yacc.c */
5919 #line 2475 "conf_parser.y"
5920 {
5921 ConfigFileEntry.opers_bypass_callerid = yylval.number;
5922 }
5923 break;
5924
5925 case 513:
5926 /* Line 1778 of yacc.c */
5927 #line 2480 "conf_parser.y"
5928 {
5929 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
5930 }
5931 break;
5932
5933 case 514:
5934 /* Line 1778 of yacc.c */
5935 #line 2485 "conf_parser.y"
5936 {
5937 ConfigFileEntry.short_motd = yylval.number;
5938 }
5939 break;
5940
5941 case 515:
5942 /* Line 1778 of yacc.c */
5943 #line 2490 "conf_parser.y"
5944 {
5945 ConfigFileEntry.no_oper_flood = yylval.number;
5946 }
5947 break;
5948
5949 case 516:
5950 /* Line 1778 of yacc.c */
5951 #line 2495 "conf_parser.y"
5952 {
5953 ConfigFileEntry.true_no_oper_flood = yylval.number;
5954 }
5955 break;
5956
5957 case 517:
5958 /* Line 1778 of yacc.c */
5959 #line 2500 "conf_parser.y"
5960 {
5961 ConfigFileEntry.oper_pass_resv = yylval.number;
5962 }
5963 break;
5964
5965 case 518:
5966 /* Line 1778 of yacc.c */
5967 #line 2505 "conf_parser.y"
5968 {
5969 if (conf_parser_ctx.pass == 2)
5970 {
5971 if (strlen(yylval.string) > LOCALE_LENGTH-2)
5972 yylval.string[LOCALE_LENGTH-1] = '\0';
5973
5974 set_locale(yylval.string);
5975 }
5976 }
5977 break;
5978
5979 case 519:
5980 /* Line 1778 of yacc.c */
5981 #line 2516 "conf_parser.y"
5982 {
5983 ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
5984 }
5985 break;
5986
5987 case 520:
5988 /* Line 1778 of yacc.c */
5989 #line 2521 "conf_parser.y"
5990 {
5991 ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
5992 }
5993 break;
5994
5995 case 521:
5996 /* Line 1778 of yacc.c */
5997 #line 2526 "conf_parser.y"
5998 {
5999 ConfigFileEntry.use_egd = yylval.number;
6000 }
6001 break;
6002
6003 case 522:
6004 /* Line 1778 of yacc.c */
6005 #line 2531 "conf_parser.y"
6006 {
6007 if (conf_parser_ctx.pass == 2)
6008 {
6009 MyFree(ConfigFileEntry.egdpool_path);
6010 ConfigFileEntry.egdpool_path = xstrdup(yylval.string);
6011 }
6012 }
6013 break;
6014
6015 case 523:
6016 /* Line 1778 of yacc.c */
6017 #line 2540 "conf_parser.y"
6018 {
6019 if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
6020 {
6021 MyFree(ConfigFileEntry.service_name);
6022 ConfigFileEntry.service_name = xstrdup(yylval.string);
6023 }
6024 }
6025 break;
6026
6027 case 524:
6028 /* Line 1778 of yacc.c */
6029 #line 2549 "conf_parser.y"
6030 {
6031 ConfigFileEntry.ping_cookie = yylval.number;
6032 }
6033 break;
6034
6035 case 525:
6036 /* Line 1778 of yacc.c */
6037 #line 2554 "conf_parser.y"
6038 {
6039 ConfigFileEntry.disable_auth = yylval.number;
6040 }
6041 break;
6042
6043 case 526:
6044 /* Line 1778 of yacc.c */
6045 #line 2559 "conf_parser.y"
6046 {
6047 ConfigFileEntry.throttle_time = yylval.number;
6048 }
6049 break;
6050
6051 case 527:
6052 /* Line 1778 of yacc.c */
6053 #line 2564 "conf_parser.y"
6054 {
6055 ConfigFileEntry.oper_umodes = 0;
6056 }
6057 break;
6058
6059 case 531:
6060 /* Line 1778 of yacc.c */
6061 #line 2570 "conf_parser.y"
6062 {
6063 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
6064 }
6065 break;
6066
6067 case 532:
6068 /* Line 1778 of yacc.c */
6069 #line 2573 "conf_parser.y"
6070 {
6071 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
6072 }
6073 break;
6074
6075 case 533:
6076 /* Line 1778 of yacc.c */
6077 #line 2576 "conf_parser.y"
6078 {
6079 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
6080 }
6081 break;
6082
6083 case 534:
6084 /* Line 1778 of yacc.c */
6085 #line 2579 "conf_parser.y"
6086 {
6087 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
6088 }
6089 break;
6090
6091 case 535:
6092 /* Line 1778 of yacc.c */
6093 #line 2582 "conf_parser.y"
6094 {
6095 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
6096 }
6097 break;
6098
6099 case 536:
6100 /* Line 1778 of yacc.c */
6101 #line 2585 "conf_parser.y"
6102 {
6103 ConfigFileEntry.oper_umodes |= UMODE_FULL;
6104 }
6105 break;
6106
6107 case 537:
6108 /* Line 1778 of yacc.c */
6109 #line 2588 "conf_parser.y"
6110 {
6111 ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
6112 }
6113 break;
6114
6115 case 538:
6116 /* Line 1778 of yacc.c */
6117 #line 2591 "conf_parser.y"
6118 {
6119 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
6120 }
6121 break;
6122
6123 case 539:
6124 /* Line 1778 of yacc.c */
6125 #line 2594 "conf_parser.y"
6126 {
6127 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
6128 }
6129 break;
6130
6131 case 540:
6132 /* Line 1778 of yacc.c */
6133 #line 2597 "conf_parser.y"
6134 {
6135 ConfigFileEntry.oper_umodes |= UMODE_REJ;
6136 }
6137 break;
6138
6139 case 541:
6140 /* Line 1778 of yacc.c */
6141 #line 2600 "conf_parser.y"
6142 {
6143 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
6144 }
6145 break;
6146
6147 case 542:
6148 /* Line 1778 of yacc.c */
6149 #line 2603 "conf_parser.y"
6150 {
6151 ConfigFileEntry.oper_umodes |= UMODE_SPY;
6152 }
6153 break;
6154
6155 case 543:
6156 /* Line 1778 of yacc.c */
6157 #line 2606 "conf_parser.y"
6158 {
6159 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
6160 }
6161 break;
6162
6163 case 544:
6164 /* Line 1778 of yacc.c */
6165 #line 2609 "conf_parser.y"
6166 {
6167 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
6168 }
6169 break;
6170
6171 case 545:
6172 /* Line 1778 of yacc.c */
6173 #line 2612 "conf_parser.y"
6174 {
6175 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
6176 }
6177 break;
6178
6179 case 546:
6180 /* Line 1778 of yacc.c */
6181 #line 2615 "conf_parser.y"
6182 {
6183 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
6184 }
6185 break;
6186
6187 case 547:
6188 /* Line 1778 of yacc.c */
6189 #line 2618 "conf_parser.y"
6190 {
6191 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
6192 }
6193 break;
6194
6195 case 548:
6196 /* Line 1778 of yacc.c */
6197 #line 2621 "conf_parser.y"
6198 {
6199 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
6200 }
6201 break;
6202
6203 case 549:
6204 /* Line 1778 of yacc.c */
6205 #line 2624 "conf_parser.y"
6206 {
6207 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
6208 }
6209 break;
6210
6211 case 550:
6212 /* Line 1778 of yacc.c */
6213 #line 2627 "conf_parser.y"
6214 {
6215 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
6216 }
6217 break;
6218
6219 case 551:
6220 /* Line 1778 of yacc.c */
6221 #line 2632 "conf_parser.y"
6222 {
6223 ConfigFileEntry.oper_only_umodes = 0;
6224 }
6225 break;
6226
6227 case 555:
6228 /* Line 1778 of yacc.c */
6229 #line 2638 "conf_parser.y"
6230 {
6231 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
6232 }
6233 break;
6234
6235 case 556:
6236 /* Line 1778 of yacc.c */
6237 #line 2641 "conf_parser.y"
6238 {
6239 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
6240 }
6241 break;
6242
6243 case 557:
6244 /* Line 1778 of yacc.c */
6245 #line 2644 "conf_parser.y"
6246 {
6247 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
6248 }
6249 break;
6250
6251 case 558:
6252 /* Line 1778 of yacc.c */
6253 #line 2647 "conf_parser.y"
6254 {
6255 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
6256 }
6257 break;
6258
6259 case 559:
6260 /* Line 1778 of yacc.c */
6261 #line 2650 "conf_parser.y"
6262 {
6263 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
6264 }
6265 break;
6266
6267 case 560:
6268 /* Line 1778 of yacc.c */
6269 #line 2653 "conf_parser.y"
6270 {
6271 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
6272 }
6273 break;
6274
6275 case 561:
6276 /* Line 1778 of yacc.c */
6277 #line 2656 "conf_parser.y"
6278 {
6279 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
6280 }
6281 break;
6282
6283 case 562:
6284 /* Line 1778 of yacc.c */
6285 #line 2659 "conf_parser.y"
6286 {
6287 ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
6288 }
6289 break;
6290
6291 case 563:
6292 /* Line 1778 of yacc.c */
6293 #line 2662 "conf_parser.y"
6294 {
6295 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
6296 }
6297 break;
6298
6299 case 564:
6300 /* Line 1778 of yacc.c */
6301 #line 2665 "conf_parser.y"
6302 {
6303 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
6304 }
6305 break;
6306
6307 case 565:
6308 /* Line 1778 of yacc.c */
6309 #line 2668 "conf_parser.y"
6310 {
6311 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
6312 }
6313 break;
6314
6315 case 566:
6316 /* Line 1778 of yacc.c */
6317 #line 2671 "conf_parser.y"
6318 {
6319 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
6320 }
6321 break;
6322
6323 case 567:
6324 /* Line 1778 of yacc.c */
6325 #line 2674 "conf_parser.y"
6326 {
6327 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
6328 }
6329 break;
6330
6331 case 568:
6332 /* Line 1778 of yacc.c */
6333 #line 2677 "conf_parser.y"
6334 {
6335 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
6336 }
6337 break;
6338
6339 case 569:
6340 /* Line 1778 of yacc.c */
6341 #line 2680 "conf_parser.y"
6342 {
6343 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
6344 }
6345 break;
6346
6347 case 570:
6348 /* Line 1778 of yacc.c */
6349 #line 2683 "conf_parser.y"
6350 {
6351 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
6352 }
6353 break;
6354
6355 case 571:
6356 /* Line 1778 of yacc.c */
6357 #line 2686 "conf_parser.y"
6358 {
6359 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
6360 }
6361 break;
6362
6363 case 572:
6364 /* Line 1778 of yacc.c */
6365 #line 2689 "conf_parser.y"
6366 {
6367 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
6368 }
6369 break;
6370
6371 case 573:
6372 /* Line 1778 of yacc.c */
6373 #line 2692 "conf_parser.y"
6374 {
6375 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
6376 }
6377 break;
6378
6379 case 574:
6380 /* Line 1778 of yacc.c */
6381 #line 2695 "conf_parser.y"
6382 {
6383 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
6384 }
6385 break;
6386
6387 case 575:
6388 /* Line 1778 of yacc.c */
6389 #line 2700 "conf_parser.y"
6390 {
6391 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
6392 }
6393 break;
6394
6395 case 576:
6396 /* Line 1778 of yacc.c */
6397 #line 2705 "conf_parser.y"
6398 {
6399 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
6400 }
6401 break;
6402
6403 case 577:
6404 /* Line 1778 of yacc.c */
6405 #line 2710 "conf_parser.y"
6406 {
6407 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
6408 }
6409 break;
6410
6411 case 596:
6412 /* Line 1778 of yacc.c */
6413 #line 2733 "conf_parser.y"
6414 {
6415 ConfigChannel.disable_fake_channels = yylval.number;
6416 }
6417 break;
6418
6419 case 597:
6420 /* Line 1778 of yacc.c */
6421 #line 2738 "conf_parser.y"
6422 {
6423 ConfigChannel.restrict_channels = yylval.number;
6424 }
6425 break;
6426
6427 case 598:
6428 /* Line 1778 of yacc.c */
6429 #line 2743 "conf_parser.y"
6430 {
6431 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
6432 }
6433 break;
6434
6435 case 599:
6436 /* Line 1778 of yacc.c */
6437 #line 2748 "conf_parser.y"
6438 {
6439 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
6440 }
6441 break;
6442
6443 case 600:
6444 /* Line 1778 of yacc.c */
6445 #line 2753 "conf_parser.y"
6446 {
6447 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
6448 }
6449 break;
6450
6451 case 601:
6452 /* Line 1778 of yacc.c */
6453 #line 2758 "conf_parser.y"
6454 {
6455 ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
6456 }
6457 break;
6458
6459 case 602:
6460 /* Line 1778 of yacc.c */
6461 #line 2763 "conf_parser.y"
6462 {
6463 ConfigChannel.quiet_on_ban = yylval.number;
6464 }
6465 break;
6466
6467 case 603:
6468 /* Line 1778 of yacc.c */
6469 #line 2768 "conf_parser.y"
6470 {
6471 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
6472 }
6473 break;
6474
6475 case 604:
6476 /* Line 1778 of yacc.c */
6477 #line 2773 "conf_parser.y"
6478 {
6479 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
6480 }
6481 break;
6482
6483 case 605:
6484 /* Line 1778 of yacc.c */
6485 #line 2778 "conf_parser.y"
6486 {
6487 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
6488 }
6489 break;
6490
6491 case 606:
6492 /* Line 1778 of yacc.c */
6493 #line 2783 "conf_parser.y"
6494 {
6495 ConfigChannel.no_create_on_split = yylval.number;
6496 }
6497 break;
6498
6499 case 607:
6500 /* Line 1778 of yacc.c */
6501 #line 2788 "conf_parser.y"
6502 {
6503 ConfigChannel.no_join_on_split = yylval.number;
6504 }
6505 break;
6506
6507 case 608:
6508 /* Line 1778 of yacc.c */
6509 #line 2793 "conf_parser.y"
6510 {
6511 GlobalSetOptions.joinfloodcount = yylval.number;
6512 }
6513 break;
6514
6515 case 609:
6516 /* Line 1778 of yacc.c */
6517 #line 2798 "conf_parser.y"
6518 {
6519 GlobalSetOptions.joinfloodtime = yylval.number;
6520 }
6521 break;
6522
6523 case 620:
6524 /* Line 1778 of yacc.c */
6525 #line 2816 "conf_parser.y"
6526 {
6527 if (conf_parser_ctx.pass == 2)
6528 ConfigServerHide.flatten_links = yylval.number;
6529 }
6530 break;
6531
6532 case 621:
6533 /* Line 1778 of yacc.c */
6534 #line 2822 "conf_parser.y"
6535 {
6536 if (conf_parser_ctx.pass == 2)
6537 ConfigServerHide.hide_servers = yylval.number;
6538 }
6539 break;
6540
6541 case 622:
6542 /* Line 1778 of yacc.c */
6543 #line 2828 "conf_parser.y"
6544 {
6545 if (conf_parser_ctx.pass == 2)
6546 {
6547 MyFree(ConfigServerHide.hidden_name);
6548 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6549 }
6550 }
6551 break;
6552
6553 case 623:
6554 /* Line 1778 of yacc.c */
6555 #line 2837 "conf_parser.y"
6556 {
6557 if (conf_parser_ctx.pass == 2)
6558 {
6559 if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
6560 {
6561 eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
6562 ConfigServerHide.links_disabled = 0;
6563 }
6564
6565 ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
6566 }
6567 }
6568 break;
6569
6570 case 624:
6571 /* Line 1778 of yacc.c */
6572 #line 2851 "conf_parser.y"
6573 {
6574 if (conf_parser_ctx.pass == 2)
6575 ConfigServerHide.hidden = yylval.number;
6576 }
6577 break;
6578
6579 case 625:
6580 /* Line 1778 of yacc.c */
6581 #line 2857 "conf_parser.y"
6582 {
6583 if (conf_parser_ctx.pass == 2)
6584 ConfigServerHide.hide_server_ips = yylval.number;
6585 }
6586 break;
6587
6588
6589 /* Line 1778 of yacc.c */
6590 #line 6591 "conf_parser.c"
6591 default: break;
6592 }
6593 /* User semantic actions sometimes alter yychar, and that requires
6594 that yytoken be updated with the new translation. We take the
6595 approach of translating immediately before every use of yytoken.
6596 One alternative is translating here after every semantic action,
6597 but that translation would be missed if the semantic action invokes
6598 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6599 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6600 incorrect destructor might then be invoked immediately. In the
6601 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6602 to an incorrect destructor call or verbose syntax error message
6603 before the lookahead is translated. */
6604 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6605
6606 YYPOPSTACK (yylen);
6607 yylen = 0;
6608 YY_STACK_PRINT (yyss, yyssp);
6609
6610 *++yyvsp = yyval;
6611
6612 /* Now `shift' the result of the reduction. Determine what state
6613 that goes to, based on the state we popped back to and the rule
6614 number reduced by. */
6615
6616 yyn = yyr1[yyn];
6617
6618 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6619 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6620 yystate = yytable[yystate];
6621 else
6622 yystate = yydefgoto[yyn - YYNTOKENS];
6623
6624 goto yynewstate;
6625
6626
6627 /*------------------------------------.
6628 | yyerrlab -- here on detecting error |
6629 `------------------------------------*/
6630 yyerrlab:
6631 /* Make sure we have latest lookahead translation. See comments at
6632 user semantic actions for why this is necessary. */
6633 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6634
6635 /* If not already recovering from an error, report this error. */
6636 if (!yyerrstatus)
6637 {
6638 ++yynerrs;
6639 #if ! YYERROR_VERBOSE
6640 yyerror (YY_("syntax error"));
6641 #else
6642 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6643 yyssp, yytoken)
6644 {
6645 char const *yymsgp = YY_("syntax error");
6646 int yysyntax_error_status;
6647 yysyntax_error_status = YYSYNTAX_ERROR;
6648 if (yysyntax_error_status == 0)
6649 yymsgp = yymsg;
6650 else if (yysyntax_error_status == 1)
6651 {
6652 if (yymsg != yymsgbuf)
6653 YYSTACK_FREE (yymsg);
6654 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6655 if (!yymsg)
6656 {
6657 yymsg = yymsgbuf;
6658 yymsg_alloc = sizeof yymsgbuf;
6659 yysyntax_error_status = 2;
6660 }
6661 else
6662 {
6663 yysyntax_error_status = YYSYNTAX_ERROR;
6664 yymsgp = yymsg;
6665 }
6666 }
6667 yyerror (yymsgp);
6668 if (yysyntax_error_status == 2)
6669 goto yyexhaustedlab;
6670 }
6671 # undef YYSYNTAX_ERROR
6672 #endif
6673 }
6674
6675
6676
6677 if (yyerrstatus == 3)
6678 {
6679 /* If just tried and failed to reuse lookahead token after an
6680 error, discard it. */
6681
6682 if (yychar <= YYEOF)
6683 {
6684 /* Return failure if at end of input. */
6685 if (yychar == YYEOF)
6686 YYABORT;
6687 }
6688 else
6689 {
6690 yydestruct ("Error: discarding",
6691 yytoken, &yylval);
6692 yychar = YYEMPTY;
6693 }
6694 }
6695
6696 /* Else will try to reuse lookahead token after shifting the error
6697 token. */
6698 goto yyerrlab1;
6699
6700
6701 /*---------------------------------------------------.
6702 | yyerrorlab -- error raised explicitly by YYERROR. |
6703 `---------------------------------------------------*/
6704 yyerrorlab:
6705
6706 /* Pacify compilers like GCC when the user code never invokes
6707 YYERROR and the label yyerrorlab therefore never appears in user
6708 code. */
6709 if (/*CONSTCOND*/ 0)
6710 goto yyerrorlab;
6711
6712 /* Do not reclaim the symbols of the rule which action triggered
6713 this YYERROR. */
6714 YYPOPSTACK (yylen);
6715 yylen = 0;
6716 YY_STACK_PRINT (yyss, yyssp);
6717 yystate = *yyssp;
6718 goto yyerrlab1;
6719
6720
6721 /*-------------------------------------------------------------.
6722 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6723 `-------------------------------------------------------------*/
6724 yyerrlab1:
6725 yyerrstatus = 3; /* Each real token shifted decrements this. */
6726
6727 for (;;)
6728 {
6729 yyn = yypact[yystate];
6730 if (!yypact_value_is_default (yyn))
6731 {
6732 yyn += YYTERROR;
6733 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6734 {
6735 yyn = yytable[yyn];
6736 if (0 < yyn)
6737 break;
6738 }
6739 }
6740
6741 /* Pop the current state because it cannot handle the error token. */
6742 if (yyssp == yyss)
6743 YYABORT;
6744
6745
6746 yydestruct ("Error: popping",
6747 yystos[yystate], yyvsp);
6748 YYPOPSTACK (1);
6749 yystate = *yyssp;
6750 YY_STACK_PRINT (yyss, yyssp);
6751 }
6752
6753 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6754 *++yyvsp = yylval;
6755 YY_IGNORE_MAYBE_UNINITIALIZED_END
6756
6757
6758 /* Shift the error token. */
6759 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6760
6761 yystate = yyn;
6762 goto yynewstate;
6763
6764
6765 /*-------------------------------------.
6766 | yyacceptlab -- YYACCEPT comes here. |
6767 `-------------------------------------*/
6768 yyacceptlab:
6769 yyresult = 0;
6770 goto yyreturn;
6771
6772 /*-----------------------------------.
6773 | yyabortlab -- YYABORT comes here. |
6774 `-----------------------------------*/
6775 yyabortlab:
6776 yyresult = 1;
6777 goto yyreturn;
6778
6779 #if !defined yyoverflow || YYERROR_VERBOSE
6780 /*-------------------------------------------------.
6781 | yyexhaustedlab -- memory exhaustion comes here. |
6782 `-------------------------------------------------*/
6783 yyexhaustedlab:
6784 yyerror (YY_("memory exhausted"));
6785 yyresult = 2;
6786 /* Fall through. */
6787 #endif
6788
6789 yyreturn:
6790 if (yychar != YYEMPTY)
6791 {
6792 /* Make sure we have latest lookahead translation. See comments at
6793 user semantic actions for why this is necessary. */
6794 yytoken = YYTRANSLATE (yychar);
6795 yydestruct ("Cleanup: discarding lookahead",
6796 yytoken, &yylval);
6797 }
6798 /* Do not reclaim the symbols of the rule which action triggered
6799 this YYABORT or YYACCEPT. */
6800 YYPOPSTACK (yylen);
6801 YY_STACK_PRINT (yyss, yyssp);
6802 while (yyssp != yyss)
6803 {
6804 yydestruct ("Cleanup: popping",
6805 yystos[*yyssp], yyvsp);
6806 YYPOPSTACK (1);
6807 }
6808 #ifndef yyoverflow
6809 if (yyss != yyssa)
6810 YYSTACK_FREE (yyss);
6811 #endif
6812 #if YYERROR_VERBOSE
6813 if (yymsg != yymsgbuf)
6814 YYSTACK_FREE (yymsg);
6815 #endif
6816 /* Make sure YYID is used. */
6817 return YYID (yyresult);
6818 }
6819
6820

Properties

Name Value
svn:eol-style native