ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/src/y.tab.c
Revision: 37
Committed: Sun Oct 2 22:23:24 2005 UTC (20 years, 10 months ago) by adx
Content type: text/x-csrc
File size: 223097 byte(s)
Log Message:
- disallow ':' as the 1st character of server passwords, forbid spaces too
  (breaks PASS %s TS 6 %s)

File Contents

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

Properties

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