ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/src/y.tab.c
Revision: 69
Committed: Tue Oct 4 16:09:51 2005 UTC (20 years, 10 months ago) by adx
Content type: text/x-csrc
File size: 229192 byte(s)
Log Message:
- splitted ircd/libio, all headers connected with libio sources have been
  moved for internal use only. To use libio interface, include "libio.h"
  (which is already done in "stdinc.h")


File Contents

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

Properties

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