ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1005
Committed: Mon Aug 31 23:07:43 2009 UTC (14 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.2/src/ircd_parser.c
File size: 258290 byte(s)
Log Message:
- remove conf_add_d_conf wrapper

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

Properties

Name Value
svn:eol-style native