ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 5025
Committed: Fri Dec 12 15:18:43 2014 UTC (10 years, 8 months ago) by michael
Content type: text/x-csrc
File size: 224457 byte(s)
Log Message:
- Added general::stats_m_oper_only configuration option

File Contents

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

Properties

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