ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1119
Committed: Fri Jan 7 22:01:47 2011 UTC (14 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 242495 byte(s)
Log Message:
- removed HUB capability, which was a LL leftover

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

Properties

Name Value
svn:eol-style native