ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/y.tab.c
Revision: 56
Committed: Mon Oct 3 11:33:30 2005 UTC (18 years, 6 months ago) by michael
Content type: text/x-csrc
File size: 229404 byte(s)
Log Message:
- Re-added an equivalent of H6's sixth O-line field (Modes to get on operup).
- Updated efnet's example.conf to reflect the new
  opers_bypass_callerid directive
- Misc style corrections to s_user.c while on it

File Contents

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

Properties

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