ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1516
Committed: Thu Aug 30 15:08:36 2012 UTC (11 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 224318 byte(s)
Log Message:
- Removed general::client_flood configuration option and added the
  new 'recvq' configuration directive to class{} blocks.
  The max size of a receive queue can be seen in "STATS Y" for each class
- Update NEWS

File Contents

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

Properties

Name Value
svn:eol-style native