ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1432
Committed: Sat Jun 9 19:40:08 2012 UTC (13 years, 2 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 233063 byte(s)
Log Message:
- Added channel::max_chans_per_oper configuration directive. The old way
  was to let ircops join three times the amount of max_chans_per_user.

  I'd rather would make this a class{} based limit, but this would require us
  to reprint the ISUPPORT buffer every time a client connects.

File Contents

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

Properties

Name Value
svn:eol-style native