ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2244
Committed: Sat Jun 15 22:08:10 2013 UTC (12 years, 2 months ago) by michael
Content type: text/x-csrc
File size: 225011 byte(s)
Log Message:
- rename 'fingerprint' configuration directive to 'ssl_certificate_fingerprint'

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

Properties

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