ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1285
Committed: Sun Feb 5 15:12:59 2012 UTC (13 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 238528 byte(s)
Log Message:
- added CIDR support for operator{} blocks
- operator "name"{} is no longer supported

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

Properties

Name Value
svn:eol-style native