ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1378
Committed: Mon Apr 30 19:43:34 2012 UTC (13 years, 4 months ago) by michael
Content type: text/x-csrc
File size: 235454 byte(s)
Log Message:
- Get rid of OPERNICKLEN. Oper login IDs are no longer limited to NICKLEN*2

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

Properties

Name Value
svn:eol-style native