ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2853
Committed: Sat Jan 18 16:34:27 2014 UTC (11 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 218988 byte(s)
Log Message:
- Regenerate parser

File Contents

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

Properties

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