ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/branches/newio/src/conf_parser.c
Revision: 2381
Committed: Sat Jul 6 16:22:05 2013 UTC (10 years, 9 months ago) by michael
Content type: text/x-csrc
File size: 227452 byte(s)
Log Message:
- Add NEWIO branch

File Contents

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

Properties

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