ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5557
Committed: Fri Feb 13 20:05:13 2015 UTC (10 years, 6 months ago) by michael
Content type: text/x-csrc
File size: 226696 byte(s)
Log Message:
- Regenerate parser/lexer files

File Contents

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

Properties

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