ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1650
Committed: Sat Nov 10 20:57:51 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 218529 byte(s)
Log Message:
- Fixed few bugs that have been introduced with config rewrite
- Set some reasonable default values right after a class has been created

File Contents

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

Properties

Name Value
svn:eol-style native