ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/ircd_parser.c
Revision: 1011
Committed: Fri Sep 18 10:14:09 2009 UTC (14 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 258505 byte(s)
Log Message:
- move list manipulation routines from tools.c to list.c
- mem_frob() goes to memory.c
- sort out redundant/unneeded header includes

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, 515, 515, 516, 520,
1374 526, 560, 620, 634, 649, 658, 672, 681, 709, 739,
1375 762, 784, 786, 786, 787, 787, 788, 788, 790, 799,
1376 808, 821, 823, 824, 826, 826, 827, 828, 828, 829,
1377 829, 830, 830, 831, 831, 832, 833, 835, 839, 843,
1378 850, 857, 864, 871, 878, 885, 892, 899, 903, 907,
1379 911, 915, 919, 923, 929, 939, 938, 1032, 1032, 1033,
1380 1033, 1034, 1034, 1034, 1034, 1035, 1035, 1036, 1036, 1036,
1381 1037, 1037, 1037, 1038, 1038, 1038, 1039, 1039, 1039, 1039,
1382 1040, 1040, 1041, 1041, 1043, 1055, 1067, 1101, 1113, 1124,
1383 1166, 1176, 1175, 1181, 1181, 1182, 1186, 1190, 1194, 1198,
1384 1202, 1206, 1210, 1214, 1218, 1222, 1226, 1230, 1234, 1238,
1385 1242, 1246, 1250, 1254, 1260, 1271, 1282, 1293, 1304, 1315,
1386 1326, 1337, 1348, 1359, 1370, 1381, 1392, 1403, 1415, 1414,
1387 1418, 1418, 1419, 1419, 1420, 1420, 1422, 1429, 1436, 1443,
1388 1450, 1457, 1464, 1471, 1478, 1485, 1492, 1499, 1506, 1513,
1389 1520, 1527, 1541, 1540, 1590, 1590, 1592, 1592, 1593, 1594,
1390 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603,
1391 1604, 1605, 1607, 1616, 1625, 1631, 1637, 1643, 1649, 1655,
1392 1661, 1667, 1673, 1679, 1685, 1691, 1701, 1700, 1717, 1716,
1393 1721, 1721, 1722, 1726, 1730, 1738, 1738, 1739, 1739, 1739,
1394 1739, 1739, 1741, 1741, 1743, 1743, 1745, 1759, 1779, 1788,
1395 1801, 1800, 1869, 1869, 1870, 1870, 1870, 1870, 1871, 1871,
1396 1872, 1872, 1872, 1873, 1873, 1874, 1874, 1874, 1875, 1875,
1397 1875, 1877, 1914, 1927, 1938, 1947, 1959, 1958, 1962, 1962,
1398 1963, 1963, 1964, 1964, 1966, 1974, 1981, 1988, 1995, 2002,
1399 2009, 2016, 2023, 2030, 2039, 2050, 2061, 2072, 2083, 2094,
1400 2106, 2125, 2135, 2144, 2160, 2159, 2175, 2175, 2176, 2176,
1401 2176, 2176, 2178, 2187, 2202, 2216, 2215, 2231, 2231, 2232,
1402 2232, 2232, 2232, 2234, 2243, 2266, 2265, 2271, 2271, 2272,
1403 2276, 2280, 2284, 2288, 2292, 2296, 2300, 2304, 2308, 2312,
1404 2322, 2321, 2338, 2338, 2339, 2339, 2339, 2341, 2348, 2347,
1405 2353, 2353, 2354, 2358, 2362, 2366, 2370, 2374, 2378, 2382,
1406 2386, 2390, 2394, 2404, 2403, 2549, 2549, 2550, 2550, 2551,
1407 2551, 2551, 2552, 2552, 2553, 2553, 2554, 2554, 2554, 2555,
1408 2555, 2555, 2556, 2556, 2556, 2557, 2557, 2558, 2558, 2560,
1409 2572, 2584, 2593, 2619, 2637, 2655, 2661, 2665, 2673, 2683,
1410 2682, 2686, 2686, 2687, 2687, 2688, 2688, 2690, 2701, 2708,
1411 2715, 2722, 2732, 2773, 2784, 2795, 2810, 2821, 2832, 2845,
1412 2858, 2867, 2903, 2902, 2966, 2965, 2969, 2969, 2970, 2976,
1413 2976, 2977, 2977, 2977, 2977, 2979, 2998, 3008, 3007, 3030,
1414 3030, 3031, 3031, 3031, 3033, 3039, 3048, 3050, 3050, 3051,
1415 3051, 3053, 3072, 3071, 3119, 3118, 3122, 3122, 3123, 3129,
1416 3129, 3130, 3130, 3130, 3130, 3132, 3138, 3147, 3150, 3150,
1417 3151, 3151, 3152, 3152, 3153, 3153, 3154, 3154, 3155, 3155,
1418 3156, 3156, 3157, 3157, 3158, 3158, 3159, 3159, 3160, 3160,
1419 3161, 3161, 3162, 3162, 3163, 3163, 3164, 3164, 3165, 3165,
1420 3166, 3166, 3167, 3167, 3168, 3168, 3169, 3169, 3170, 3170,
1421 3171, 3172, 3172, 3173, 3173, 3174, 3174, 3175, 3175, 3176,
1422 3176, 3177, 3177, 3178, 3178, 3179, 3180, 3183, 3188, 3193,
1423 3198, 3203, 3208, 3213, 3218, 3223, 3228, 3233, 3238, 3243,
1424 3248, 3253, 3258, 3263, 3268, 3273, 3279, 3290, 3295, 3304,
1425 3309, 3314, 3319, 3324, 3329, 3332, 3337, 3340, 3345, 3350,
1426 3355, 3360, 3365, 3370, 3375, 3380, 3385, 3396, 3401, 3406,
1427 3411, 3420, 3452, 3470, 3475, 3484, 3489, 3494, 3500, 3499,
1428 3504, 3504, 3505, 3508, 3511, 3514, 3517, 3520, 3523, 3526,
1429 3529, 3532, 3535, 3538, 3541, 3544, 3547, 3550, 3553, 3556,
1430 3559, 3565, 3564, 3569, 3569, 3570, 3573, 3576, 3579, 3582,
1431 3585, 3588, 3591, 3594, 3597, 3600, 3603, 3606, 3609, 3612,
1432 3615, 3618, 3621, 3624, 3629, 3634, 3639, 3644, 3649, 3658,
1433 3657, 3681, 3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688,
1434 3690, 3696, 3703, 3702, 3707, 3707, 3708, 3712, 3718, 3752,
1435 3762, 3761, 3811, 3811, 3812, 3816, 3825, 3828, 3828, 3829,
1436 3829, 3830, 3830, 3831, 3831, 3832, 3832, 3833, 3833, 3834,
1437 3835, 3835, 3836, 3836, 3837, 3837, 3838, 3838, 3840, 3845,
1438 3850, 3855, 3860, 3865, 3870, 3875, 3880, 3885, 3890, 3895,
1439 3900, 3905, 3910, 3915, 3920, 3925, 3933, 3936, 3936, 3937,
1440 3937, 3938, 3939, 3940, 3940, 3941, 3942, 3944, 3950, 3956,
1441 3965, 3979, 3985, 3991
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 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3588 ServerInfo.tls_version = 0;
3589 }
3590 break;
3591
3592 case 65:
3593
3594 /* Line 1455 of yacc.c */
3595 #line 505 "ircd_parser.y"
3596 {
3597 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3598 {
3599 if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_SSLV3))
3600 SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3601 if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_TLSV1))
3602 SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3603 }
3604 }
3605 break;
3606
3607 case 68:
3608
3609 /* Line 1455 of yacc.c */
3610 #line 517 "ircd_parser.y"
3611 {
3612 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3613 ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_SSLV3;
3614 }
3615 break;
3616
3617 case 69:
3618
3619 /* Line 1455 of yacc.c */
3620 #line 521 "ircd_parser.y"
3621 {
3622 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3623 ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_TLSV1;
3624 }
3625 break;
3626
3627 case 70:
3628
3629 /* Line 1455 of yacc.c */
3630 #line 527 "ircd_parser.y"
3631 {
3632 #ifdef HAVE_LIBCRYPTO
3633 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3634 {
3635 if (!ServerInfo.rsa_private_key_file)
3636 {
3637 yyerror("No rsa_private_key_file specified, SSL disabled");
3638 break;
3639 }
3640
3641 if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3642 SSL_FILETYPE_PEM) <= 0)
3643 {
3644 yyerror(ERR_lib_error_string(ERR_get_error()));
3645 break;
3646 }
3647
3648 if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3649 SSL_FILETYPE_PEM) <= 0)
3650 {
3651 yyerror(ERR_lib_error_string(ERR_get_error()));
3652 break;
3653 }
3654
3655 if (!SSL_CTX_check_private_key(ServerInfo.server_ctx))
3656 {
3657 yyerror(ERR_lib_error_string(ERR_get_error()));
3658 break;
3659 }
3660 }
3661 #endif
3662 }
3663 break;
3664
3665 case 71:
3666
3667 /* Line 1455 of yacc.c */
3668 #line 561 "ircd_parser.y"
3669 {
3670 #ifdef HAVE_LIBCRYPTO
3671 if (conf_parser_ctx.pass == 1)
3672 {
3673 BIO *file;
3674
3675 if (ServerInfo.rsa_private_key)
3676 {
3677 RSA_free(ServerInfo.rsa_private_key);
3678 ServerInfo.rsa_private_key = NULL;
3679 }
3680
3681 if (ServerInfo.rsa_private_key_file)
3682 {
3683 MyFree(ServerInfo.rsa_private_key_file);
3684 ServerInfo.rsa_private_key_file = NULL;
3685 }
3686
3687 DupString(ServerInfo.rsa_private_key_file, yylval.string);
3688
3689 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3690 {
3691 yyerror("File open failed, ignoring");
3692 break;
3693 }
3694
3695 ServerInfo.rsa_private_key = (RSA *)PEM_read_bio_RSAPrivateKey(file, NULL,
3696 0, NULL);
3697
3698 BIO_set_close(file, BIO_CLOSE);
3699 BIO_free(file);
3700
3701 if (ServerInfo.rsa_private_key == NULL)
3702 {
3703 yyerror("Couldn't extract key, ignoring");
3704 break;
3705 }
3706
3707 if (!RSA_check_key(ServerInfo.rsa_private_key))
3708 {
3709 RSA_free(ServerInfo.rsa_private_key);
3710 ServerInfo.rsa_private_key = NULL;
3711
3712 yyerror("Invalid key, ignoring");
3713 break;
3714 }
3715
3716 /* require 2048 bit (256 byte) key */
3717 if (RSA_size(ServerInfo.rsa_private_key) != 256)
3718 {
3719 RSA_free(ServerInfo.rsa_private_key);
3720 ServerInfo.rsa_private_key = NULL;
3721
3722 yyerror("Not a 2048 bit key, ignoring");
3723 }
3724 }
3725 #endif
3726 }
3727 break;
3728
3729 case 72:
3730
3731 /* Line 1455 of yacc.c */
3732 #line 621 "ircd_parser.y"
3733 {
3734 /* this isn't rehashable */
3735 if (conf_parser_ctx.pass == 2)
3736 {
3737 if (ServerInfo.name == NULL)
3738 {
3739 /* the ircd will exit() in main() if we dont set one */
3740 if (strlen(yylval.string) <= HOSTLEN)
3741 DupString(ServerInfo.name, yylval.string);
3742 }
3743 }
3744 }
3745 break;
3746
3747 case 73:
3748
3749 /* Line 1455 of yacc.c */
3750 #line 635 "ircd_parser.y"
3751 {
3752 /* this isn't rehashable */
3753 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3754 {
3755 if (valid_sid(yylval.string))
3756 DupString(ServerInfo.sid, yylval.string);
3757 else
3758 {
3759 ilog(L_ERROR, "Ignoring config file entry SID -- invalid SID. Aborting.");
3760 exit(0);
3761 }
3762 }
3763 }
3764 break;
3765
3766 case 74:
3767
3768 /* Line 1455 of yacc.c */
3769 #line 650 "ircd_parser.y"
3770 {
3771 if (conf_parser_ctx.pass == 2)
3772 {
3773 MyFree(ServerInfo.description);
3774 DupString(ServerInfo.description,yylval.string);
3775 }
3776 }
3777 break;
3778
3779 case 75:
3780
3781 /* Line 1455 of yacc.c */
3782 #line 659 "ircd_parser.y"
3783 {
3784 if (conf_parser_ctx.pass == 2)
3785 {
3786 char *p;
3787
3788 if ((p = strchr(yylval.string, ' ')) != NULL)
3789 p = '\0';
3790
3791 MyFree(ServerInfo.network_name);
3792 DupString(ServerInfo.network_name, yylval.string);
3793 }
3794 }
3795 break;
3796
3797 case 76:
3798
3799 /* Line 1455 of yacc.c */
3800 #line 673 "ircd_parser.y"
3801 {
3802 if (conf_parser_ctx.pass == 2)
3803 {
3804 MyFree(ServerInfo.network_desc);
3805 DupString(ServerInfo.network_desc, yylval.string);
3806 }
3807 }
3808 break;
3809
3810 case 77:
3811
3812 /* Line 1455 of yacc.c */
3813 #line 682 "ircd_parser.y"
3814 {
3815 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3816 {
3817 struct addrinfo hints, *res;
3818
3819 memset(&hints, 0, sizeof(hints));
3820
3821 hints.ai_family = AF_UNSPEC;
3822 hints.ai_socktype = SOCK_STREAM;
3823 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3824
3825 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3826 ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
3827 else
3828 {
3829 assert(res != NULL);
3830
3831 memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3832 ServerInfo.ip.ss.ss_family = res->ai_family;
3833 ServerInfo.ip.ss_len = res->ai_addrlen;
3834 irc_freeaddrinfo(res);
3835
3836 ServerInfo.specific_ipv4_vhost = 1;
3837 }
3838 }
3839 }
3840 break;
3841
3842 case 78:
3843
3844 /* Line 1455 of yacc.c */
3845 #line 710 "ircd_parser.y"
3846 {
3847 #ifdef IPV6
3848 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3849 {
3850 struct addrinfo hints, *res;
3851
3852 memset(&hints, 0, sizeof(hints));
3853
3854 hints.ai_family = AF_UNSPEC;
3855 hints.ai_socktype = SOCK_STREAM;
3856 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3857
3858 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3859 ilog(L_ERROR, "Invalid netmask for server vhost6(%s)", yylval.string);
3860 else
3861 {
3862 assert(res != NULL);
3863
3864 memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3865 ServerInfo.ip6.ss.ss_family = res->ai_family;
3866 ServerInfo.ip6.ss_len = res->ai_addrlen;
3867 irc_freeaddrinfo(res);
3868
3869 ServerInfo.specific_ipv6_vhost = 1;
3870 }
3871 }
3872 #endif
3873 }
3874 break;
3875
3876 case 79:
3877
3878 /* Line 1455 of yacc.c */
3879 #line 740 "ircd_parser.y"
3880 {
3881 if (conf_parser_ctx.pass == 2)
3882 {
3883 recalc_fdlimit(NULL);
3884
3885 if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3886 {
3887 char buf[IRCD_BUFSIZE];
3888 ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3889 yyerror(buf);
3890 }
3891 else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3892 {
3893 char buf[IRCD_BUFSIZE];
3894 ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3895 yyerror(buf);
3896 }
3897 else
3898 ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3899 }
3900 }
3901 break;
3902
3903 case 80:
3904
3905 /* Line 1455 of yacc.c */
3906 #line 763 "ircd_parser.y"
3907 {
3908 if (conf_parser_ctx.pass == 2)
3909 {
3910 if (yylval.number)
3911 {
3912 ServerInfo.hub = 1;
3913 delete_capability("HUB");
3914 add_capability("HUB", CAP_HUB, 1);
3915 }
3916 else if (ServerInfo.hub)
3917 {
3918
3919 ServerInfo.hub = 0;
3920 delete_capability("HUB");
3921 }
3922 }
3923 }
3924 break;
3925
3926 case 88:
3927
3928 /* Line 1455 of yacc.c */
3929 #line 791 "ircd_parser.y"
3930 {
3931 if (conf_parser_ctx.pass == 2)
3932 {
3933 MyFree(AdminInfo.name);
3934 DupString(AdminInfo.name, yylval.string);
3935 }
3936 }
3937 break;
3938
3939 case 89:
3940
3941 /* Line 1455 of yacc.c */
3942 #line 800 "ircd_parser.y"
3943 {
3944 if (conf_parser_ctx.pass == 2)
3945 {
3946 MyFree(AdminInfo.email);
3947 DupString(AdminInfo.email, yylval.string);
3948 }
3949 }
3950 break;
3951
3952 case 90:
3953
3954 /* Line 1455 of yacc.c */
3955 #line 809 "ircd_parser.y"
3956 {
3957 if (conf_parser_ctx.pass == 2)
3958 {
3959 MyFree(AdminInfo.description);
3960 DupString(AdminInfo.description, yylval.string);
3961 }
3962 }
3963 break;
3964
3965 case 107:
3966
3967 /* Line 1455 of yacc.c */
3968 #line 836 "ircd_parser.y"
3969 {
3970 }
3971 break;
3972
3973 case 108:
3974
3975 /* Line 1455 of yacc.c */
3976 #line 840 "ircd_parser.y"
3977 {
3978 }
3979 break;
3980
3981 case 109:
3982
3983 /* Line 1455 of yacc.c */
3984 #line 844 "ircd_parser.y"
3985 {
3986 if (conf_parser_ctx.pass == 2)
3987 strlcpy(ConfigLoggingEntry.userlog, yylval.string,
3988 sizeof(ConfigLoggingEntry.userlog));
3989 }
3990 break;
3991
3992 case 110:
3993
3994 /* Line 1455 of yacc.c */
3995 #line 851 "ircd_parser.y"
3996 {
3997 if (conf_parser_ctx.pass == 2)
3998 strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
3999 sizeof(ConfigLoggingEntry.failed_operlog));
4000 }
4001 break;
4002
4003 case 111:
4004
4005 /* Line 1455 of yacc.c */
4006 #line 858 "ircd_parser.y"
4007 {
4008 if (conf_parser_ctx.pass == 2)
4009 strlcpy(ConfigLoggingEntry.operlog, yylval.string,
4010 sizeof(ConfigLoggingEntry.operlog));
4011 }
4012 break;
4013
4014 case 112:
4015
4016 /* Line 1455 of yacc.c */
4017 #line 865 "ircd_parser.y"
4018 {
4019 if (conf_parser_ctx.pass == 2)
4020 strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
4021 sizeof(ConfigLoggingEntry.operspylog));
4022 }
4023 break;
4024
4025 case 113:
4026
4027 /* Line 1455 of yacc.c */
4028 #line 872 "ircd_parser.y"
4029 {
4030 if (conf_parser_ctx.pass == 2)
4031 strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
4032 sizeof(ConfigLoggingEntry.glinelog));
4033 }
4034 break;
4035
4036 case 114:
4037
4038 /* Line 1455 of yacc.c */
4039 #line 879 "ircd_parser.y"
4040 {
4041 if (conf_parser_ctx.pass == 2)
4042 strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
4043 sizeof(ConfigLoggingEntry.klinelog));
4044 }
4045 break;
4046
4047 case 115:
4048
4049 /* Line 1455 of yacc.c */
4050 #line 886 "ircd_parser.y"
4051 {
4052 if (conf_parser_ctx.pass == 2)
4053 strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
4054 sizeof(ConfigLoggingEntry.ioerrlog));
4055 }
4056 break;
4057
4058 case 116:
4059
4060 /* Line 1455 of yacc.c */
4061 #line 893 "ircd_parser.y"
4062 {
4063 if (conf_parser_ctx.pass == 2)
4064 strlcpy(ConfigLoggingEntry.killlog, yylval.string,
4065 sizeof(ConfigLoggingEntry.killlog));
4066 }
4067 break;
4068
4069 case 117:
4070
4071 /* Line 1455 of yacc.c */
4072 #line 900 "ircd_parser.y"
4073 {
4074 if (conf_parser_ctx.pass == 2)
4075 set_log_level(L_CRIT);
4076 }
4077 break;
4078
4079 case 118:
4080
4081 /* Line 1455 of yacc.c */
4082 #line 904 "ircd_parser.y"
4083 {
4084 if (conf_parser_ctx.pass == 2)
4085 set_log_level(L_ERROR);
4086 }
4087 break;
4088
4089 case 119:
4090
4091 /* Line 1455 of yacc.c */
4092 #line 908 "ircd_parser.y"
4093 {
4094 if (conf_parser_ctx.pass == 2)
4095 set_log_level(L_WARN);
4096 }
4097 break;
4098
4099 case 120:
4100
4101 /* Line 1455 of yacc.c */
4102 #line 912 "ircd_parser.y"
4103 {
4104 if (conf_parser_ctx.pass == 2)
4105 set_log_level(L_NOTICE);
4106 }
4107 break;
4108
4109 case 121:
4110
4111 /* Line 1455 of yacc.c */
4112 #line 916 "ircd_parser.y"
4113 {
4114 if (conf_parser_ctx.pass == 2)
4115 set_log_level(L_TRACE);
4116 }
4117 break;
4118
4119 case 122:
4120
4121 /* Line 1455 of yacc.c */
4122 #line 920 "ircd_parser.y"
4123 {
4124 if (conf_parser_ctx.pass == 2)
4125 set_log_level(L_INFO);
4126 }
4127 break;
4128
4129 case 123:
4130
4131 /* Line 1455 of yacc.c */
4132 #line 924 "ircd_parser.y"
4133 {
4134 if (conf_parser_ctx.pass == 2)
4135 set_log_level(L_DEBUG);
4136 }
4137 break;
4138
4139 case 124:
4140
4141 /* Line 1455 of yacc.c */
4142 #line 930 "ircd_parser.y"
4143 {
4144 if (conf_parser_ctx.pass == 2)
4145 ConfigLoggingEntry.use_logging = yylval.number;
4146 }
4147 break;
4148
4149 case 125:
4150
4151 /* Line 1455 of yacc.c */
4152 #line 939 "ircd_parser.y"
4153 {
4154 if (conf_parser_ctx.pass == 2)
4155 {
4156 yy_conf = make_conf_item(OPER_TYPE);
4157 yy_aconf = map_to_conf(yy_conf);
4158 SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
4159 }
4160 else
4161 {
4162 MyFree(class_name);
4163 class_name = NULL;
4164 }
4165 }
4166 break;
4167
4168 case 126:
4169
4170 /* Line 1455 of yacc.c */
4171 #line 952 "ircd_parser.y"
4172 {
4173 if (conf_parser_ctx.pass == 2)
4174 {
4175 struct CollectItem *yy_tmp;
4176 dlink_node *ptr;
4177 dlink_node *next_ptr;
4178
4179 conf_add_class_to_conf(yy_conf, class_name);
4180
4181 /* Now, make sure there is a copy of the "base" given oper
4182 * block in each of the collected copies
4183 */
4184
4185 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4186 {
4187 struct AccessItem *new_aconf;
4188 struct ConfItem *new_conf;
4189 yy_tmp = ptr->data;
4190
4191 new_conf = make_conf_item(OPER_TYPE);
4192 new_aconf = (struct AccessItem *)map_to_conf(new_conf);
4193
4194 new_aconf->flags = yy_aconf->flags;
4195
4196 if (yy_conf->name != NULL)
4197 DupString(new_conf->name, yy_conf->name);
4198 if (yy_tmp->user != NULL)
4199 DupString(new_aconf->user, yy_tmp->user);
4200 else
4201 DupString(new_aconf->user, "*");
4202 if (yy_tmp->host != NULL)
4203 DupString(new_aconf->host, yy_tmp->host);
4204 else
4205 DupString(new_aconf->host, "*");
4206 conf_add_class_to_conf(new_conf, class_name);
4207 if (yy_aconf->passwd != NULL)
4208 DupString(new_aconf->passwd, yy_aconf->passwd);
4209
4210 new_aconf->port = yy_aconf->port;
4211 #ifdef HAVE_LIBCRYPTO
4212 if (yy_aconf->rsa_public_key_file != NULL)
4213 {
4214 BIO *file;
4215
4216 DupString(new_aconf->rsa_public_key_file,
4217 yy_aconf->rsa_public_key_file);
4218
4219 file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4220 new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4221 NULL, 0, NULL);
4222 BIO_set_close(file, BIO_CLOSE);
4223 BIO_free(file);
4224 }
4225 #endif
4226
4227 #ifdef HAVE_LIBCRYPTO
4228 if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4229 && yy_tmp->host)
4230 #else
4231 if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4232 #endif
4233 {
4234 conf_add_class_to_conf(new_conf, class_name);
4235 if (yy_tmp->name != NULL)
4236 DupString(new_conf->name, yy_tmp->name);
4237 }
4238
4239 dlinkDelete(&yy_tmp->node, &col_conf_list);
4240 free_collect_item(yy_tmp);
4241 }
4242
4243 yy_conf = NULL;
4244 yy_aconf = NULL;
4245
4246
4247 MyFree(class_name);
4248 class_name = NULL;
4249 }
4250 }
4251 break;
4252
4253 case 154:
4254
4255 /* Line 1455 of yacc.c */
4256 #line 1044 "ircd_parser.y"
4257 {
4258 if (conf_parser_ctx.pass == 2)
4259 {
4260 if (strlen(yylval.string) > OPERNICKLEN)
4261 yylval.string[OPERNICKLEN] = '\0';
4262
4263 MyFree(yy_conf->name);
4264 DupString(yy_conf->name, yylval.string);
4265 }
4266 }
4267 break;
4268
4269 case 155:
4270
4271 /* Line 1455 of yacc.c */
4272 #line 1056 "ircd_parser.y"
4273 {
4274 if (conf_parser_ctx.pass == 2)
4275 {
4276 if (strlen(yylval.string) > OPERNICKLEN)
4277 yylval.string[OPERNICKLEN] = '\0';
4278
4279 MyFree(yy_conf->name);
4280 DupString(yy_conf->name, yylval.string);
4281 }
4282 }
4283 break;
4284
4285 case 156:
4286
4287 /* Line 1455 of yacc.c */
4288 #line 1068 "ircd_parser.y"
4289 {
4290 if (conf_parser_ctx.pass == 2)
4291 {
4292 struct split_nuh_item nuh;
4293
4294 nuh.nuhmask = yylval.string;
4295 nuh.nickptr = NULL;
4296 nuh.userptr = userbuf;
4297 nuh.hostptr = hostbuf;
4298
4299 nuh.nicksize = 0;
4300 nuh.usersize = sizeof(userbuf);
4301 nuh.hostsize = sizeof(hostbuf);
4302
4303 split_nuh(&nuh);
4304
4305 if (yy_aconf->user == NULL)
4306 {
4307 DupString(yy_aconf->user, userbuf);
4308 DupString(yy_aconf->host, hostbuf);
4309 }
4310 else
4311 {
4312 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4313
4314 DupString(yy_tmp->user, userbuf);
4315 DupString(yy_tmp->host, hostbuf);
4316
4317 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4318 }
4319 }
4320 }
4321 break;
4322
4323 case 157:
4324
4325 /* Line 1455 of yacc.c */
4326 #line 1102 "ircd_parser.y"
4327 {
4328 if (conf_parser_ctx.pass == 2)
4329 {
4330 if (yy_aconf->passwd != NULL)
4331 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4332
4333 MyFree(yy_aconf->passwd);
4334 DupString(yy_aconf->passwd, yylval.string);
4335 }
4336 }
4337 break;
4338
4339 case 158:
4340
4341 /* Line 1455 of yacc.c */
4342 #line 1114 "ircd_parser.y"
4343 {
4344 if (conf_parser_ctx.pass == 2)
4345 {
4346 if (yylval.number)
4347 SetConfEncrypted(yy_aconf);
4348 else
4349 ClearConfEncrypted(yy_aconf);
4350 }
4351 }
4352 break;
4353
4354 case 159:
4355
4356 /* Line 1455 of yacc.c */
4357 #line 1125 "ircd_parser.y"
4358 {
4359 #ifdef HAVE_LIBCRYPTO
4360 if (conf_parser_ctx.pass == 2)
4361 {
4362 BIO *file;
4363
4364 if (yy_aconf->rsa_public_key != NULL)
4365 {
4366 RSA_free(yy_aconf->rsa_public_key);
4367 yy_aconf->rsa_public_key = NULL;
4368 }
4369
4370 if (yy_aconf->rsa_public_key_file != NULL)
4371 {
4372 MyFree(yy_aconf->rsa_public_key_file);
4373 yy_aconf->rsa_public_key_file = NULL;
4374 }
4375
4376 DupString(yy_aconf->rsa_public_key_file, yylval.string);
4377 file = BIO_new_file(yylval.string, "r");
4378
4379 if (file == NULL)
4380 {
4381 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4382 break;
4383 }
4384
4385 yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4386
4387 if (yy_aconf->rsa_public_key == NULL)
4388 {
4389 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4390 break;
4391 }
4392
4393 BIO_set_close(file, BIO_CLOSE);
4394 BIO_free(file);
4395 }
4396 #endif /* HAVE_LIBCRYPTO */
4397 }
4398 break;
4399
4400 case 160:
4401
4402 /* Line 1455 of yacc.c */
4403 #line 1167 "ircd_parser.y"
4404 {
4405 if (conf_parser_ctx.pass == 2)
4406 {
4407 MyFree(class_name);
4408 DupString(class_name, yylval.string);
4409 }
4410 }
4411 break;
4412
4413 case 161:
4414
4415 /* Line 1455 of yacc.c */
4416 #line 1176 "ircd_parser.y"
4417 {
4418 if (conf_parser_ctx.pass == 2)
4419 yy_aconf->modes = 0;
4420 }
4421 break;
4422
4423 case 165:
4424
4425 /* Line 1455 of yacc.c */
4426 #line 1183 "ircd_parser.y"
4427 {
4428 if (conf_parser_ctx.pass == 2)
4429 yy_aconf->modes |= UMODE_BOTS;
4430 }
4431 break;
4432
4433 case 166:
4434
4435 /* Line 1455 of yacc.c */
4436 #line 1187 "ircd_parser.y"
4437 {
4438 if (conf_parser_ctx.pass == 2)
4439 yy_aconf->modes |= UMODE_CCONN;
4440 }
4441 break;
4442
4443 case 167:
4444
4445 /* Line 1455 of yacc.c */
4446 #line 1191 "ircd_parser.y"
4447 {
4448 if (conf_parser_ctx.pass == 2)
4449 yy_aconf->modes |= UMODE_CCONN_FULL;
4450 }
4451 break;
4452
4453 case 168:
4454
4455 /* Line 1455 of yacc.c */
4456 #line 1195 "ircd_parser.y"
4457 {
4458 if (conf_parser_ctx.pass == 2)
4459 yy_aconf->modes |= UMODE_DEAF;
4460 }
4461 break;
4462
4463 case 169:
4464
4465 /* Line 1455 of yacc.c */
4466 #line 1199 "ircd_parser.y"
4467 {
4468 if (conf_parser_ctx.pass == 2)
4469 yy_aconf->modes |= UMODE_DEBUG;
4470 }
4471 break;
4472
4473 case 170:
4474
4475 /* Line 1455 of yacc.c */
4476 #line 1203 "ircd_parser.y"
4477 {
4478 if (conf_parser_ctx.pass == 2)
4479 yy_aconf->modes |= UMODE_FULL;
4480 }
4481 break;
4482
4483 case 171:
4484
4485 /* Line 1455 of yacc.c */
4486 #line 1207 "ircd_parser.y"
4487 {
4488 if (conf_parser_ctx.pass == 2)
4489 yy_aconf->modes |= UMODE_SKILL;
4490 }
4491 break;
4492
4493 case 172:
4494
4495 /* Line 1455 of yacc.c */
4496 #line 1211 "ircd_parser.y"
4497 {
4498 if (conf_parser_ctx.pass == 2)
4499 yy_aconf->modes |= UMODE_NCHANGE;
4500 }
4501 break;
4502
4503 case 173:
4504
4505 /* Line 1455 of yacc.c */
4506 #line 1215 "ircd_parser.y"
4507 {
4508 if (conf_parser_ctx.pass == 2)
4509 yy_aconf->modes |= UMODE_REJ;
4510 }
4511 break;
4512
4513 case 174:
4514
4515 /* Line 1455 of yacc.c */
4516 #line 1219 "ircd_parser.y"
4517 {
4518 if (conf_parser_ctx.pass == 2)
4519 yy_aconf->modes |= UMODE_UNAUTH;
4520 }
4521 break;
4522
4523 case 175:
4524
4525 /* Line 1455 of yacc.c */
4526 #line 1223 "ircd_parser.y"
4527 {
4528 if (conf_parser_ctx.pass == 2)
4529 yy_aconf->modes |= UMODE_SPY;
4530 }
4531 break;
4532
4533 case 176:
4534
4535 /* Line 1455 of yacc.c */
4536 #line 1227 "ircd_parser.y"
4537 {
4538 if (conf_parser_ctx.pass == 2)
4539 yy_aconf->modes |= UMODE_EXTERNAL;
4540 }
4541 break;
4542
4543 case 177:
4544
4545 /* Line 1455 of yacc.c */
4546 #line 1231 "ircd_parser.y"
4547 {
4548 if (conf_parser_ctx.pass == 2)
4549 yy_aconf->modes |= UMODE_OPERWALL;
4550 }
4551 break;
4552
4553 case 178:
4554
4555 /* Line 1455 of yacc.c */
4556 #line 1235 "ircd_parser.y"
4557 {
4558 if (conf_parser_ctx.pass == 2)
4559 yy_aconf->modes |= UMODE_SERVNOTICE;
4560 }
4561 break;
4562
4563 case 179:
4564
4565 /* Line 1455 of yacc.c */
4566 #line 1239 "ircd_parser.y"
4567 {
4568 if (conf_parser_ctx.pass == 2)
4569 yy_aconf->modes |= UMODE_INVISIBLE;
4570 }
4571 break;
4572
4573 case 180:
4574
4575 /* Line 1455 of yacc.c */
4576 #line 1243 "ircd_parser.y"
4577 {
4578 if (conf_parser_ctx.pass == 2)
4579 yy_aconf->modes |= UMODE_WALLOP;
4580 }
4581 break;
4582
4583 case 181:
4584
4585 /* Line 1455 of yacc.c */
4586 #line 1247 "ircd_parser.y"
4587 {
4588 if (conf_parser_ctx.pass == 2)
4589 yy_aconf->modes |= UMODE_SOFTCALLERID;
4590 }
4591 break;
4592
4593 case 182:
4594
4595 /* Line 1455 of yacc.c */
4596 #line 1251 "ircd_parser.y"
4597 {
4598 if (conf_parser_ctx.pass == 2)
4599 yy_aconf->modes |= UMODE_CALLERID;
4600 }
4601 break;
4602
4603 case 183:
4604
4605 /* Line 1455 of yacc.c */
4606 #line 1255 "ircd_parser.y"
4607 {
4608 if (conf_parser_ctx.pass == 2)
4609 yy_aconf->modes |= UMODE_LOCOPS;
4610 }
4611 break;
4612
4613 case 184:
4614
4615 /* Line 1455 of yacc.c */
4616 #line 1261 "ircd_parser.y"
4617 {
4618 if (conf_parser_ctx.pass == 2)
4619 {
4620 if (yylval.number)
4621 yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4622 else
4623 yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4624 }
4625 }
4626 break;
4627
4628 case 185:
4629
4630 /* Line 1455 of yacc.c */
4631 #line 1272 "ircd_parser.y"
4632 {
4633 if (conf_parser_ctx.pass == 2)
4634 {
4635 if (yylval.number)
4636 yy_aconf->port |= OPER_FLAG_REMOTE;
4637 else
4638 yy_aconf->port &= ~OPER_FLAG_REMOTE;
4639 }
4640 }
4641 break;
4642
4643 case 186:
4644
4645 /* Line 1455 of yacc.c */
4646 #line 1283 "ircd_parser.y"
4647 {
4648 if (conf_parser_ctx.pass == 2)
4649 {
4650 if (yylval.number)
4651 yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4652 else
4653 yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
4654 }
4655 }
4656 break;
4657
4658 case 187:
4659
4660 /* Line 1455 of yacc.c */
4661 #line 1294 "ircd_parser.y"
4662 {
4663 if (conf_parser_ctx.pass == 2)
4664 {
4665 if (yylval.number)
4666 yy_aconf->port |= OPER_FLAG_K;
4667 else
4668 yy_aconf->port &= ~OPER_FLAG_K;
4669 }
4670 }
4671 break;
4672
4673 case 188:
4674
4675 /* Line 1455 of yacc.c */
4676 #line 1305 "ircd_parser.y"
4677 {
4678 if (conf_parser_ctx.pass == 2)
4679 {
4680 if (yylval.number)
4681 yy_aconf->port |= OPER_FLAG_X;
4682 else
4683 yy_aconf->port &= ~OPER_FLAG_X;
4684 }
4685 }
4686 break;
4687
4688 case 189:
4689
4690 /* Line 1455 of yacc.c */
4691 #line 1316 "ircd_parser.y"
4692 {
4693 if (conf_parser_ctx.pass == 2)
4694 {
4695 if (yylval.number)
4696 yy_aconf->port |= OPER_FLAG_UNKLINE;
4697 else
4698 yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4699 }
4700 }
4701 break;
4702
4703 case 190:
4704
4705 /* Line 1455 of yacc.c */
4706 #line 1327 "ircd_parser.y"
4707 {
4708 if (conf_parser_ctx.pass == 2)
4709 {
4710 if (yylval.number)
4711 yy_aconf->port |= OPER_FLAG_GLINE;
4712 else
4713 yy_aconf->port &= ~OPER_FLAG_GLINE;
4714 }
4715 }
4716 break;
4717
4718 case 191:
4719
4720 /* Line 1455 of yacc.c */
4721 #line 1338 "ircd_parser.y"
4722 {
4723 if (conf_parser_ctx.pass == 2)
4724 {
4725 if (yylval.number)
4726 yy_aconf->port |= OPER_FLAG_N;
4727 else
4728 yy_aconf->port &= ~OPER_FLAG_N;
4729 }
4730 }
4731 break;
4732
4733 case 192:
4734
4735 /* Line 1455 of yacc.c */
4736 #line 1349 "ircd_parser.y"
4737 {
4738 if (conf_parser_ctx.pass == 2)
4739 {
4740 if (yylval.number)
4741 yy_aconf->port |= OPER_FLAG_DIE;
4742 else
4743 yy_aconf->port &= ~OPER_FLAG_DIE;
4744 }
4745 }
4746 break;
4747
4748 case 193:
4749
4750 /* Line 1455 of yacc.c */
4751 #line 1360 "ircd_parser.y"
4752 {
4753 if (conf_parser_ctx.pass == 2)
4754 {
4755 if (yylval.number)
4756 yy_aconf->port |= OPER_FLAG_REHASH;
4757 else
4758 yy_aconf->port &= ~OPER_FLAG_REHASH;
4759 }
4760 }
4761 break;
4762
4763 case 194:
4764
4765 /* Line 1455 of yacc.c */
4766 #line 1371 "ircd_parser.y"
4767 {
4768 if (conf_parser_ctx.pass == 2)
4769 {
4770 if (yylval.number)
4771 yy_aconf->port |= OPER_FLAG_ADMIN;
4772 else
4773 yy_aconf->port &= ~OPER_FLAG_ADMIN;
4774 }
4775 }
4776 break;
4777
4778 case 195:
4779
4780 /* Line 1455 of yacc.c */
4781 #line 1382 "ircd_parser.y"
4782 {
4783 if (conf_parser_ctx.pass == 2)
4784 {
4785 if (yylval.number)
4786 yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4787 else
4788 yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4789 }
4790 }
4791 break;
4792
4793 case 196:
4794
4795 /* Line 1455 of yacc.c */
4796 #line 1393 "ircd_parser.y"
4797 {
4798 if (conf_parser_ctx.pass == 2)
4799 {
4800 if (yylval.number)
4801 yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
4802 else
4803 yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
4804 }
4805 }
4806 break;
4807
4808 case 197:
4809
4810 /* Line 1455 of yacc.c */
4811 #line 1404 "ircd_parser.y"
4812 {
4813 if (conf_parser_ctx.pass == 2)
4814 {
4815 if (yylval.number)
4816 yy_aconf->port |= OPER_FLAG_OPERWALL;
4817 else
4818 yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4819 }
4820 }
4821 break;
4822
4823 case 198:
4824
4825 /* Line 1455 of yacc.c */
4826 #line 1415 "ircd_parser.y"
4827 {
4828 }
4829 break;
4830
4831 case 202:
4832
4833 /* Line 1455 of yacc.c */
4834 #line 1419 "ircd_parser.y"
4835 { not_atom = 1; }
4836 break;
4837
4838 case 204:
4839
4840 /* Line 1455 of yacc.c */
4841 #line 1420 "ircd_parser.y"
4842 { not_atom = 0; }
4843 break;
4844
4845 case 206:
4846
4847 /* Line 1455 of yacc.c */
4848 #line 1423 "ircd_parser.y"
4849 {
4850 if (conf_parser_ctx.pass == 2)
4851 {
4852 if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4853 else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4854 }
4855 }
4856 break;
4857
4858 case 207:
4859
4860 /* Line 1455 of yacc.c */
4861 #line 1430 "ircd_parser.y"
4862 {
4863 if (conf_parser_ctx.pass == 2)
4864 {
4865 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
4866 else yy_aconf->port |= OPER_FLAG_REMOTE;
4867 }
4868 }
4869 break;
4870
4871 case 208:
4872
4873 /* Line 1455 of yacc.c */
4874 #line 1437 "ircd_parser.y"
4875 {
4876 if (conf_parser_ctx.pass == 2)
4877 {
4878 if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
4879 else yy_aconf->port |= OPER_FLAG_K;
4880 }
4881 }
4882 break;
4883
4884 case 209:
4885
4886 /* Line 1455 of yacc.c */
4887 #line 1444 "ircd_parser.y"
4888 {
4889 if (conf_parser_ctx.pass == 2)
4890 {
4891 if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4892 else yy_aconf->port |= OPER_FLAG_UNKLINE;
4893 }
4894 }
4895 break;
4896
4897 case 210:
4898
4899 /* Line 1455 of yacc.c */
4900 #line 1451 "ircd_parser.y"
4901 {
4902 if (conf_parser_ctx.pass == 2)
4903 {
4904 if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
4905 else yy_aconf->port |= OPER_FLAG_X;
4906 }
4907 }
4908 break;
4909
4910 case 211:
4911
4912 /* Line 1455 of yacc.c */
4913 #line 1458 "ircd_parser.y"
4914 {
4915 if (conf_parser_ctx.pass == 2)
4916 {
4917 if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
4918 else yy_aconf->port |= OPER_FLAG_GLINE;
4919 }
4920 }
4921 break;
4922
4923 case 212:
4924
4925 /* Line 1455 of yacc.c */
4926 #line 1465 "ircd_parser.y"
4927 {
4928 if (conf_parser_ctx.pass == 2)
4929 {
4930 if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
4931 else yy_aconf->port |= OPER_FLAG_DIE;
4932 }
4933 }
4934 break;
4935
4936 case 213:
4937
4938 /* Line 1455 of yacc.c */
4939 #line 1472 "ircd_parser.y"
4940 {
4941 if (conf_parser_ctx.pass == 2)
4942 {
4943 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
4944 else yy_aconf->port |= OPER_FLAG_REHASH;
4945 }
4946 }
4947 break;
4948
4949 case 214:
4950
4951 /* Line 1455 of yacc.c */
4952 #line 1479 "ircd_parser.y"
4953 {
4954 if (conf_parser_ctx.pass == 2)
4955 {
4956 if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
4957 else yy_aconf->port |= OPER_FLAG_ADMIN;
4958 }
4959 }
4960 break;
4961
4962 case 215:
4963
4964 /* Line 1455 of yacc.c */
4965 #line 1486 "ircd_parser.y"
4966 {
4967 if (conf_parser_ctx.pass == 2)
4968 {
4969 if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4970 else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4971 }
4972 }
4973 break;
4974
4975 case 216:
4976
4977 /* Line 1455 of yacc.c */
4978 #line 1493 "ircd_parser.y"
4979 {
4980 if (conf_parser_ctx.pass == 2)
4981 {
4982 if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
4983 else yy_aconf->port |= OPER_FLAG_N;
4984 }
4985 }
4986 break;
4987
4988 case 217:
4989
4990 /* Line 1455 of yacc.c */
4991 #line 1500 "ircd_parser.y"
4992 {
4993 if (conf_parser_ctx.pass == 2)
4994 {
4995 if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4996 else yy_aconf->port |= OPER_FLAG_OPERWALL;
4997 }
4998 }
4999 break;
5000
5001 case 218:
5002
5003 /* Line 1455 of yacc.c */
5004 #line 1507 "ircd_parser.y"
5005 {
5006 if (conf_parser_ctx.pass == 2)
5007 {
5008 if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
5009 else yy_aconf->port |= OPER_FLAG_OPER_SPY;
5010 }
5011 }
5012 break;
5013
5014 case 219:
5015
5016 /* Line 1455 of yacc.c */
5017 #line 1514 "ircd_parser.y"
5018 {
5019 if (conf_parser_ctx.pass == 2)
5020 {
5021 if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
5022 else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
5023 }
5024 }
5025 break;
5026
5027 case 220:
5028
5029 /* Line 1455 of yacc.c */
5030 #line 1521 "ircd_parser.y"
5031 {
5032 if (conf_parser_ctx.pass == 2)
5033 {
5034 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
5035 else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
5036 }
5037 }
5038 break;
5039
5040 case 221:
5041
5042 /* Line 1455 of yacc.c */
5043 #line 1528 "ircd_parser.y"
5044 {
5045 if (conf_parser_ctx.pass == 2)
5046 {
5047 if (not_atom) ClearConfEncrypted(yy_aconf);
5048 else SetConfEncrypted(yy_aconf);
5049 }
5050 }
5051 break;
5052
5053 case 222:
5054
5055 /* Line 1455 of yacc.c */
5056 #line 1541 "ircd_parser.y"
5057 {
5058 if (conf_parser_ctx.pass == 1)
5059 {
5060 yy_conf = make_conf_item(CLASS_TYPE);
5061 yy_class = map_to_conf(yy_conf);
5062 }
5063 }
5064 break;
5065
5066 case 223:
5067
5068 /* Line 1455 of yacc.c */
5069 #line 1548 "ircd_parser.y"
5070 {
5071 if (conf_parser_ctx.pass == 1)
5072 {
5073 struct ConfItem *cconf = NULL;
5074 struct ClassItem *class = NULL;
5075
5076 if (yy_class_name == NULL)
5077 delete_conf_item(yy_conf);
5078 else
5079 {
5080 cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
5081
5082 if (cconf != NULL) /* The class existed already */
5083 {
5084 int user_count = 0;
5085
5086 rebuild_cidr_class(cconf, yy_class);
5087
5088 class = map_to_conf(cconf);
5089
5090 user_count = class->curr_user_count;
5091 memcpy(class, yy_class, sizeof(*class));
5092 class->curr_user_count = user_count;
5093 class->active = 1;
5094
5095 delete_conf_item(yy_conf);
5096
5097 MyFree(cconf->name); /* Allows case change of class name */
5098 cconf->name = yy_class_name;
5099 }
5100 else /* Brand new class */
5101 {
5102 MyFree(yy_conf->name); /* just in case it was allocated */
5103 yy_conf->name = yy_class_name;
5104 yy_class->active = 1;
5105 }
5106 }
5107
5108 yy_class_name = NULL;
5109 }
5110 }
5111 break;
5112
5113 case 242:
5114
5115 /* Line 1455 of yacc.c */
5116 #line 1608 "ircd_parser.y"
5117 {
5118 if (conf_parser_ctx.pass == 1)
5119 {
5120 MyFree(yy_class_name);
5121 DupString(yy_class_name, yylval.string);
5122 }
5123 }
5124 break;
5125
5126 case 243:
5127
5128 /* Line 1455 of yacc.c */
5129 #line 1617 "ircd_parser.y"
5130 {
5131 if (conf_parser_ctx.pass == 1)
5132 {
5133 MyFree(yy_class_name);
5134 DupString(yy_class_name, yylval.string);
5135 }
5136 }
5137 break;
5138
5139 case 244:
5140
5141 /* Line 1455 of yacc.c */
5142 #line 1626 "ircd_parser.y"
5143 {
5144 if (conf_parser_ctx.pass == 1)
5145 PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
5146 }
5147 break;
5148
5149 case 245:
5150
5151 /* Line 1455 of yacc.c */
5152 #line 1632 "ircd_parser.y"
5153 {
5154 if (conf_parser_ctx.pass == 1)
5155 PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
5156 }
5157 break;
5158
5159 case 246:
5160
5161 /* Line 1455 of yacc.c */
5162 #line 1638 "ircd_parser.y"
5163 {
5164 if (conf_parser_ctx.pass == 1)
5165 MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
5166 }
5167 break;
5168
5169 case 247:
5170
5171 /* Line 1455 of yacc.c */
5172 #line 1644 "ircd_parser.y"
5173 {
5174 if (conf_parser_ctx.pass == 1)
5175 ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
5176 }
5177 break;
5178
5179 case 248:
5180
5181 /* Line 1455 of yacc.c */
5182 #line 1650 "ircd_parser.y"
5183 {
5184 if (conf_parser_ctx.pass == 1)
5185 MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
5186 }
5187 break;
5188
5189 case 249:
5190
5191 /* Line 1455 of yacc.c */
5192 #line 1656 "ircd_parser.y"
5193 {
5194 if (conf_parser_ctx.pass == 1)
5195 MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
5196 }
5197 break;
5198
5199 case 250:
5200
5201 /* Line 1455 of yacc.c */
5202 #line 1662 "ircd_parser.y"
5203 {
5204 if (conf_parser_ctx.pass == 1)
5205 MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
5206 }
5207 break;
5208
5209 case 251:
5210
5211 /* Line 1455 of yacc.c */
5212 #line 1668 "ircd_parser.y"
5213 {
5214 if (conf_parser_ctx.pass == 1)
5215 MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
5216 }
5217 break;
5218
5219 case 252:
5220
5221 /* Line 1455 of yacc.c */
5222 #line 1674 "ircd_parser.y"
5223 {
5224 if (conf_parser_ctx.pass == 1)
5225 MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
5226 }
5227 break;
5228
5229 case 253:
5230
5231 /* Line 1455 of yacc.c */
5232 #line 1680 "ircd_parser.y"
5233 {
5234 if (conf_parser_ctx.pass == 1)
5235 CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
5236 }
5237 break;
5238
5239 case 254:
5240
5241 /* Line 1455 of yacc.c */
5242 #line 1686 "ircd_parser.y"
5243 {
5244 if (conf_parser_ctx.pass == 1)
5245 CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
5246 }
5247 break;
5248
5249 case 255:
5250
5251 /* Line 1455 of yacc.c */
5252 #line 1692 "ircd_parser.y"
5253 {
5254 if (conf_parser_ctx.pass == 1)
5255 NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
5256 }
5257 break;
5258
5259 case 256:
5260
5261 /* Line 1455 of yacc.c */
5262 #line 1701 "ircd_parser.y"
5263 {
5264 if (conf_parser_ctx.pass == 2)
5265 {
5266 listener_address = NULL;
5267 listener_flags = 0;
5268 }
5269 }
5270 break;
5271
5272 case 257:
5273
5274 /* Line 1455 of yacc.c */
5275 #line 1708 "ircd_parser.y"
5276 {
5277 if (conf_parser_ctx.pass == 2)
5278 {
5279 MyFree(listener_address);
5280 listener_address = NULL;
5281 }
5282 }
5283 break;
5284
5285 case 258:
5286
5287 /* Line 1455 of yacc.c */
5288 #line 1717 "ircd_parser.y"
5289 {
5290 listener_flags = 0;
5291 }
5292 break;
5293
5294 case 262:
5295
5296 /* Line 1455 of yacc.c */
5297 #line 1723 "ircd_parser.y"
5298 {
5299 if (conf_parser_ctx.pass == 2)
5300 listener_flags |= LISTENER_SSL;
5301 }
5302 break;
5303
5304 case 263:
5305
5306 /* Line 1455 of yacc.c */
5307 #line 1727 "ircd_parser.y"
5308 {
5309 if (conf_parser_ctx.pass == 2)
5310 listener_flags |= LISTENER_HIDDEN;
5311 }
5312 break;
5313
5314 case 264:
5315
5316 /* Line 1455 of yacc.c */
5317 #line 1731 "ircd_parser.y"
5318 {
5319 if (conf_parser_ctx.pass == 2)
5320 listener_flags |= LISTENER_SERVER;
5321 }
5322 break;
5323
5324 case 272:
5325
5326 /* Line 1455 of yacc.c */
5327 #line 1741 "ircd_parser.y"
5328 { listener_flags = 0; }
5329 break;
5330
5331 case 276:
5332
5333 /* Line 1455 of yacc.c */
5334 #line 1746 "ircd_parser.y"
5335 {
5336 if (conf_parser_ctx.pass == 2)
5337 {
5338 if ((listener_flags & LISTENER_SSL))
5339 #ifdef HAVE_LIBCRYPTO
5340 if (!ServerInfo.server_ctx)
5341 #endif
5342 {
5343 yyerror("SSL not available - port closed");
5344 break;
5345 }
5346 add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
5347 }
5348 }
5349 break;
5350
5351 case 277:
5352
5353 /* Line 1455 of yacc.c */
5354 #line 1760 "ircd_parser.y"
5355 {
5356 if (conf_parser_ctx.pass == 2)
5357 {
5358 int i;
5359
5360 if ((listener_flags & LISTENER_SSL))
5361 #ifdef HAVE_LIBCRYPTO
5362 if (!ServerInfo.server_ctx)
5363 #endif
5364 {
5365 yyerror("SSL not available - port closed");
5366 break;
5367 }
5368
5369 for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
5370 add_listener(i, listener_address, listener_flags);
5371 }
5372 }
5373 break;
5374
5375 case 278:
5376
5377 /* Line 1455 of yacc.c */
5378 #line 1780 "ircd_parser.y"
5379 {
5380 if (conf_parser_ctx.pass == 2)
5381 {
5382 MyFree(listener_address);
5383 DupString(listener_address, yylval.string);
5384 }
5385 }
5386 break;
5387
5388 case 279:
5389
5390 /* Line 1455 of yacc.c */
5391 #line 1789 "ircd_parser.y"
5392 {
5393 if (conf_parser_ctx.pass == 2)
5394 {
5395 MyFree(listener_address);
5396 DupString(listener_address, yylval.string);
5397 }
5398 }
5399 break;
5400
5401 case 280:
5402
5403 /* Line 1455 of yacc.c */
5404 #line 1801 "ircd_parser.y"
5405 {
5406 if (conf_parser_ctx.pass == 2)
5407 {
5408 yy_conf = make_conf_item(CLIENT_TYPE);
5409 yy_aconf = map_to_conf(yy_conf);
5410 }
5411 else
5412 {
5413 MyFree(class_name);
5414 class_name = NULL;
5415 }
5416 }
5417 break;
5418
5419 case 281:
5420
5421 /* Line 1455 of yacc.c */
5422 #line 1813 "ircd_parser.y"
5423 {
5424 if (conf_parser_ctx.pass == 2)
5425 {
5426 struct CollectItem *yy_tmp = NULL;
5427 dlink_node *ptr = NULL, *next_ptr = NULL;
5428
5429 if (yy_aconf->user && yy_aconf->host)
5430 {
5431 conf_add_class_to_conf(yy_conf, class_name);
5432 add_conf_by_address(CONF_CLIENT, yy_aconf);
5433 }
5434 else
5435 delete_conf_item(yy_conf);
5436
5437 /* copy over settings from first struct */
5438 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5439 {
5440 struct AccessItem *new_aconf;
5441 struct ConfItem *new_conf;
5442
5443 new_conf = make_conf_item(CLIENT_TYPE);
5444 new_aconf = map_to_conf(new_conf);
5445
5446 yy_tmp = ptr->data;
5447
5448 assert(yy_tmp->user && yy_tmp->host);
5449
5450 if (yy_aconf->passwd != NULL)
5451 DupString(new_aconf->passwd, yy_aconf->passwd);
5452 if (yy_conf->name != NULL)
5453 DupString(new_conf->name, yy_conf->name);
5454 if (yy_aconf->passwd != NULL)
5455 DupString(new_aconf->passwd, yy_aconf->passwd);
5456
5457 new_aconf->flags = yy_aconf->flags;
5458 new_aconf->port = yy_aconf->port;
5459
5460 DupString(new_aconf->user, yy_tmp->user);
5461 collapse(new_aconf->user);
5462
5463 DupString(new_aconf->host, yy_tmp->host);
5464 collapse(new_aconf->host);
5465
5466 conf_add_class_to_conf(new_conf, class_name);
5467 add_conf_by_address(CONF_CLIENT, new_aconf);
5468 dlinkDelete(&yy_tmp->node, &col_conf_list);
5469 free_collect_item(yy_tmp);
5470 }
5471
5472 MyFree(class_name);
5473 class_name = NULL;
5474 yy_conf = NULL;
5475 yy_aconf = NULL;
5476 }
5477 }
5478 break;
5479
5480 case 301:
5481
5482 /* Line 1455 of yacc.c */
5483 #line 1878 "ircd_parser.y"
5484 {
5485 if (conf_parser_ctx.pass == 2)
5486 {
5487 struct CollectItem *yy_tmp = NULL;
5488 struct split_nuh_item nuh;
5489
5490 nuh.nuhmask = yylval.string;
5491 nuh.nickptr = NULL;
5492 nuh.userptr = userbuf;
5493 nuh.hostptr = hostbuf;
5494
5495 nuh.nicksize = 0;
5496 nuh.usersize = sizeof(userbuf);
5497 nuh.hostsize = sizeof(hostbuf);
5498
5499 split_nuh(&nuh);
5500
5501 if (yy_aconf->user == NULL)
5502 {
5503 DupString(yy_aconf->user, userbuf);
5504 DupString(yy_aconf->host, hostbuf);
5505 }
5506 else
5507 {
5508 yy_tmp = MyMalloc(sizeof(struct CollectItem));
5509
5510 DupString(yy_tmp->user, userbuf);
5511 DupString(yy_tmp->host, hostbuf);
5512
5513 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5514 }
5515 }
5516 }
5517 break;
5518
5519 case 302:
5520
5521 /* Line 1455 of yacc.c */
5522 #line 1915 "ircd_parser.y"
5523 {
5524 if (conf_parser_ctx.pass == 2)
5525 {
5526 /* be paranoid */
5527 if (yy_aconf->passwd != NULL)
5528 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5529
5530 MyFree(yy_aconf->passwd);
5531 DupString(yy_aconf->passwd, yylval.string);
5532 }
5533 }
5534 break;
5535
5536 case 303:
5537
5538 /* Line 1455 of yacc.c */
5539 #line 1928 "ircd_parser.y"
5540 {
5541 if (conf_parser_ctx.pass == 2)
5542 {
5543 if (yylval.number)
5544 yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5545 else
5546 yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5547 }
5548 }
5549 break;
5550
5551 case 304:
5552
5553 /* Line 1455 of yacc.c */
5554 #line 1939 "ircd_parser.y"
5555 {
5556 if (conf_parser_ctx.pass == 2)
5557 {
5558 MyFree(class_name);
5559 DupString(class_name, yylval.string);
5560 }
5561 }
5562 break;
5563
5564 case 305:
5565
5566 /* Line 1455 of yacc.c */
5567 #line 1948 "ircd_parser.y"
5568 {
5569 if (conf_parser_ctx.pass == 2)
5570 {
5571 if (yylval.number)
5572 SetConfEncrypted(yy_aconf);
5573 else
5574 ClearConfEncrypted(yy_aconf);
5575 }
5576 }
5577 break;
5578
5579 case 306:
5580
5581 /* Line 1455 of yacc.c */
5582 #line 1959 "ircd_parser.y"
5583 {
5584 }
5585 break;
5586
5587 case 310:
5588
5589 /* Line 1455 of yacc.c */
5590 #line 1963 "ircd_parser.y"
5591 { not_atom = 1; }
5592 break;
5593
5594 case 312:
5595
5596 /* Line 1455 of yacc.c */
5597 #line 1964 "ircd_parser.y"
5598 { not_atom = 0; }
5599 break;
5600
5601 case 314:
5602
5603 /* Line 1455 of yacc.c */
5604 #line 1967 "ircd_parser.y"
5605 {
5606 if (conf_parser_ctx.pass == 2)
5607 {
5608 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5609 else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5610 }
5611
5612 }
5613 break;
5614
5615 case 315:
5616
5617 /* Line 1455 of yacc.c */
5618 #line 1975 "ircd_parser.y"
5619 {
5620 if (conf_parser_ctx.pass == 2)
5621 {
5622 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5623 else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5624 }
5625 }
5626 break;
5627
5628 case 316:
5629
5630 /* Line 1455 of yacc.c */
5631 #line 1982 "ircd_parser.y"
5632 {
5633 if (conf_parser_ctx.pass == 2)
5634 {
5635 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5636 else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5637 }
5638 }
5639 break;
5640
5641 case 317:
5642
5643 /* Line 1455 of yacc.c */
5644 #line 1989 "ircd_parser.y"
5645 {
5646 if (conf_parser_ctx.pass == 2)
5647 {
5648 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5649 else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5650 }
5651 }
5652 break;
5653
5654 case 318:
5655
5656 /* Line 1455 of yacc.c */
5657 #line 1996 "ircd_parser.y"
5658 {
5659 if (conf_parser_ctx.pass == 2)
5660 {
5661 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5662 else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5663 }
5664 }
5665 break;
5666
5667 case 319:
5668
5669 /* Line 1455 of yacc.c */
5670 #line 2003 "ircd_parser.y"
5671 {
5672 if (conf_parser_ctx.pass == 2)
5673 {
5674 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
5675 else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
5676 }
5677 }
5678 break;
5679
5680 case 320:
5681
5682 /* Line 1455 of yacc.c */
5683 #line 2010 "ircd_parser.y"
5684 {
5685 if (conf_parser_ctx.pass == 2)
5686 {
5687 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5688 else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5689 }
5690 }
5691 break;
5692
5693 case 321:
5694
5695 /* Line 1455 of yacc.c */
5696 #line 2017 "ircd_parser.y"
5697 {
5698 if (conf_parser_ctx.pass == 2)
5699 {
5700 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5701 else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5702 }
5703 }
5704 break;
5705
5706 case 322:
5707
5708 /* Line 1455 of yacc.c */
5709 #line 2024 "ircd_parser.y"
5710 {
5711 if (conf_parser_ctx.pass == 2)
5712 {
5713 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
5714 else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5715 }
5716 }
5717 break;
5718
5719 case 323:
5720
5721 /* Line 1455 of yacc.c */
5722 #line 2031 "ircd_parser.y"
5723 {
5724 if (conf_parser_ctx.pass == 2)
5725 {
5726 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5727 else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5728 }
5729 }
5730 break;
5731
5732 case 324:
5733
5734 /* Line 1455 of yacc.c */
5735 #line 2040 "ircd_parser.y"
5736 {
5737 if (conf_parser_ctx.pass == 2)
5738 {
5739 if (yylval.number)
5740 yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5741 else
5742 yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5743 }
5744 }
5745 break;
5746
5747 case 325:
5748
5749 /* Line 1455 of yacc.c */
5750 #line 2051 "ircd_parser.y"
5751 {
5752 if (conf_parser_ctx.pass == 2)
5753 {
5754 if (yylval.number)
5755 yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5756 else
5757 yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5758 }
5759 }
5760 break;
5761
5762 case 326:
5763
5764 /* Line 1455 of yacc.c */
5765 #line 2062 "ircd_parser.y"
5766 {
5767 if (conf_parser_ctx.pass == 2)
5768 {
5769 if (yylval.number)
5770 yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5771 else
5772 yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5773 }
5774 }
5775 break;
5776
5777 case 327:
5778
5779 /* Line 1455 of yacc.c */
5780 #line 2073 "ircd_parser.y"
5781 {
5782 if (conf_parser_ctx.pass == 2)
5783 {
5784 if (yylval.number)
5785 yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5786 else
5787 yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5788 }
5789 }
5790 break;
5791
5792 case 328:
5793
5794 /* Line 1455 of yacc.c */
5795 #line 2084 "ircd_parser.y"
5796 {
5797 if (conf_parser_ctx.pass == 2)
5798 {
5799 if (yylval.number)
5800 yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5801 else
5802 yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5803 }
5804 }
5805 break;
5806
5807 case 329:
5808
5809 /* Line 1455 of yacc.c */
5810 #line 2095 "ircd_parser.y"
5811 {
5812 if (conf_parser_ctx.pass == 2)
5813 {
5814 if (yylval.number)
5815 yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5816 else
5817 yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5818 }
5819 }
5820 break;
5821
5822 case 330:
5823
5824 /* Line 1455 of yacc.c */
5825 #line 2107 "ircd_parser.y"
5826 {
5827 if (conf_parser_ctx.pass == 2)
5828 {
5829 MyFree(yy_conf->name);
5830
5831 if (strlen(yylval.string) < HOSTLEN)
5832 {
5833 DupString(yy_conf->name, yylval.string);
5834 yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5835 }
5836 else
5837 {
5838 ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5839 yy_conf->name = NULL;
5840 }
5841 }
5842 }
5843 break;
5844
5845 case 331:
5846
5847 /* Line 1455 of yacc.c */
5848 #line 2126 "ircd_parser.y"
5849 {
5850 if (conf_parser_ctx.pass == 2)
5851 {
5852 yy_aconf->flags |= CONF_FLAGS_REDIR;
5853 MyFree(yy_conf->name);
5854 DupString(yy_conf->name, yylval.string);
5855 }
5856 }
5857 break;
5858
5859 case 332:
5860
5861 /* Line 1455 of yacc.c */
5862 #line 2136 "ircd_parser.y"
5863 {
5864 if (conf_parser_ctx.pass == 2)
5865 {
5866 yy_aconf->flags |= CONF_FLAGS_REDIR;
5867 yy_aconf->port = (yyvsp[(3) - (4)].number);
5868 }
5869 }
5870 break;
5871
5872 case 333:
5873
5874 /* Line 1455 of yacc.c */
5875 #line 2145 "ircd_parser.y"
5876 {
5877 if (conf_parser_ctx.pass == 2)
5878 {
5879 if (yylval.number)
5880 yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5881 else
5882 yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5883 }
5884 }
5885 break;
5886
5887 case 334:
5888
5889 /* Line 1455 of yacc.c */
5890 #line 2160 "ircd_parser.y"
5891 {
5892 if (conf_parser_ctx.pass == 2)
5893 {
5894 MyFree(resv_reason);
5895 resv_reason = NULL;
5896 }
5897 }
5898 break;
5899
5900 case 335:
5901
5902 /* Line 1455 of yacc.c */
5903 #line 2167 "ircd_parser.y"
5904 {
5905 if (conf_parser_ctx.pass == 2)
5906 {
5907 MyFree(resv_reason);
5908 resv_reason = NULL;
5909 }
5910 }
5911 break;
5912
5913 case 342:
5914
5915 /* Line 1455 of yacc.c */
5916 #line 2179 "ircd_parser.y"
5917 {
5918 if (conf_parser_ctx.pass == 2)
5919 {
5920 MyFree(resv_reason);
5921 DupString(resv_reason, yylval.string);
5922 }
5923 }
5924 break;
5925
5926 case 343:
5927
5928 /* Line 1455 of yacc.c */
5929 #line 2188 "ircd_parser.y"
5930 {
5931 if (conf_parser_ctx.pass == 2)
5932 {
5933 if (IsChanPrefix(*yylval.string))
5934 {
5935 char def_reason[] = "No reason";
5936
5937 create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5938 }
5939 }
5940 /* ignore it for now.. but we really should make a warning if
5941 * its an erroneous name --fl_ */
5942 }
5943 break;
5944
5945 case 344:
5946
5947 /* Line 1455 of yacc.c */
5948 #line 2203 "ircd_parser.y"
5949 {
5950 if (conf_parser_ctx.pass == 2)
5951 {
5952 char def_reason[] = "No reason";
5953
5954 create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5955 }
5956 }
5957 break;
5958
5959 case 345:
5960
5961 /* Line 1455 of yacc.c */
5962 #line 2216 "ircd_parser.y"
5963 {
5964 if (conf_parser_ctx.pass == 2)
5965 {
5966 yy_conf = make_conf_item(ULINE_TYPE);
5967 yy_match_item = map_to_conf(yy_conf);
5968 yy_match_item->action = SHARED_ALL;
5969 }
5970 }
5971 break;
5972
5973 case 346:
5974
5975 /* Line 1455 of yacc.c */
5976 #line 2224 "ircd_parser.y"
5977 {
5978 if (conf_parser_ctx.pass == 2)
5979 {
5980 yy_conf = NULL;
5981 }
5982 }
5983 break;
5984
5985 case 353:
5986
5987 /* Line 1455 of yacc.c */
5988 #line 2235 "ircd_parser.y"
5989 {
5990 if (conf_parser_ctx.pass == 2)
5991 {
5992 MyFree(yy_conf->name);
5993 DupString(yy_conf->name, yylval.string);
5994 }
5995 }
5996 break;
5997
5998 case 354:
5999
6000 /* Line 1455 of yacc.c */
6001 #line 2244 "ircd_parser.y"
6002 {
6003 if (conf_parser_ctx.pass == 2)
6004 {
6005 struct split_nuh_item nuh;
6006
6007 nuh.nuhmask = yylval.string;
6008 nuh.nickptr = NULL;
6009 nuh.userptr = userbuf;
6010 nuh.hostptr = hostbuf;
6011
6012 nuh.nicksize = 0;
6013 nuh.usersize = sizeof(userbuf);
6014 nuh.hostsize = sizeof(hostbuf);
6015
6016 split_nuh(&nuh);
6017
6018 DupString(yy_match_item->user, userbuf);
6019 DupString(yy_match_item->host, hostbuf);
6020 }
6021 }
6022 break;
6023
6024 case 355:
6025
6026 /* Line 1455 of yacc.c */
6027 #line 2266 "ircd_parser.y"
6028 {
6029 if (conf_parser_ctx.pass == 2)
6030 yy_match_item->action = 0;
6031 }
6032 break;
6033
6034 case 359:
6035
6036 /* Line 1455 of yacc.c */
6037 #line 2273 "ircd_parser.y"
6038 {
6039 if (conf_parser_ctx.pass == 2)
6040 yy_match_item->action |= SHARED_KLINE;
6041 }
6042 break;
6043
6044 case 360:
6045
6046 /* Line 1455 of yacc.c */
6047 #line 2277 "ircd_parser.y"
6048 {
6049 if (conf_parser_ctx.pass == 2)
6050 yy_match_item->action |= SHARED_TKLINE;
6051 }
6052 break;
6053
6054 case 361:
6055
6056 /* Line 1455 of yacc.c */
6057 #line 2281 "ircd_parser.y"
6058 {
6059 if (conf_parser_ctx.pass == 2)
6060 yy_match_item->action |= SHARED_UNKLINE;
6061 }
6062 break;
6063
6064 case 362:
6065
6066 /* Line 1455 of yacc.c */
6067 #line 2285 "ircd_parser.y"
6068 {
6069 if (conf_parser_ctx.pass == 2)
6070 yy_match_item->action |= SHARED_XLINE;
6071 }
6072 break;
6073
6074 case 363:
6075
6076 /* Line 1455 of yacc.c */
6077 #line 2289 "ircd_parser.y"
6078 {
6079 if (conf_parser_ctx.pass == 2)
6080 yy_match_item->action |= SHARED_TXLINE;
6081 }
6082 break;
6083
6084 case 364:
6085
6086 /* Line 1455 of yacc.c */
6087 #line 2293 "ircd_parser.y"
6088 {
6089 if (conf_parser_ctx.pass == 2)
6090 yy_match_item->action |= SHARED_UNXLINE;
6091 }
6092 break;
6093
6094 case 365:
6095
6096 /* Line 1455 of yacc.c */
6097 #line 2297 "ircd_parser.y"
6098 {
6099 if (conf_parser_ctx.pass == 2)
6100 yy_match_item->action |= SHARED_RESV;
6101 }
6102 break;
6103
6104 case 366:
6105
6106 /* Line 1455 of yacc.c */
6107 #line 2301 "ircd_parser.y"
6108 {
6109 if (conf_parser_ctx.pass == 2)
6110 yy_match_item->action |= SHARED_TRESV;
6111 }
6112 break;
6113
6114 case 367:
6115
6116 /* Line 1455 of yacc.c */
6117 #line 2305 "ircd_parser.y"
6118 {
6119 if (conf_parser_ctx.pass == 2)
6120 yy_match_item->action |= SHARED_UNRESV;
6121 }
6122 break;
6123
6124 case 368:
6125
6126 /* Line 1455 of yacc.c */
6127 #line 2309 "ircd_parser.y"
6128 {
6129 if (conf_parser_ctx.pass == 2)
6130 yy_match_item->action |= SHARED_LOCOPS;
6131 }
6132 break;
6133
6134 case 369:
6135
6136 /* Line 1455 of yacc.c */
6137 #line 2313 "ircd_parser.y"
6138 {
6139 if (conf_parser_ctx.pass == 2)
6140 yy_match_item->action = SHARED_ALL;
6141 }
6142 break;
6143
6144 case 370:
6145
6146 /* Line 1455 of yacc.c */
6147 #line 2322 "ircd_parser.y"
6148 {
6149 if (conf_parser_ctx.pass == 2)
6150 {
6151 yy_conf = make_conf_item(CLUSTER_TYPE);
6152 yy_conf->flags = SHARED_ALL;
6153 }
6154 }
6155 break;
6156
6157 case 371:
6158
6159 /* Line 1455 of yacc.c */
6160 #line 2329 "ircd_parser.y"
6161 {
6162 if (conf_parser_ctx.pass == 2)
6163 {
6164 if (yy_conf->name == NULL)
6165 DupString(yy_conf->name, "*");
6166 yy_conf = NULL;
6167 }
6168 }
6169 break;
6170
6171 case 377:
6172
6173 /* Line 1455 of yacc.c */
6174 #line 2342 "ircd_parser.y"
6175 {
6176 if (conf_parser_ctx.pass == 2)
6177 DupString(yy_conf->name, yylval.string);
6178 }
6179 break;
6180
6181 case 378:
6182
6183 /* Line 1455 of yacc.c */
6184 #line 2348 "ircd_parser.y"
6185 {
6186 if (conf_parser_ctx.pass == 2)
6187 yy_conf->flags = 0;
6188 }
6189 break;
6190
6191 case 382:
6192
6193 /* Line 1455 of yacc.c */
6194 #line 2355 "ircd_parser.y"
6195 {
6196 if (conf_parser_ctx.pass == 2)
6197 yy_conf->flags |= SHARED_KLINE;
6198 }
6199 break;
6200
6201 case 383:
6202
6203 /* Line 1455 of yacc.c */
6204 #line 2359 "ircd_parser.y"
6205 {
6206 if (conf_parser_ctx.pass == 2)
6207 yy_conf->flags |= SHARED_TKLINE;
6208 }
6209 break;
6210
6211 case 384:
6212
6213 /* Line 1455 of yacc.c */
6214 #line 2363 "ircd_parser.y"
6215 {
6216 if (conf_parser_ctx.pass == 2)
6217 yy_conf->flags |= SHARED_UNKLINE;
6218 }
6219 break;
6220
6221 case 385:
6222
6223 /* Line 1455 of yacc.c */
6224 #line 2367 "ircd_parser.y"
6225 {
6226 if (conf_parser_ctx.pass == 2)
6227 yy_conf->flags |= SHARED_XLINE;
6228 }
6229 break;
6230
6231 case 386:
6232
6233 /* Line 1455 of yacc.c */
6234 #line 2371 "ircd_parser.y"
6235 {
6236 if (conf_parser_ctx.pass == 2)
6237 yy_conf->flags |= SHARED_TXLINE;
6238 }
6239 break;
6240
6241 case 387:
6242
6243 /* Line 1455 of yacc.c */
6244 #line 2375 "ircd_parser.y"
6245 {
6246 if (conf_parser_ctx.pass == 2)
6247 yy_conf->flags |= SHARED_UNXLINE;
6248 }
6249 break;
6250
6251 case 388:
6252
6253 /* Line 1455 of yacc.c */
6254 #line 2379 "ircd_parser.y"
6255 {
6256 if (conf_parser_ctx.pass == 2)
6257 yy_conf->flags |= SHARED_RESV;
6258 }
6259 break;
6260
6261 case 389:
6262
6263 /* Line 1455 of yacc.c */
6264 #line 2383 "ircd_parser.y"
6265 {
6266 if (conf_parser_ctx.pass == 2)
6267 yy_conf->flags |= SHARED_TRESV;
6268 }
6269 break;
6270
6271 case 390:
6272
6273 /* Line 1455 of yacc.c */
6274 #line 2387 "ircd_parser.y"
6275 {
6276 if (conf_parser_ctx.pass == 2)
6277 yy_conf->flags |= SHARED_UNRESV;
6278 }
6279 break;
6280
6281 case 391:
6282
6283 /* Line 1455 of yacc.c */
6284 #line 2391 "ircd_parser.y"
6285 {
6286 if (conf_parser_ctx.pass == 2)
6287 yy_conf->flags |= SHARED_LOCOPS;
6288 }
6289 break;
6290
6291 case 392:
6292
6293 /* Line 1455 of yacc.c */
6294 #line 2395 "ircd_parser.y"
6295 {
6296 if (conf_parser_ctx.pass == 2)
6297 yy_conf->flags = SHARED_ALL;
6298 }
6299 break;
6300
6301 case 393:
6302
6303 /* Line 1455 of yacc.c */
6304 #line 2404 "ircd_parser.y"
6305 {
6306 if (conf_parser_ctx.pass == 2)
6307 {
6308 yy_conf = make_conf_item(SERVER_TYPE);
6309 yy_aconf = (struct AccessItem *)map_to_conf(yy_conf);
6310 yy_aconf->passwd = NULL;
6311 /* defaults */
6312 yy_aconf->port = PORTNUM;
6313
6314 if (ConfigFileEntry.burst_away)
6315 yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
6316 }
6317 else
6318 {
6319 MyFree(class_name);
6320 class_name = NULL;
6321 }
6322 }
6323 break;
6324
6325 case 394:
6326
6327 /* Line 1455 of yacc.c */
6328 #line 2422 "ircd_parser.y"
6329 {
6330 if (conf_parser_ctx.pass == 2)
6331 {
6332 struct CollectItem *yy_hconf=NULL;
6333 struct CollectItem *yy_lconf=NULL;
6334 dlink_node *ptr;
6335 dlink_node *next_ptr;
6336 #ifdef HAVE_LIBCRYPTO
6337 if (yy_aconf->host &&
6338 ((yy_aconf->passwd && yy_aconf->spasswd) ||
6339 (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
6340 #else /* !HAVE_LIBCRYPTO */
6341 if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
6342 yy_aconf->passwd && yy_aconf->spasswd)
6343 #endif /* !HAVE_LIBCRYPTO */
6344 {
6345 if (conf_add_server(yy_conf, class_name) == -1)
6346 {
6347 delete_conf_item(yy_conf);
6348 yy_conf = NULL;
6349 yy_aconf = NULL;
6350 }
6351 }
6352 else
6353 {
6354 /* Even if yy_conf ->name is NULL
6355 * should still unhook any hub/leaf confs still pending
6356 */
6357 unhook_hub_leaf_confs();
6358
6359 if (yy_conf->name != NULL)
6360 {
6361 #ifndef HAVE_LIBCRYPTO
6362 if (IsConfCryptLink(yy_aconf))
6363 yyerror("Ignoring connect block -- no OpenSSL support");
6364 #else
6365 if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
6366 yyerror("Ignoring connect block -- missing key");
6367 #endif
6368 if (yy_aconf->host == NULL)
6369 yyerror("Ignoring connect block -- missing host");
6370 else if (!IsConfCryptLink(yy_aconf) &&
6371 (!yy_aconf->passwd || !yy_aconf->spasswd))
6372 yyerror("Ignoring connect block -- missing password");
6373 }
6374
6375
6376 /* XXX
6377 * This fixes a try_connections() core (caused by invalid class_ptr
6378 * pointers) reported by metalrock. That's an ugly fix, but there
6379 * is currently no better way. The entire config subsystem needs an
6380 * rewrite ASAP. make_conf_item() shouldn't really add things onto
6381 * a doubly linked list immediately without any sanity checks! -Michael
6382 */
6383 delete_conf_item(yy_conf);
6384
6385 yy_aconf = NULL;
6386 yy_conf = NULL;
6387 }
6388
6389 /*
6390 * yy_conf is still pointing at the server that is having
6391 * a connect block built for it. This means, y_aconf->name
6392 * points to the actual irc name this server will be known as.
6393 * Now this new server has a set or even just one hub_mask (or leaf_mask)
6394 * given in the link list at yy_hconf. Fill in the HUB confs
6395 * from this link list now.
6396 */
6397 DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
6398 {
6399 struct ConfItem *new_hub_conf;
6400 struct MatchItem *match_item;
6401
6402 yy_hconf = ptr->data;
6403
6404 /* yy_conf == NULL is a fatal error for this connect block! */
6405 if ((yy_conf != NULL) && (yy_conf->name != NULL))
6406 {
6407 new_hub_conf = make_conf_item(HUB_TYPE);
6408 match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
6409 DupString(new_hub_conf->name, yy_conf->name);
6410 if (yy_hconf->user != NULL)
6411 DupString(match_item->user, yy_hconf->user);
6412 else
6413 DupString(match_item->user, "*");
6414 if (yy_hconf->host != NULL)
6415 DupString(match_item->host, yy_hconf->host);
6416 else
6417 DupString(match_item->host, "*");
6418 }
6419 dlinkDelete(&yy_hconf->node, &hub_conf_list);
6420 free_collect_item(yy_hconf);
6421 }
6422
6423 /* Ditto for the LEAF confs */
6424
6425 DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
6426 {
6427 struct ConfItem *new_leaf_conf;
6428 struct MatchItem *match_item;
6429
6430 yy_lconf = ptr->data;
6431
6432 if ((yy_conf != NULL) && (yy_conf->name != NULL))
6433 {
6434 new_leaf_conf = make_conf_item(LEAF_TYPE);
6435 match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
6436 DupString(new_leaf_conf->name, yy_conf->name);
6437 if (yy_lconf->user != NULL)
6438 DupString(match_item->user, yy_lconf->user);
6439 else
6440 DupString(match_item->user, "*");
6441 if (yy_lconf->host != NULL)
6442 DupString(match_item->host, yy_lconf->host);
6443 else
6444 DupString(match_item->host, "*");
6445 }
6446 dlinkDelete(&yy_lconf->node, &leaf_conf_list);
6447 free_collect_item(yy_lconf);
6448 }
6449 MyFree(class_name);
6450 class_name = NULL;
6451 yy_conf = NULL;
6452 yy_aconf = NULL;
6453 }
6454 }
6455 break;
6456
6457 case 419:
6458
6459 /* Line 1455 of yacc.c */
6460 #line 2561 "ircd_parser.y"
6461 {
6462 if (conf_parser_ctx.pass == 2)
6463 {
6464 if (yy_conf->name != NULL)
6465 yyerror("Multiple connect name entry");
6466
6467 MyFree(yy_conf->name);
6468 DupString(yy_conf->name, yylval.string);
6469 }
6470 }
6471 break;
6472
6473 case 420:
6474
6475 /* Line 1455 of yacc.c */
6476 #line 2573 "ircd_parser.y"
6477 {
6478 if (conf_parser_ctx.pass == 2)
6479 {
6480 if (yy_conf->name != NULL)
6481 yyerror("Multiple connect name entry");
6482
6483 MyFree(yy_conf->name);
6484 DupString(yy_conf->name, yylval.string);
6485 }
6486 }
6487 break;
6488
6489 case 421:
6490
6491 /* Line 1455 of yacc.c */
6492 #line 2585 "ircd_parser.y"
6493 {
6494 if (conf_parser_ctx.pass == 2)
6495 {
6496 MyFree(yy_aconf->host);
6497 DupString(yy_aconf->host, yylval.string);
6498 }
6499 }
6500 break;
6501
6502 case 422:
6503
6504 /* Line 1455 of yacc.c */
6505 #line 2594 "ircd_parser.y"
6506 {
6507 if (conf_parser_ctx.pass == 2)
6508 {
6509 struct addrinfo hints, *res;
6510
6511 memset(&hints, 0, sizeof(hints));
6512
6513 hints.ai_family = AF_UNSPEC;
6514 hints.ai_socktype = SOCK_STREAM;
6515 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
6516
6517 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
6518 ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
6519 else
6520 {
6521 assert(res != NULL);
6522
6523 memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
6524 yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
6525 yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
6526 irc_freeaddrinfo(res);
6527 }
6528 }
6529 }
6530 break;
6531
6532 case 423:
6533
6534 /* Line 1455 of yacc.c */
6535 #line 2620 "ircd_parser.y"
6536 {
6537 if (conf_parser_ctx.pass == 2)
6538 {
6539 if ((yyvsp[(3) - (4)].string)[0] == ':')
6540 yyerror("Server passwords cannot begin with a colon");
6541 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6542 yyerror("Server passwords cannot contain spaces");
6543 else {
6544 if (yy_aconf->spasswd != NULL)
6545 memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
6546
6547 MyFree(yy_aconf->spasswd);
6548 DupString(yy_aconf->spasswd, yylval.string);
6549 }
6550 }
6551 }
6552 break;
6553
6554 case 424:
6555
6556 /* Line 1455 of yacc.c */
6557 #line 2638 "ircd_parser.y"
6558 {
6559 if (conf_parser_ctx.pass == 2)
6560 {
6561 if ((yyvsp[(3) - (4)].string)[0] == ':')
6562 yyerror("Server passwords cannot begin with a colon");
6563 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6564 yyerror("Server passwords cannot contain spaces");
6565 else {
6566 if (yy_aconf->passwd != NULL)
6567 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
6568
6569 MyFree(yy_aconf->passwd);
6570 DupString(yy_aconf->passwd, yylval.string);
6571 }
6572 }
6573 }
6574 break;
6575
6576 case 425:
6577
6578 /* Line 1455 of yacc.c */
6579 #line 2656 "ircd_parser.y"
6580 {
6581 if (conf_parser_ctx.pass == 2)
6582 yy_aconf->port = (yyvsp[(3) - (4)].number);
6583 }
6584 break;
6585
6586 case 426:
6587
6588 /* Line 1455 of yacc.c */
6589 #line 2662 "ircd_parser.y"
6590 {
6591 if (conf_parser_ctx.pass == 2)
6592 yy_aconf->aftype = AF_INET;
6593 }
6594 break;
6595
6596 case 427:
6597
6598 /* Line 1455 of yacc.c */
6599 #line 2666 "ircd_parser.y"
6600 {
6601 #ifdef IPV6
6602 if (conf_parser_ctx.pass == 2)
6603 yy_aconf->aftype = AF_INET6;
6604 #endif
6605 }
6606 break;
6607
6608 case 428:
6609
6610 /* Line 1455 of yacc.c */
6611 #line 2674 "ircd_parser.y"
6612 {
6613 if (conf_parser_ctx.pass == 2)
6614 {
6615 MyFree(yy_aconf->fakename);
6616 DupString(yy_aconf->fakename, yylval.string);
6617 }
6618 }
6619 break;
6620
6621 case 429:
6622
6623 /* Line 1455 of yacc.c */
6624 #line 2683 "ircd_parser.y"
6625 {
6626 }
6627 break;
6628
6629 case 433:
6630
6631 /* Line 1455 of yacc.c */
6632 #line 2687 "ircd_parser.y"
6633 { not_atom = 1; }
6634 break;
6635
6636 case 435:
6637
6638 /* Line 1455 of yacc.c */
6639 #line 2688 "ircd_parser.y"
6640 { not_atom = 0; }
6641 break;
6642
6643 case 437:
6644
6645 /* Line 1455 of yacc.c */
6646 #line 2691 "ircd_parser.y"
6647 {
6648 if (conf_parser_ctx.pass == 2)
6649 #ifndef HAVE_LIBZ
6650 yyerror("Ignoring flags = compressed; -- no zlib support");
6651 #else
6652 {
6653 if (not_atom)ClearConfCompressed(yy_aconf);
6654 else SetConfCompressed(yy_aconf);
6655 }
6656 #endif
6657 }
6658 break;
6659
6660 case 438:
6661
6662 /* Line 1455 of yacc.c */
6663 #line 2702 "ircd_parser.y"
6664 {
6665 if (conf_parser_ctx.pass == 2)
6666 {
6667 if (not_atom)ClearConfCryptLink(yy_aconf);
6668 else SetConfCryptLink(yy_aconf);
6669 }
6670 }
6671 break;
6672
6673 case 439:
6674
6675 /* Line 1455 of yacc.c */
6676 #line 2709 "ircd_parser.y"
6677 {
6678 if (conf_parser_ctx.pass == 2)
6679 {
6680 if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6681 else SetConfAllowAutoConn(yy_aconf);
6682 }
6683 }
6684 break;
6685
6686 case 440:
6687
6688 /* Line 1455 of yacc.c */
6689 #line 2716 "ircd_parser.y"
6690 {
6691 if (conf_parser_ctx.pass == 2)
6692 {
6693 if (not_atom)ClearConfAwayBurst(yy_aconf);
6694 else SetConfAwayBurst(yy_aconf);
6695 }
6696 }
6697 break;
6698
6699 case 441:
6700
6701 /* Line 1455 of yacc.c */
6702 #line 2723 "ircd_parser.y"
6703 {
6704 if (conf_parser_ctx.pass == 2)
6705 {
6706 if (not_atom)ClearConfTopicBurst(yy_aconf);
6707 else SetConfTopicBurst(yy_aconf);
6708 }
6709 }
6710 break;
6711
6712 case 442:
6713
6714 /* Line 1455 of yacc.c */
6715 #line 2733 "ircd_parser.y"
6716 {
6717 #ifdef HAVE_LIBCRYPTO
6718 if (conf_parser_ctx.pass == 2)
6719 {
6720 BIO *file;
6721
6722 if (yy_aconf->rsa_public_key != NULL)
6723 {
6724 RSA_free(yy_aconf->rsa_public_key);
6725 yy_aconf->rsa_public_key = NULL;
6726 }
6727
6728 if (yy_aconf->rsa_public_key_file != NULL)
6729 {
6730 MyFree(yy_aconf->rsa_public_key_file);
6731 yy_aconf->rsa_public_key_file = NULL;
6732 }
6733
6734 DupString(yy_aconf->rsa_public_key_file, yylval.string);
6735
6736 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6737 {
6738 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6739 break;
6740 }
6741
6742 yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
6743
6744 if (yy_aconf->rsa_public_key == NULL)
6745 {
6746 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
6747 break;
6748 }
6749
6750 BIO_set_close(file, BIO_CLOSE);
6751 BIO_free(file);
6752 }
6753 #endif /* HAVE_LIBCRYPTO */
6754 }
6755 break;
6756
6757 case 443:
6758
6759 /* Line 1455 of yacc.c */
6760 #line 2774 "ircd_parser.y"
6761 {
6762 if (conf_parser_ctx.pass == 2)
6763 {
6764 if (yylval.number)
6765 yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6766 else
6767 yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6768 }
6769 }
6770 break;
6771
6772 case 444:
6773
6774 /* Line 1455 of yacc.c */
6775 #line 2785 "ircd_parser.y"
6776 {
6777 if (conf_parser_ctx.pass == 2)
6778 {
6779 if (yylval.number)
6780 yy_aconf->flags |= CONF_FLAGS_CRYPTLINK;
6781 else
6782 yy_aconf->flags &= ~CONF_FLAGS_CRYPTLINK;
6783 }
6784 }
6785 break;
6786
6787 case 445:
6788
6789 /* Line 1455 of yacc.c */
6790 #line 2796 "ircd_parser.y"
6791 {
6792 if (conf_parser_ctx.pass == 2)
6793 {
6794 if (yylval.number)
6795 #ifndef HAVE_LIBZ
6796 yyerror("Ignoring compressed=yes; -- no zlib support");
6797 #else
6798 yy_aconf->flags |= CONF_FLAGS_COMPRESSED;
6799 #endif
6800 else
6801 yy_aconf->flags &= ~CONF_FLAGS_COMPRESSED;
6802 }
6803 }
6804 break;
6805
6806 case 446:
6807
6808 /* Line 1455 of yacc.c */
6809 #line 2811 "ircd_parser.y"
6810 {
6811 if (conf_parser_ctx.pass == 2)
6812 {
6813 if (yylval.number)
6814 yy_aconf->flags |= CONF_FLAGS_ALLOW_AUTO_CONN;
6815 else
6816 yy_aconf->flags &= ~CONF_FLAGS_ALLOW_AUTO_CONN;
6817 }
6818 }
6819 break;
6820
6821 case 447:
6822
6823 /* Line 1455 of yacc.c */
6824 #line 2822 "ircd_parser.y"
6825 {
6826 if (conf_parser_ctx.pass == 2)
6827 {
6828 if (yylval.number)
6829 SetConfTopicBurst(yy_aconf);
6830 else
6831 ClearConfTopicBurst(yy_aconf);
6832 }
6833 }
6834 break;
6835
6836 case 448:
6837
6838 /* Line 1455 of yacc.c */
6839 #line 2833 "ircd_parser.y"
6840 {
6841 if (conf_parser_ctx.pass == 2)
6842 {
6843 struct CollectItem *yy_tmp;
6844
6845 yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6846 DupString(yy_tmp->host, yylval.string);
6847 DupString(yy_tmp->user, "*");
6848 dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6849 }
6850 }
6851 break;
6852
6853 case 449:
6854
6855 /* Line 1455 of yacc.c */
6856 #line 2846 "ircd_parser.y"
6857 {
6858 if (conf_parser_ctx.pass == 2)
6859 {
6860 struct CollectItem *yy_tmp;
6861
6862 yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6863 DupString(yy_tmp->host, yylval.string);
6864 DupString(yy_tmp->user, "*");
6865 dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6866 }
6867 }
6868 break;
6869
6870 case 450:
6871
6872 /* Line 1455 of yacc.c */
6873 #line 2859 "ircd_parser.y"
6874 {
6875 if (conf_parser_ctx.pass == 2)
6876 {
6877 MyFree(class_name);
6878 DupString(class_name, yylval.string);
6879 }
6880 }
6881 break;
6882
6883 case 451:
6884
6885 /* Line 1455 of yacc.c */
6886 #line 2868 "ircd_parser.y"
6887 {
6888 #ifdef HAVE_LIBCRYPTO
6889 if (conf_parser_ctx.pass == 2)
6890 {
6891 struct EncCapability *ecap;
6892 const char *cipher_name;
6893 int found = 0;
6894
6895 yy_aconf->cipher_preference = NULL;
6896 cipher_name = yylval.string;
6897
6898 for (ecap = CipherTable; ecap->name; ecap++)
6899 {
6900 if ((irccmp(ecap->name, cipher_name) == 0) &&
6901 (ecap->cap & CAP_ENC_MASK))
6902 {
6903 yy_aconf->cipher_preference = ecap;
6904 found = 1;
6905 break;
6906 }
6907 }
6908
6909 if (!found)
6910 yyerror("Invalid cipher");
6911 }
6912 #else
6913 if (conf_parser_ctx.pass == 2)
6914 yyerror("Ignoring cipher_preference -- no OpenSSL support");
6915 #endif
6916 }
6917 break;
6918
6919 case 452:
6920
6921 /* Line 1455 of yacc.c */
6922 #line 2903 "ircd_parser.y"
6923 {
6924 if (conf_parser_ctx.pass == 2)
6925 {
6926 userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6927 regex_ban = 0;
6928 }
6929 }
6930 break;
6931
6932 case 453:
6933
6934 /* Line 1455 of yacc.c */
6935 #line 2910 "ircd_parser.y"
6936 {
6937 if (conf_parser_ctx.pass == 2)
6938 {
6939 if (userbuf[0] && hostbuf[0])
6940 {
6941 if (regex_ban)
6942 {
6943 #ifdef HAVE_LIBPCRE
6944 void *exp_user = NULL;
6945 void *exp_host = NULL;
6946 const char *errptr = NULL;
6947
6948 if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6949 !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6950 {
6951 ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6952 errptr);
6953 break;
6954 }
6955
6956 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6957 yy_aconf->regexuser = exp_user;
6958 yy_aconf->regexhost = exp_host;
6959
6960 DupString(yy_aconf->user, userbuf);
6961 DupString(yy_aconf->host, hostbuf);
6962
6963 if (reasonbuf[0])
6964 DupString(yy_aconf->reason, reasonbuf);
6965 else
6966 DupString(yy_aconf->reason, "No reason");
6967 #else
6968 ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6969 break;
6970 #endif
6971 }
6972 else
6973 {
6974 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6975
6976 DupString(yy_aconf->user, userbuf);
6977 DupString(yy_aconf->host, hostbuf);
6978
6979 if (reasonbuf[0])
6980 DupString(yy_aconf->reason, reasonbuf);
6981 else
6982 DupString(yy_aconf->reason, "No reason");
6983 add_conf_by_address(CONF_KILL, yy_aconf);
6984 }
6985 }
6986
6987 yy_aconf = NULL;
6988 }
6989 }
6990 break;
6991
6992 case 454:
6993
6994 /* Line 1455 of yacc.c */
6995 #line 2966 "ircd_parser.y"
6996 {
6997 }
6998 break;
6999
7000 case 458:
7001
7002 /* Line 1455 of yacc.c */
7003 #line 2971 "ircd_parser.y"
7004 {
7005 if (conf_parser_ctx.pass == 2)
7006 regex_ban = 1;
7007 }
7008 break;
7009
7010 case 465:
7011
7012 /* Line 1455 of yacc.c */
7013 #line 2980 "ircd_parser.y"
7014 {
7015 if (conf_parser_ctx.pass == 2)
7016 {
7017 struct split_nuh_item nuh;
7018
7019 nuh.nuhmask = yylval.string;
7020 nuh.nickptr = NULL;
7021 nuh.userptr = userbuf;
7022 nuh.hostptr = hostbuf;
7023
7024 nuh.nicksize = 0;
7025 nuh.usersize = sizeof(userbuf);
7026 nuh.hostsize = sizeof(hostbuf);
7027
7028 split_nuh(&nuh);
7029 }
7030 }
7031 break;
7032
7033 case 466:
7034
7035 /* Line 1455 of yacc.c */
7036 #line 2999 "ircd_parser.y"
7037 {
7038 if (conf_parser_ctx.pass == 2)
7039 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7040 }
7041 break;
7042
7043 case 467:
7044
7045 /* Line 1455 of yacc.c */
7046 #line 3008 "ircd_parser.y"
7047 {
7048 if (conf_parser_ctx.pass == 2)
7049 hostbuf[0] = reasonbuf[0] = '\0';
7050 }
7051 break;
7052
7053 case 468:
7054
7055 /* Line 1455 of yacc.c */
7056 #line 3012 "ircd_parser.y"
7057 {
7058 if (conf_parser_ctx.pass == 2)
7059 {
7060 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
7061 {
7062 yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
7063 DupString(yy_aconf->host, hostbuf);
7064
7065 if (reasonbuf[0])
7066 DupString(yy_aconf->reason, reasonbuf);
7067 else
7068 DupString(yy_aconf->reason, "No reason");
7069 add_conf_by_address(CONF_DLINE, yy_aconf);
7070 yy_aconf = NULL;
7071 }
7072 }
7073 }
7074 break;
7075
7076 case 474:
7077
7078 /* Line 1455 of yacc.c */
7079 #line 3034 "ircd_parser.y"
7080 {
7081 if (conf_parser_ctx.pass == 2)
7082 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
7083 }
7084 break;
7085
7086 case 475:
7087
7088 /* Line 1455 of yacc.c */
7089 #line 3040 "ircd_parser.y"
7090 {
7091 if (conf_parser_ctx.pass == 2)
7092 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7093 }
7094 break;
7095
7096 case 481:
7097
7098 /* Line 1455 of yacc.c */
7099 #line 3054 "ircd_parser.y"
7100 {
7101 if (conf_parser_ctx.pass == 2)
7102 {
7103 if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
7104 {
7105 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
7106 DupString(yy_aconf->host, yylval.string);
7107
7108 add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
7109 yy_aconf = NULL;
7110 }
7111 }
7112 }
7113 break;
7114
7115 case 482:
7116
7117 /* Line 1455 of yacc.c */
7118 #line 3072 "ircd_parser.y"
7119 {
7120 if (conf_parser_ctx.pass == 2)
7121 {
7122 regex_ban = 0;
7123 reasonbuf[0] = gecos_name[0] = '\0';
7124 }
7125 }
7126 break;
7127
7128 case 483:
7129
7130 /* Line 1455 of yacc.c */
7131 #line 3079 "ircd_parser.y"
7132 {
7133 if (conf_parser_ctx.pass == 2)
7134 {
7135 if (gecos_name[0])
7136 {
7137 if (regex_ban)
7138 {
7139 #ifdef HAVE_LIBPCRE
7140 void *exp_p = NULL;
7141 const char *errptr = NULL;
7142
7143 if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
7144 {
7145 ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
7146 errptr);
7147 break;
7148 }
7149
7150 yy_conf = make_conf_item(RXLINE_TYPE);
7151 yy_conf->regexpname = exp_p;
7152 #else
7153 ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
7154 break;
7155 #endif
7156 }
7157 else
7158 yy_conf = make_conf_item(XLINE_TYPE);
7159
7160 yy_match_item = map_to_conf(yy_conf);
7161 DupString(yy_conf->name, gecos_name);
7162
7163 if (reasonbuf[0])
7164 DupString(yy_match_item->reason, reasonbuf);
7165 else
7166 DupString(yy_match_item->reason, "No reason");
7167 }
7168 }
7169 }
7170 break;
7171
7172 case 484:
7173
7174 /* Line 1455 of yacc.c */
7175 #line 3119 "ircd_parser.y"
7176 {
7177 }
7178 break;
7179
7180 case 488:
7181
7182 /* Line 1455 of yacc.c */
7183 #line 3124 "ircd_parser.y"
7184 {
7185 if (conf_parser_ctx.pass == 2)
7186 regex_ban = 1;
7187 }
7188 break;
7189
7190 case 495:
7191
7192 /* Line 1455 of yacc.c */
7193 #line 3133 "ircd_parser.y"
7194 {
7195 if (conf_parser_ctx.pass == 2)
7196 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
7197 }
7198 break;
7199
7200 case 496:
7201
7202 /* Line 1455 of yacc.c */
7203 #line 3139 "ircd_parser.y"
7204 {
7205 if (conf_parser_ctx.pass == 2)
7206 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7207 }
7208 break;
7209
7210 case 557:
7211
7212 /* Line 1455 of yacc.c */
7213 #line 3184 "ircd_parser.y"
7214 {
7215 ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
7216 }
7217 break;
7218
7219 case 558:
7220
7221 /* Line 1455 of yacc.c */
7222 #line 3189 "ircd_parser.y"
7223 {
7224 ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
7225 }
7226 break;
7227
7228 case 559:
7229
7230 /* Line 1455 of yacc.c */
7231 #line 3194 "ircd_parser.y"
7232 {
7233 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
7234 }
7235 break;
7236
7237 case 560:
7238
7239 /* Line 1455 of yacc.c */
7240 #line 3199 "ircd_parser.y"
7241 {
7242 ConfigFileEntry.burst_away = yylval.number;
7243 }
7244 break;
7245
7246 case 561:
7247
7248 /* Line 1455 of yacc.c */
7249 #line 3204 "ircd_parser.y"
7250 {
7251 ConfigFileEntry.use_whois_actually = yylval.number;
7252 }
7253 break;
7254
7255 case 562:
7256
7257 /* Line 1455 of yacc.c */
7258 #line 3209 "ircd_parser.y"
7259 {
7260 GlobalSetOptions.rejecttime = yylval.number;
7261 }
7262 break;
7263
7264 case 563:
7265
7266 /* Line 1455 of yacc.c */
7267 #line 3214 "ircd_parser.y"
7268 {
7269 ConfigFileEntry.tkline_expire_notices = yylval.number;
7270 }
7271 break;
7272
7273 case 564:
7274
7275 /* Line 1455 of yacc.c */
7276 #line 3219 "ircd_parser.y"
7277 {
7278 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
7279 }
7280 break;
7281
7282 case 565:
7283
7284 /* Line 1455 of yacc.c */
7285 #line 3224 "ircd_parser.y"
7286 {
7287 ConfigFileEntry.hide_spoof_ips = yylval.number;
7288 }
7289 break;
7290
7291 case 566:
7292
7293 /* Line 1455 of yacc.c */
7294 #line 3229 "ircd_parser.y"
7295 {
7296 ConfigFileEntry.ignore_bogus_ts = yylval.number;
7297 }
7298 break;
7299
7300 case 567:
7301
7302 /* Line 1455 of yacc.c */
7303 #line 3234 "ircd_parser.y"
7304 {
7305 ConfigFileEntry.disable_remote = yylval.number;
7306 }
7307 break;
7308
7309 case 568:
7310
7311 /* Line 1455 of yacc.c */
7312 #line 3239 "ircd_parser.y"
7313 {
7314 ConfigFileEntry.failed_oper_notice = yylval.number;
7315 }
7316 break;
7317
7318 case 569:
7319
7320 /* Line 1455 of yacc.c */
7321 #line 3244 "ircd_parser.y"
7322 {
7323 ConfigFileEntry.anti_nick_flood = yylval.number;
7324 }
7325 break;
7326
7327 case 570:
7328
7329 /* Line 1455 of yacc.c */
7330 #line 3249 "ircd_parser.y"
7331 {
7332 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
7333 }
7334 break;
7335
7336 case 571:
7337
7338 /* Line 1455 of yacc.c */
7339 #line 3254 "ircd_parser.y"
7340 {
7341 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
7342 }
7343 break;
7344
7345 case 572:
7346
7347 /* Line 1455 of yacc.c */
7348 #line 3259 "ircd_parser.y"
7349 {
7350 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
7351 }
7352 break;
7353
7354 case 573:
7355
7356 /* Line 1455 of yacc.c */
7357 #line 3264 "ircd_parser.y"
7358 {
7359 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
7360 }
7361 break;
7362
7363 case 574:
7364
7365 /* Line 1455 of yacc.c */
7366 #line 3269 "ircd_parser.y"
7367 {
7368 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
7369 }
7370 break;
7371
7372 case 575:
7373
7374 /* Line 1455 of yacc.c */
7375 #line 3274 "ircd_parser.y"
7376 {
7377 if (conf_parser_ctx.pass == 2)
7378 ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
7379 }
7380 break;
7381
7382 case 576:
7383
7384 /* Line 1455 of yacc.c */
7385 #line 3280 "ircd_parser.y"
7386 {
7387 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
7388 {
7389 ilog(L_CRIT, "You haven't read your config file properly.");
7390 ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
7391 ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
7392 exit(0);
7393 }
7394 }
7395 break;
7396
7397 case 577:
7398
7399 /* Line 1455 of yacc.c */
7400 #line 3291 "ircd_parser.y"
7401 {
7402 ConfigFileEntry.kline_with_reason = yylval.number;
7403 }
7404 break;
7405
7406 case 578:
7407
7408 /* Line 1455 of yacc.c */
7409 #line 3296 "ircd_parser.y"
7410 {
7411 if (conf_parser_ctx.pass == 2)
7412 {
7413 MyFree(ConfigFileEntry.kline_reason);
7414 DupString(ConfigFileEntry.kline_reason, yylval.string);
7415 }
7416 }
7417 break;
7418
7419 case 579:
7420
7421 /* Line 1455 of yacc.c */
7422 #line 3305 "ircd_parser.y"
7423 {
7424 ConfigFileEntry.invisible_on_connect = yylval.number;
7425 }
7426 break;
7427
7428 case 580:
7429
7430 /* Line 1455 of yacc.c */
7431 #line 3310 "ircd_parser.y"
7432 {
7433 ConfigFileEntry.warn_no_nline = yylval.number;
7434 }
7435 break;
7436
7437 case 581:
7438
7439 /* Line 1455 of yacc.c */
7440 #line 3315 "ircd_parser.y"
7441 {
7442 ConfigFileEntry.stats_e_disabled = yylval.number;
7443 }
7444 break;
7445
7446 case 582:
7447
7448 /* Line 1455 of yacc.c */
7449 #line 3320 "ircd_parser.y"
7450 {
7451 ConfigFileEntry.stats_o_oper_only = yylval.number;
7452 }
7453 break;
7454
7455 case 583:
7456
7457 /* Line 1455 of yacc.c */
7458 #line 3325 "ircd_parser.y"
7459 {
7460 ConfigFileEntry.stats_P_oper_only = yylval.number;
7461 }
7462 break;
7463
7464 case 584:
7465
7466 /* Line 1455 of yacc.c */
7467 #line 3330 "ircd_parser.y"
7468 {
7469 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
7470 }
7471 break;
7472
7473 case 585:
7474
7475 /* Line 1455 of yacc.c */
7476 #line 3333 "ircd_parser.y"
7477 {
7478 ConfigFileEntry.stats_k_oper_only = 1;
7479 }
7480 break;
7481
7482 case 586:
7483
7484 /* Line 1455 of yacc.c */
7485 #line 3338 "ircd_parser.y"
7486 {
7487 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
7488 }
7489 break;
7490
7491 case 587:
7492
7493 /* Line 1455 of yacc.c */
7494 #line 3341 "ircd_parser.y"
7495 {
7496 ConfigFileEntry.stats_i_oper_only = 1;
7497 }
7498 break;
7499
7500 case 588:
7501
7502 /* Line 1455 of yacc.c */
7503 #line 3346 "ircd_parser.y"
7504 {
7505 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
7506 }
7507 break;
7508
7509 case 589:
7510
7511 /* Line 1455 of yacc.c */
7512 #line 3351 "ircd_parser.y"
7513 {
7514 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
7515 }
7516 break;
7517
7518 case 590:
7519
7520 /* Line 1455 of yacc.c */
7521 #line 3356 "ircd_parser.y"
7522 {
7523 ConfigFileEntry.opers_bypass_callerid = yylval.number;
7524 }
7525 break;
7526
7527 case 591:
7528
7529 /* Line 1455 of yacc.c */
7530 #line 3361 "ircd_parser.y"
7531 {
7532 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
7533 }
7534 break;
7535
7536 case 592:
7537
7538 /* Line 1455 of yacc.c */
7539 #line 3366 "ircd_parser.y"
7540 {
7541 ConfigFileEntry.short_motd = yylval.number;
7542 }
7543 break;
7544
7545 case 593:
7546
7547 /* Line 1455 of yacc.c */
7548 #line 3371 "ircd_parser.y"
7549 {
7550 ConfigFileEntry.no_oper_flood = yylval.number;
7551 }
7552 break;
7553
7554 case 594:
7555
7556 /* Line 1455 of yacc.c */
7557 #line 3376 "ircd_parser.y"
7558 {
7559 ConfigFileEntry.true_no_oper_flood = yylval.number;
7560 }
7561 break;
7562
7563 case 595:
7564
7565 /* Line 1455 of yacc.c */
7566 #line 3381 "ircd_parser.y"
7567 {
7568 ConfigFileEntry.oper_pass_resv = yylval.number;
7569 }
7570 break;
7571
7572 case 596:
7573
7574 /* Line 1455 of yacc.c */
7575 #line 3386 "ircd_parser.y"
7576 {
7577 if (conf_parser_ctx.pass == 2)
7578 {
7579 if (strlen(yylval.string) > LOCALE_LENGTH-2)
7580 yylval.string[LOCALE_LENGTH-1] = '\0';
7581
7582 set_locale(yylval.string);
7583 }
7584 }
7585 break;
7586
7587 case 597:
7588
7589 /* Line 1455 of yacc.c */
7590 #line 3397 "ircd_parser.y"
7591 {
7592 ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
7593 }
7594 break;
7595
7596 case 598:
7597
7598 /* Line 1455 of yacc.c */
7599 #line 3402 "ircd_parser.y"
7600 {
7601 ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
7602 }
7603 break;
7604
7605 case 599:
7606
7607 /* Line 1455 of yacc.c */
7608 #line 3407 "ircd_parser.y"
7609 {
7610 ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
7611 }
7612 break;
7613
7614 case 600:
7615
7616 /* Line 1455 of yacc.c */
7617 #line 3412 "ircd_parser.y"
7618 {
7619 if (conf_parser_ctx.pass == 2)
7620 {
7621 MyFree(ConfigFileEntry.servlink_path);
7622 DupString(ConfigFileEntry.servlink_path, yylval.string);
7623 }
7624 }
7625 break;
7626
7627 case 601:
7628
7629 /* Line 1455 of yacc.c */
7630 #line 3421 "ircd_parser.y"
7631 {
7632 #ifdef HAVE_LIBCRYPTO
7633 if (conf_parser_ctx.pass == 2)
7634 {
7635 struct EncCapability *ecap;
7636 const char *cipher_name;
7637 int found = 0;
7638
7639 ConfigFileEntry.default_cipher_preference = NULL;
7640 cipher_name = yylval.string;
7641
7642 for (ecap = CipherTable; ecap->name; ecap++)
7643 {
7644 if ((irccmp(ecap->name, cipher_name) == 0) &&
7645 (ecap->cap & CAP_ENC_MASK))
7646 {
7647 ConfigFileEntry.default_cipher_preference = ecap;
7648 found = 1;
7649 break;
7650 }
7651 }
7652
7653 if (!found)
7654 yyerror("Invalid cipher");
7655 }
7656 #else
7657 if (conf_parser_ctx.pass == 2)
7658 yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7659 #endif
7660 }
7661 break;
7662
7663 case 602:
7664
7665 /* Line 1455 of yacc.c */
7666 #line 3453 "ircd_parser.y"
7667 {
7668 if (conf_parser_ctx.pass == 2)
7669 {
7670 ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7671 #ifndef HAVE_LIBZ
7672 yyerror("Ignoring compression_level -- no zlib support");
7673 #else
7674 if ((ConfigFileEntry.compression_level < 1) ||
7675 (ConfigFileEntry.compression_level > 9))
7676 {
7677 yyerror("Ignoring invalid compression_level, using default");
7678 ConfigFileEntry.compression_level = 0;
7679 }
7680 #endif
7681 }
7682 }
7683 break;
7684
7685 case 603:
7686
7687 /* Line 1455 of yacc.c */
7688 #line 3471 "ircd_parser.y"
7689 {
7690 ConfigFileEntry.use_egd = yylval.number;
7691 }
7692 break;
7693
7694 case 604:
7695
7696 /* Line 1455 of yacc.c */
7697 #line 3476 "ircd_parser.y"
7698 {
7699 if (conf_parser_ctx.pass == 2)
7700 {
7701 MyFree(ConfigFileEntry.egdpool_path);
7702 DupString(ConfigFileEntry.egdpool_path, yylval.string);
7703 }
7704 }
7705 break;
7706
7707 case 605:
7708
7709 /* Line 1455 of yacc.c */
7710 #line 3485 "ircd_parser.y"
7711 {
7712 ConfigFileEntry.ping_cookie = yylval.number;
7713 }
7714 break;
7715
7716 case 606:
7717
7718 /* Line 1455 of yacc.c */
7719 #line 3490 "ircd_parser.y"
7720 {
7721 ConfigFileEntry.disable_auth = yylval.number;
7722 }
7723 break;
7724
7725 case 607:
7726
7727 /* Line 1455 of yacc.c */
7728 #line 3495 "ircd_parser.y"
7729 {
7730 ConfigFileEntry.throttle_time = yylval.number;
7731 }
7732 break;
7733
7734 case 608:
7735
7736 /* Line 1455 of yacc.c */
7737 #line 3500 "ircd_parser.y"
7738 {
7739 ConfigFileEntry.oper_umodes = 0;
7740 }
7741 break;
7742
7743 case 612:
7744
7745 /* Line 1455 of yacc.c */
7746 #line 3506 "ircd_parser.y"
7747 {
7748 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
7749 }
7750 break;
7751
7752 case 613:
7753
7754 /* Line 1455 of yacc.c */
7755 #line 3509 "ircd_parser.y"
7756 {
7757 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
7758 }
7759 break;
7760
7761 case 614:
7762
7763 /* Line 1455 of yacc.c */
7764 #line 3512 "ircd_parser.y"
7765 {
7766 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
7767 }
7768 break;
7769
7770 case 615:
7771
7772 /* Line 1455 of yacc.c */
7773 #line 3515 "ircd_parser.y"
7774 {
7775 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
7776 }
7777 break;
7778
7779 case 616:
7780
7781 /* Line 1455 of yacc.c */
7782 #line 3518 "ircd_parser.y"
7783 {
7784 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
7785 }
7786 break;
7787
7788 case 617:
7789
7790 /* Line 1455 of yacc.c */
7791 #line 3521 "ircd_parser.y"
7792 {
7793 ConfigFileEntry.oper_umodes |= UMODE_FULL;
7794 }
7795 break;
7796
7797 case 618:
7798
7799 /* Line 1455 of yacc.c */
7800 #line 3524 "ircd_parser.y"
7801 {
7802 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
7803 }
7804 break;
7805
7806 case 619:
7807
7808 /* Line 1455 of yacc.c */
7809 #line 3527 "ircd_parser.y"
7810 {
7811 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
7812 }
7813 break;
7814
7815 case 620:
7816
7817 /* Line 1455 of yacc.c */
7818 #line 3530 "ircd_parser.y"
7819 {
7820 ConfigFileEntry.oper_umodes |= UMODE_REJ;
7821 }
7822 break;
7823
7824 case 621:
7825
7826 /* Line 1455 of yacc.c */
7827 #line 3533 "ircd_parser.y"
7828 {
7829 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
7830 }
7831 break;
7832
7833 case 622:
7834
7835 /* Line 1455 of yacc.c */
7836 #line 3536 "ircd_parser.y"
7837 {
7838 ConfigFileEntry.oper_umodes |= UMODE_SPY;
7839 }
7840 break;
7841
7842 case 623:
7843
7844 /* Line 1455 of yacc.c */
7845 #line 3539 "ircd_parser.y"
7846 {
7847 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
7848 }
7849 break;
7850
7851 case 624:
7852
7853 /* Line 1455 of yacc.c */
7854 #line 3542 "ircd_parser.y"
7855 {
7856 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
7857 }
7858 break;
7859
7860 case 625:
7861
7862 /* Line 1455 of yacc.c */
7863 #line 3545 "ircd_parser.y"
7864 {
7865 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
7866 }
7867 break;
7868
7869 case 626:
7870
7871 /* Line 1455 of yacc.c */
7872 #line 3548 "ircd_parser.y"
7873 {
7874 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
7875 }
7876 break;
7877
7878 case 627:
7879
7880 /* Line 1455 of yacc.c */
7881 #line 3551 "ircd_parser.y"
7882 {
7883 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
7884 }
7885 break;
7886
7887 case 628:
7888
7889 /* Line 1455 of yacc.c */
7890 #line 3554 "ircd_parser.y"
7891 {
7892 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
7893 }
7894 break;
7895
7896 case 629:
7897
7898 /* Line 1455 of yacc.c */
7899 #line 3557 "ircd_parser.y"
7900 {
7901 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
7902 }
7903 break;
7904
7905 case 630:
7906
7907 /* Line 1455 of yacc.c */
7908 #line 3560 "ircd_parser.y"
7909 {
7910 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
7911 }
7912 break;
7913
7914 case 631:
7915
7916 /* Line 1455 of yacc.c */
7917 #line 3565 "ircd_parser.y"
7918 {
7919 ConfigFileEntry.oper_only_umodes = 0;
7920 }
7921 break;
7922
7923 case 635:
7924
7925 /* Line 1455 of yacc.c */
7926 #line 3571 "ircd_parser.y"
7927 {
7928 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7929 }
7930 break;
7931
7932 case 636:
7933
7934 /* Line 1455 of yacc.c */
7935 #line 3574 "ircd_parser.y"
7936 {
7937 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7938 }
7939 break;
7940
7941 case 637:
7942
7943 /* Line 1455 of yacc.c */
7944 #line 3577 "ircd_parser.y"
7945 {
7946 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7947 }
7948 break;
7949
7950 case 638:
7951
7952 /* Line 1455 of yacc.c */
7953 #line 3580 "ircd_parser.y"
7954 {
7955 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7956 }
7957 break;
7958
7959 case 639:
7960
7961 /* Line 1455 of yacc.c */
7962 #line 3583 "ircd_parser.y"
7963 {
7964 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7965 }
7966 break;
7967
7968 case 640:
7969
7970 /* Line 1455 of yacc.c */
7971 #line 3586 "ircd_parser.y"
7972 {
7973 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7974 }
7975 break;
7976
7977 case 641:
7978
7979 /* Line 1455 of yacc.c */
7980 #line 3589 "ircd_parser.y"
7981 {
7982 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7983 }
7984 break;
7985
7986 case 642:
7987
7988 /* Line 1455 of yacc.c */
7989 #line 3592 "ircd_parser.y"
7990 {
7991 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
7992 }
7993 break;
7994
7995 case 643:
7996
7997 /* Line 1455 of yacc.c */
7998 #line 3595 "ircd_parser.y"
7999 {
8000 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
8001 }
8002 break;
8003
8004 case 644:
8005
8006 /* Line 1455 of yacc.c */
8007 #line 3598 "ircd_parser.y"
8008 {
8009 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
8010 }
8011 break;
8012
8013 case 645:
8014
8015 /* Line 1455 of yacc.c */
8016 #line 3601 "ircd_parser.y"
8017 {
8018 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
8019 }
8020 break;
8021
8022 case 646:
8023
8024 /* Line 1455 of yacc.c */
8025 #line 3604 "ircd_parser.y"
8026 {
8027 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
8028 }
8029 break;
8030
8031 case 647:
8032
8033 /* Line 1455 of yacc.c */
8034 #line 3607 "ircd_parser.y"
8035 {
8036 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
8037 }
8038 break;
8039
8040 case 648:
8041
8042 /* Line 1455 of yacc.c */
8043 #line 3610 "ircd_parser.y"
8044 {
8045 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
8046 }
8047 break;
8048
8049 case 649:
8050
8051 /* Line 1455 of yacc.c */
8052 #line 3613 "ircd_parser.y"
8053 {
8054 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
8055 }
8056 break;
8057
8058 case 650:
8059
8060 /* Line 1455 of yacc.c */
8061 #line 3616 "ircd_parser.y"
8062 {
8063 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
8064 }
8065 break;
8066
8067 case 651:
8068
8069 /* Line 1455 of yacc.c */
8070 #line 3619 "ircd_parser.y"
8071 {
8072 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
8073 }
8074 break;
8075
8076 case 652:
8077
8078 /* Line 1455 of yacc.c */
8079 #line 3622 "ircd_parser.y"
8080 {
8081 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
8082 }
8083 break;
8084
8085 case 653:
8086
8087 /* Line 1455 of yacc.c */
8088 #line 3625 "ircd_parser.y"
8089 {
8090 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
8091 }
8092 break;
8093
8094 case 654:
8095
8096 /* Line 1455 of yacc.c */
8097 #line 3630 "ircd_parser.y"
8098 {
8099 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
8100 }
8101 break;
8102
8103 case 655:
8104
8105 /* Line 1455 of yacc.c */
8106 #line 3635 "ircd_parser.y"
8107 {
8108 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
8109 }
8110 break;
8111
8112 case 656:
8113
8114 /* Line 1455 of yacc.c */
8115 #line 3640 "ircd_parser.y"
8116 {
8117 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
8118 }
8119 break;
8120
8121 case 657:
8122
8123 /* Line 1455 of yacc.c */
8124 #line 3645 "ircd_parser.y"
8125 {
8126 ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
8127 }
8128 break;
8129
8130 case 658:
8131
8132 /* Line 1455 of yacc.c */
8133 #line 3650 "ircd_parser.y"
8134 {
8135 ConfigFileEntry.dot_in_ip6_addr = yylval.number;
8136 }
8137 break;
8138
8139 case 659:
8140
8141 /* Line 1455 of yacc.c */
8142 #line 3658 "ircd_parser.y"
8143 {
8144 if (conf_parser_ctx.pass == 2)
8145 {
8146 yy_conf = make_conf_item(GDENY_TYPE);
8147 yy_aconf = map_to_conf(yy_conf);
8148 }
8149 }
8150 break;
8151
8152 case 660:
8153
8154 /* Line 1455 of yacc.c */
8155 #line 3665 "ircd_parser.y"
8156 {
8157 if (conf_parser_ctx.pass == 2)
8158 {
8159 /*
8160 * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
8161 * end we will have one extra, so we should free it.
8162 */
8163 if (yy_conf->name == NULL || yy_aconf->user == NULL)
8164 {
8165 delete_conf_item(yy_conf);
8166 yy_conf = NULL;
8167 yy_aconf = NULL;
8168 }
8169 }
8170 }
8171 break;
8172
8173 case 670:
8174
8175 /* Line 1455 of yacc.c */
8176 #line 3691 "ircd_parser.y"
8177 {
8178 if (conf_parser_ctx.pass == 2)
8179 ConfigFileEntry.glines = yylval.number;
8180 }
8181 break;
8182
8183 case 671:
8184
8185 /* Line 1455 of yacc.c */
8186 #line 3697 "ircd_parser.y"
8187 {
8188 if (conf_parser_ctx.pass == 2)
8189 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
8190 }
8191 break;
8192
8193 case 672:
8194
8195 /* Line 1455 of yacc.c */
8196 #line 3703 "ircd_parser.y"
8197 {
8198 if (conf_parser_ctx.pass == 2)
8199 ConfigFileEntry.gline_logging = 0;
8200 }
8201 break;
8202
8203 case 676:
8204
8205 /* Line 1455 of yacc.c */
8206 #line 3709 "ircd_parser.y"
8207 {
8208 if (conf_parser_ctx.pass == 2)
8209 ConfigFileEntry.gline_logging |= GDENY_REJECT;
8210 }
8211 break;
8212
8213 case 677:
8214
8215 /* Line 1455 of yacc.c */
8216 #line 3713 "ircd_parser.y"
8217 {
8218 if (conf_parser_ctx.pass == 2)
8219 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
8220 }
8221 break;
8222
8223 case 678:
8224
8225 /* Line 1455 of yacc.c */
8226 #line 3719 "ircd_parser.y"
8227 {
8228 if (conf_parser_ctx.pass == 2)
8229 {
8230 struct split_nuh_item nuh;
8231
8232 nuh.nuhmask = yylval.string;
8233 nuh.nickptr = NULL;
8234 nuh.userptr = userbuf;
8235 nuh.hostptr = hostbuf;
8236
8237 nuh.nicksize = 0;
8238 nuh.usersize = sizeof(userbuf);
8239 nuh.hostsize = sizeof(hostbuf);
8240
8241 split_nuh(&nuh);
8242
8243 if (yy_aconf->user == NULL)
8244 {
8245 DupString(yy_aconf->user, userbuf);
8246 DupString(yy_aconf->host, hostbuf);
8247 }
8248 else
8249 {
8250 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
8251
8252 DupString(yy_tmp->user, userbuf);
8253 DupString(yy_tmp->host, hostbuf);
8254
8255 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
8256 }
8257 }
8258 }
8259 break;
8260
8261 case 679:
8262
8263 /* Line 1455 of yacc.c */
8264 #line 3753 "ircd_parser.y"
8265 {
8266 if (conf_parser_ctx.pass == 2)
8267 {
8268 MyFree(yy_conf->name);
8269 DupString(yy_conf->name, yylval.string);
8270 }
8271 }
8272 break;
8273
8274 case 680:
8275
8276 /* Line 1455 of yacc.c */
8277 #line 3762 "ircd_parser.y"
8278 {
8279 if (conf_parser_ctx.pass == 2)
8280 yy_aconf->flags = 0;
8281 }
8282 break;
8283
8284 case 681:
8285
8286 /* Line 1455 of yacc.c */
8287 #line 3766 "ircd_parser.y"
8288 {
8289 if (conf_parser_ctx.pass == 2)
8290 {
8291 struct CollectItem *yy_tmp = NULL;
8292 dlink_node *ptr, *next_ptr;
8293
8294 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
8295 {
8296 struct AccessItem *new_aconf;
8297 struct ConfItem *new_conf;
8298
8299 yy_tmp = ptr->data;
8300 new_conf = make_conf_item(GDENY_TYPE);
8301 new_aconf = map_to_conf(new_conf);
8302
8303 new_aconf->flags = yy_aconf->flags;
8304
8305 if (yy_conf->name != NULL)
8306 DupString(new_conf->name, yy_conf->name);
8307 else
8308 DupString(new_conf->name, "*");
8309 if (yy_aconf->user != NULL)
8310 DupString(new_aconf->user, yy_tmp->user);
8311 else
8312 DupString(new_aconf->user, "*");
8313 if (yy_aconf->host != NULL)
8314 DupString(new_aconf->host, yy_tmp->host);
8315 else
8316 DupString(new_aconf->host, "*");
8317
8318 dlinkDelete(&yy_tmp->node, &col_conf_list);
8319 }
8320
8321 /*
8322 * In case someone has fed us with more than one action= after user/name
8323 * which would leak memory -Michael
8324 */
8325 if (yy_conf->name == NULL || yy_aconf->user == NULL)
8326 delete_conf_item(yy_conf);
8327
8328 yy_conf = make_conf_item(GDENY_TYPE);
8329 yy_aconf = map_to_conf(yy_conf);
8330 }
8331 }
8332 break;
8333
8334 case 684:
8335
8336 /* Line 1455 of yacc.c */
8337 #line 3813 "ircd_parser.y"
8338 {
8339 if (conf_parser_ctx.pass == 2)
8340 yy_aconf->flags |= GDENY_REJECT;
8341 }
8342 break;
8343
8344 case 685:
8345
8346 /* Line 1455 of yacc.c */
8347 #line 3817 "ircd_parser.y"
8348 {
8349 if (conf_parser_ctx.pass == 2)
8350 yy_aconf->flags |= GDENY_BLOCK;
8351 }
8352 break;
8353
8354 case 708:
8355
8356 /* Line 1455 of yacc.c */
8357 #line 3841 "ircd_parser.y"
8358 {
8359 ConfigChannel.disable_fake_channels = yylval.number;
8360 }
8361 break;
8362
8363 case 709:
8364
8365 /* Line 1455 of yacc.c */
8366 #line 3846 "ircd_parser.y"
8367 {
8368 ConfigChannel.restrict_channels = yylval.number;
8369 }
8370 break;
8371
8372 case 710:
8373
8374 /* Line 1455 of yacc.c */
8375 #line 3851 "ircd_parser.y"
8376 {
8377 ConfigChannel.disable_local_channels = yylval.number;
8378 }
8379 break;
8380
8381 case 711:
8382
8383 /* Line 1455 of yacc.c */
8384 #line 3856 "ircd_parser.y"
8385 {
8386 ConfigChannel.use_except = yylval.number;
8387 }
8388 break;
8389
8390 case 712:
8391
8392 /* Line 1455 of yacc.c */
8393 #line 3861 "ircd_parser.y"
8394 {
8395 ConfigChannel.use_invex = yylval.number;
8396 }
8397 break;
8398
8399 case 713:
8400
8401 /* Line 1455 of yacc.c */
8402 #line 3866 "ircd_parser.y"
8403 {
8404 ConfigChannel.use_knock = yylval.number;
8405 }
8406 break;
8407
8408 case 714:
8409
8410 /* Line 1455 of yacc.c */
8411 #line 3871 "ircd_parser.y"
8412 {
8413 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
8414 }
8415 break;
8416
8417 case 715:
8418
8419 /* Line 1455 of yacc.c */
8420 #line 3876 "ircd_parser.y"
8421 {
8422 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
8423 }
8424 break;
8425
8426 case 716:
8427
8428 /* Line 1455 of yacc.c */
8429 #line 3881 "ircd_parser.y"
8430 {
8431 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
8432 }
8433 break;
8434
8435 case 717:
8436
8437 /* Line 1455 of yacc.c */
8438 #line 3886 "ircd_parser.y"
8439 {
8440 ConfigChannel.quiet_on_ban = yylval.number;
8441 }
8442 break;
8443
8444 case 718:
8445
8446 /* Line 1455 of yacc.c */
8447 #line 3891 "ircd_parser.y"
8448 {
8449 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
8450 }
8451 break;
8452
8453 case 719:
8454
8455 /* Line 1455 of yacc.c */
8456 #line 3896 "ircd_parser.y"
8457 {
8458 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
8459 }
8460 break;
8461
8462 case 720:
8463
8464 /* Line 1455 of yacc.c */
8465 #line 3901 "ircd_parser.y"
8466 {
8467 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
8468 }
8469 break;
8470
8471 case 721:
8472
8473 /* Line 1455 of yacc.c */
8474 #line 3906 "ircd_parser.y"
8475 {
8476 ConfigChannel.no_create_on_split = yylval.number;
8477 }
8478 break;
8479
8480 case 722:
8481
8482 /* Line 1455 of yacc.c */
8483 #line 3911 "ircd_parser.y"
8484 {
8485 ConfigChannel.no_join_on_split = yylval.number;
8486 }
8487 break;
8488
8489 case 723:
8490
8491 /* Line 1455 of yacc.c */
8492 #line 3916 "ircd_parser.y"
8493 {
8494 ConfigChannel.burst_topicwho = yylval.number;
8495 }
8496 break;
8497
8498 case 724:
8499
8500 /* Line 1455 of yacc.c */
8501 #line 3921 "ircd_parser.y"
8502 {
8503 GlobalSetOptions.joinfloodcount = yylval.number;
8504 }
8505 break;
8506
8507 case 725:
8508
8509 /* Line 1455 of yacc.c */
8510 #line 3926 "ircd_parser.y"
8511 {
8512 GlobalSetOptions.joinfloodtime = yylval.number;
8513 }
8514 break;
8515
8516 case 737:
8517
8518 /* Line 1455 of yacc.c */
8519 #line 3945 "ircd_parser.y"
8520 {
8521 if (conf_parser_ctx.pass == 2)
8522 ConfigServerHide.flatten_links = yylval.number;
8523 }
8524 break;
8525
8526 case 738:
8527
8528 /* Line 1455 of yacc.c */
8529 #line 3951 "ircd_parser.y"
8530 {
8531 if (conf_parser_ctx.pass == 2)
8532 ConfigServerHide.hide_servers = yylval.number;
8533 }
8534 break;
8535
8536 case 739:
8537
8538 /* Line 1455 of yacc.c */
8539 #line 3957 "ircd_parser.y"
8540 {
8541 if (conf_parser_ctx.pass == 2)
8542 {
8543 MyFree(ConfigServerHide.hidden_name);
8544 DupString(ConfigServerHide.hidden_name, yylval.string);
8545 }
8546 }
8547 break;
8548
8549 case 740:
8550
8551 /* Line 1455 of yacc.c */
8552 #line 3966 "ircd_parser.y"
8553 {
8554 if (conf_parser_ctx.pass == 2)
8555 {
8556 if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
8557 {
8558 eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
8559 ConfigServerHide.links_disabled = 0;
8560 }
8561
8562 ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
8563 }
8564 }
8565 break;
8566
8567 case 741:
8568
8569 /* Line 1455 of yacc.c */
8570 #line 3980 "ircd_parser.y"
8571 {
8572 if (conf_parser_ctx.pass == 2)
8573 ConfigServerHide.hidden = yylval.number;
8574 }
8575 break;
8576
8577 case 742:
8578
8579 /* Line 1455 of yacc.c */
8580 #line 3986 "ircd_parser.y"
8581 {
8582 if (conf_parser_ctx.pass == 2)
8583 ConfigServerHide.disable_hidden = yylval.number;
8584 }
8585 break;
8586
8587 case 743:
8588
8589 /* Line 1455 of yacc.c */
8590 #line 3992 "ircd_parser.y"
8591 {
8592 if (conf_parser_ctx.pass == 2)
8593 ConfigServerHide.hide_server_ips = yylval.number;
8594 }
8595 break;
8596
8597
8598
8599 /* Line 1455 of yacc.c */
8600 #line 8601 "ircd_parser.c"
8601 default: break;
8602 }
8603 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8604
8605 YYPOPSTACK (yylen);
8606 yylen = 0;
8607 YY_STACK_PRINT (yyss, yyssp);
8608
8609 *++yyvsp = yyval;
8610
8611 /* Now `shift' the result of the reduction. Determine what state
8612 that goes to, based on the state we popped back to and the rule
8613 number reduced by. */
8614
8615 yyn = yyr1[yyn];
8616
8617 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
8618 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
8619 yystate = yytable[yystate];
8620 else
8621 yystate = yydefgoto[yyn - YYNTOKENS];
8622
8623 goto yynewstate;
8624
8625
8626 /*------------------------------------.
8627 | yyerrlab -- here on detecting error |
8628 `------------------------------------*/
8629 yyerrlab:
8630 /* If not already recovering from an error, report this error. */
8631 if (!yyerrstatus)
8632 {
8633 ++yynerrs;
8634 #if ! YYERROR_VERBOSE
8635 yyerror (YY_("syntax error"));
8636 #else
8637 {
8638 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
8639 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
8640 {
8641 YYSIZE_T yyalloc = 2 * yysize;
8642 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
8643 yyalloc = YYSTACK_ALLOC_MAXIMUM;
8644 if (yymsg != yymsgbuf)
8645 YYSTACK_FREE (yymsg);
8646 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
8647 if (yymsg)
8648 yymsg_alloc = yyalloc;
8649 else
8650 {
8651 yymsg = yymsgbuf;
8652 yymsg_alloc = sizeof yymsgbuf;
8653 }
8654 }
8655
8656 if (0 < yysize && yysize <= yymsg_alloc)
8657 {
8658 (void) yysyntax_error (yymsg, yystate, yychar);
8659 yyerror (yymsg);
8660 }
8661 else
8662 {
8663 yyerror (YY_("syntax error"));
8664 if (yysize != 0)
8665 goto yyexhaustedlab;
8666 }
8667 }
8668 #endif
8669 }
8670
8671
8672
8673 if (yyerrstatus == 3)
8674 {
8675 /* If just tried and failed to reuse lookahead token after an
8676 error, discard it. */
8677
8678 if (yychar <= YYEOF)
8679 {
8680 /* Return failure if at end of input. */
8681 if (yychar == YYEOF)
8682 YYABORT;
8683 }
8684 else
8685 {
8686 yydestruct ("Error: discarding",
8687 yytoken, &yylval);
8688 yychar = YYEMPTY;
8689 }
8690 }
8691
8692 /* Else will try to reuse lookahead token after shifting the error
8693 token. */
8694 goto yyerrlab1;
8695
8696
8697 /*---------------------------------------------------.
8698 | yyerrorlab -- error raised explicitly by YYERROR. |
8699 `---------------------------------------------------*/
8700 yyerrorlab:
8701
8702 /* Pacify compilers like GCC when the user code never invokes
8703 YYERROR and the label yyerrorlab therefore never appears in user
8704 code. */
8705 if (/*CONSTCOND*/ 0)
8706 goto yyerrorlab;
8707
8708 /* Do not reclaim the symbols of the rule which action triggered
8709 this YYERROR. */
8710 YYPOPSTACK (yylen);
8711 yylen = 0;
8712 YY_STACK_PRINT (yyss, yyssp);
8713 yystate = *yyssp;
8714 goto yyerrlab1;
8715
8716
8717 /*-------------------------------------------------------------.
8718 | yyerrlab1 -- common code for both syntax error and YYERROR. |
8719 `-------------------------------------------------------------*/
8720 yyerrlab1:
8721 yyerrstatus = 3; /* Each real token shifted decrements this. */
8722
8723 for (;;)
8724 {
8725 yyn = yypact[yystate];
8726 if (yyn != YYPACT_NINF)
8727 {
8728 yyn += YYTERROR;
8729 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8730 {
8731 yyn = yytable[yyn];
8732 if (0 < yyn)
8733 break;
8734 }
8735 }
8736
8737 /* Pop the current state because it cannot handle the error token. */
8738 if (yyssp == yyss)
8739 YYABORT;
8740
8741
8742 yydestruct ("Error: popping",
8743 yystos[yystate], yyvsp);
8744 YYPOPSTACK (1);
8745 yystate = *yyssp;
8746 YY_STACK_PRINT (yyss, yyssp);
8747 }
8748
8749 *++yyvsp = yylval;
8750
8751
8752 /* Shift the error token. */
8753 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8754
8755 yystate = yyn;
8756 goto yynewstate;
8757
8758
8759 /*-------------------------------------.
8760 | yyacceptlab -- YYACCEPT comes here. |
8761 `-------------------------------------*/
8762 yyacceptlab:
8763 yyresult = 0;
8764 goto yyreturn;
8765
8766 /*-----------------------------------.
8767 | yyabortlab -- YYABORT comes here. |
8768 `-----------------------------------*/
8769 yyabortlab:
8770 yyresult = 1;
8771 goto yyreturn;
8772
8773 #if !defined(yyoverflow) || YYERROR_VERBOSE
8774 /*-------------------------------------------------.
8775 | yyexhaustedlab -- memory exhaustion comes here. |
8776 `-------------------------------------------------*/
8777 yyexhaustedlab:
8778 yyerror (YY_("memory exhausted"));
8779 yyresult = 2;
8780 /* Fall through. */
8781 #endif
8782
8783 yyreturn:
8784 if (yychar != YYEMPTY)
8785 yydestruct ("Cleanup: discarding lookahead",
8786 yytoken, &yylval);
8787 /* Do not reclaim the symbols of the rule which action triggered
8788 this YYABORT or YYACCEPT. */
8789 YYPOPSTACK (yylen);
8790 YY_STACK_PRINT (yyss, yyssp);
8791 while (yyssp != yyss)
8792 {
8793 yydestruct ("Cleanup: popping",
8794 yystos[*yyssp], yyvsp);
8795 YYPOPSTACK (1);
8796 }
8797 #ifndef yyoverflow
8798 if (yyss != yyssa)
8799 YYSTACK_FREE (yyss);
8800 #endif
8801 #if YYERROR_VERBOSE
8802 if (yymsg != yymsgbuf)
8803 YYSTACK_FREE (yymsg);
8804 #endif
8805 /* Make sure YYID is used. */
8806 return YYID (yyresult);
8807 }
8808
8809
8810

Properties

Name Value
svn:eol-style native