ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 3513
Committed: Mon May 12 16:28:29 2014 UTC (12 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 220043 byte(s)
Log Message:
- Added usermode +p which hides channel list in WHOIS

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

Properties

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