ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1028
Committed: Sun Nov 8 13:03:38 2009 UTC (15 years, 9 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid/src/ircd_parser.c
File size: 258621 byte(s)
Log Message:
- move ircd-hybrid-7.2 to trunk

File Contents

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

Properties

Name Value
svn:eol-style native