ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/y.tab.c
Revision: 619
Committed: Tue May 23 07:22:23 2006 UTC (17 years, 10 months ago) by michael
Content type: text/x-csrc
File size: 240849 byte(s)
Log Message:
- Backported r376 (STATS y now shows the total number of clients in a class)
- Rebuilt y.tab.c using bison 2.2

File Contents

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

Properties

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