ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/ircd_parser.c
Revision: 1228
Committed: Mon Sep 19 09:38:38 2011 UTC (12 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 243498 byte(s)
Log Message:
- add 'restart'/'module' operator flags which allows better fine tuning
  whether or not an operator may have access to RESTART/MOD* commands
- ircd_parser.y: (oper{}): ensure yy_aconf->port is set to zero, before
  setting any privilege bits. Fixes odd behaviour with multiple 'flags'
  entries.
  Also removed ability to negate operator flags with a tilde '~'. Pretty
  useless since all operator privilege flags are set to zero by default.

File Contents

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

Properties

Name Value
svn:eol-style native