ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.2.x/src/conf_parser.c
Revision: 4314
Committed: Thu Jul 31 18:53:31 2014 UTC (11 years ago) by michael
Content type: text/x-csrc
File size: 222741 byte(s)
Log Message:
- Improved AWAY throttling to allow for better fine-tuning

File Contents

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

Properties

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