ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1389
Committed: Tue May 1 13:08:29 2012 UTC (13 years, 3 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 232261 byte(s)
Log Message:
- rename some struct AccessItem members

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

Properties

Name Value
svn:eol-style native