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

Properties

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