ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1123
Committed: Sun Feb 6 21:57:50 2011 UTC (14 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 242352 byte(s)
Log Message:
- Got rid of irc_addrinfo.c and irc_getnameinfo.c
- Fixed broken ipv6 detection due to incorrect use of AC_CHECK_TYPES

File Contents

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

Properties

Name Value
svn:eol-style native