ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 3933
Committed: Mon Jun 9 17:56:42 2014 UTC (11 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 221244 byte(s)
Log Message:
- Added max_channels to class{} blocks

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

Properties

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