ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1416
Committed: Sat May 26 11:45:43 2012 UTC (13 years, 3 months ago) by michael
Content type: text/x-csrc
File size: 231696 byte(s)
Log Message:
- Truncate 'cidr_bitlen_ipv4' to 32 if someone feeds us with a value higher
  than this. The same applies to 'cidr_bitlen_ipv6' that has a value higher
  than 128.

File Contents

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

Properties

Name Value
svn:eol-style native