ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1309
Committed: Sun Mar 25 11:24:18 2012 UTC (12 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 234910 byte(s)
Log Message:
- renaming files:

  ircd_parser.y -> conf_parser.y
  ircd_lexer.l  -> conf_lexer.l
  s_conf.c      -> conf.c
  s_conf.h      -> conf.h
  s_log.c       -> log.c
  s_log.h       -> log.h

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

Properties

Name Value
svn:eol-style native