ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 4070
Committed: Thu Jun 26 15:36:08 2014 UTC (11 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 222331 byte(s)
Log Message:
- Added proper ECDH support

File Contents

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

Properties

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