ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 967
Committed: Sun Aug 2 18:05:28 2009 UTC (14 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.2/src/ircd_parser.c
File size: 258643 byte(s)
Log Message:
- added ssl_server_protocol configuration option to servinfo{}.
  valid flags are 'sslv3' and 'tlsv1'

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

Properties

Name Value
svn:eol-style native