ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2228
Committed: Thu Jun 13 19:46:30 2013 UTC (12 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 225087 byte(s)
Log Message:
- Implement certificate fingerprint validation for oper{} and connect{} blocks.
  Some code taken from oftc-hybrid. Hello, stu!

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

Properties

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