ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 2473
Committed: Fri Oct 11 16:44:17 2013 UTC (11 years, 10 months ago) by michael
Content type: text/x-csrc
File size: 218224 byte(s)
Log Message:
- Bison 3.0

File Contents

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

Properties

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