ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/src/y.tab.c
Revision: 32
Committed: Sun Oct 2 20:41:23 2005 UTC (20 years, 10 months ago) by knight
Content type: text/x-csrc
File size: 225008 byte(s)
Log Message:
- svn:keywords

File Contents

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

Properties

Name Value
svn:eol-style native
svn:keywords Revision