ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/y.tab.c
Revision: 595
Committed: Fri May 12 21:17:16 2006 UTC (17 years, 10 months ago) by michael
Content type: text/x-csrc
File size: 235335 byte(s)
Log Message:
- Backported core fix for regexp k-lines

File Contents

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

Properties

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