ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/src/y.tab.c
Revision: 109
Committed: Wed Oct 12 09:42:59 2005 UTC (20 years, 10 months ago) by michael
Content type: text/x-csrc
File size: 232967 byte(s)
Log Message:
- Forward-ported GDENY core fix

File Contents

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

Properties

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