ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1118
Committed: Thu Jan 6 13:39:10 2011 UTC (13 years, 3 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 242701 byte(s)
Log Message:
- cleanup and sanitize m_server.c. remove hostmasking. Improve TS6 suppport

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     769, 791, 793, 793, 794, 794, 795, 795, 797, 806,
1346     815, 828, 830, 831, 833, 833, 834, 835, 835, 836,
1347     836, 837, 837, 838, 838, 839, 840, 842, 846, 850,
1348     857, 864, 871, 878, 885, 892, 899, 906, 910, 914,
1349     918, 922, 926, 930, 936, 946, 945, 1039, 1039, 1040,
1350     1040, 1041, 1041, 1041, 1042, 1042, 1042, 1043, 1043, 1043,
1351     1045, 1057, 1069, 1103, 1115, 1126, 1168, 1178, 1177, 1183,
1352     1183, 1184, 1188, 1192, 1196, 1200, 1204, 1208, 1212, 1216,
1353     1220, 1224, 1228, 1232, 1236, 1240, 1244, 1248, 1252, 1256,
1354     1263, 1262, 1266, 1266, 1267, 1267, 1268, 1268, 1270, 1277,
1355     1284, 1291, 1298, 1305, 1312, 1319, 1326, 1333, 1340, 1347,
1356     1354, 1361, 1368, 1375, 1389, 1388, 1438, 1438, 1440, 1440,
1357     1441, 1442, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449,
1358     1450, 1451, 1452, 1453, 1455, 1464, 1473, 1479, 1485, 1491,
1359     1497, 1503, 1509, 1515, 1521, 1527, 1533, 1539, 1549, 1548,
1360     1565, 1564, 1569, 1569, 1570, 1574, 1578, 1586, 1586, 1587,
1361     1587, 1587, 1587, 1587, 1589, 1589, 1591, 1591, 1593, 1607,
1362     1627, 1636, 1649, 1648, 1717, 1717, 1718, 1718, 1718, 1718,
1363     1719, 1719, 1719, 1720, 1720, 1722, 1759, 1772, 1781, 1793,
1364     1792, 1796, 1796, 1797, 1797, 1798, 1798, 1800, 1807, 1814,
1365     1821, 1828, 1835, 1842, 1849, 1856, 1863, 1873, 1892, 1902,
1366     1916, 1915, 1931, 1931, 1932, 1932, 1932, 1932, 1934, 1943,
1367     1958, 1972, 1971, 1987, 1987, 1988, 1988, 1988, 1988, 1990,
1368     1999, 2022, 2021, 2027, 2027, 2028, 2032, 2036, 2040, 2044,
1369     2048, 2052, 2056, 2060, 2064, 2068, 2078, 2077, 2094, 2094,
1370     2095, 2095, 2095, 2097, 2104, 2103, 2109, 2109, 2110, 2114,
1371     2118, 2122, 2126, 2130, 2134, 2138, 2142, 2146, 2150, 2160,
1372     2159, 2305, 2305, 2306, 2306, 2307, 2307, 2307, 2308, 2308,
1373     2309, 2309, 2310, 2310, 2310, 2311, 2311, 2312, 2312, 2313,
1374     2315, 2327, 2339, 2348, 2374, 2392, 2410, 2416, 2420, 2429,
1375     2428, 2432, 2432, 2433, 2433, 2434, 2434, 2436, 2447, 2454,
1376     2461, 2468, 2478, 2519, 2530, 2543, 2556, 2565, 2601, 2600,
1377     2664, 2663, 2667, 2667, 2668, 2674, 2674, 2675, 2675, 2675,
1378     2675, 2677, 2696, 2706, 2705, 2728, 2728, 2729, 2729, 2729,
1379     2731, 2737, 2746, 2748, 2748, 2749, 2749, 2751, 2770, 2769,
1380     2817, 2816, 2820, 2820, 2821, 2827, 2827, 2828, 2828, 2828,
1381     2828, 2830, 2836, 2845, 2848, 2848, 2849, 2849, 2850, 2850,
1382     2851, 2851, 2852, 2852, 2853, 2853, 2854, 2854, 2855, 2855,
1383     2856, 2856, 2857, 2857, 2858, 2858, 2859, 2859, 2860, 2860,
1384     2861, 2861, 2862, 2862, 2863, 2863, 2864, 2864, 2865, 2865,
1385     2866, 2866, 2867, 2867, 2868, 2868, 2869, 2870, 2870, 2871,
1386     2871, 2872, 2873, 2873, 2874, 2874, 2875, 2875, 2876, 2876,
1387     2877, 2878, 2881, 2886, 2891, 2896, 2901, 2906, 2911, 2916,
1388 michael 1117 2921, 2926, 2931, 2936, 2941, 2946, 2951, 2956, 2961, 2966,
1389 michael 1118 2971, 2977, 2988, 2993, 3002, 3007, 3012, 3017, 3022, 3027,
1390     3030, 3035, 3038, 3043, 3048, 3053, 3058, 3063, 3068, 3073,
1391     3078, 3083, 3094, 3099, 3104, 3109, 3118, 3150, 3168, 3173,
1392     3182, 3187, 3192, 3198, 3197, 3202, 3202, 3203, 3206, 3209,
1393     3212, 3215, 3218, 3221, 3224, 3227, 3230, 3233, 3236, 3239,
1394     3242, 3245, 3248, 3251, 3254, 3257, 3263, 3262, 3267, 3267,
1395     3268, 3271, 3274, 3277, 3280, 3283, 3286, 3289, 3292, 3295,
1396     3298, 3301, 3304, 3307, 3310, 3313, 3316, 3319, 3322, 3327,
1397     3332, 3337, 3342, 3352, 3351, 3375, 3375, 3376, 3377, 3378,
1398     3379, 3380, 3381, 3382, 3384, 3390, 3397, 3396, 3401, 3401,
1399     3402, 3406, 3412, 3446, 3456, 3455, 3505, 3505, 3506, 3510,
1400     3519, 3522, 3522, 3523, 3523, 3524, 3524, 3525, 3525, 3526,
1401     3526, 3527, 3527, 3528, 3529, 3529, 3530, 3530, 3531, 3531,
1402     3532, 3532, 3534, 3539, 3544, 3549, 3554, 3559, 3564, 3569,
1403 michael 1117 3574, 3579, 3584, 3589, 3594, 3599, 3604, 3609, 3614, 3619,
1404 michael 1118 3627, 3630, 3630, 3631, 3631, 3632, 3633, 3634, 3634, 3635,
1405     3636, 3638, 3644, 3650, 3659, 3673, 3679, 3685
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 913 {
3794     if (yylval.number)
3795     {
3796     ServerInfo.hub = 1;
3797     delete_capability("HUB");
3798     add_capability("HUB", CAP_HUB, 1);
3799     }
3800     else if (ServerInfo.hub)
3801     {
3802    
3803     ServerInfo.hub = 0;
3804     delete_capability("HUB");
3805     }
3806     }
3807     }
3808     break;
3809    
3810 michael 967 case 88:
3811    
3812 michael 1089 /* Line 1464 of yacc.c */
3813 michael 1118 #line 798 "ircd_parser.y"
3814 michael 913 {
3815 michael 967 if (conf_parser_ctx.pass == 2)
3816 michael 913 {
3817     MyFree(AdminInfo.name);
3818     DupString(AdminInfo.name, yylval.string);
3819     }
3820     }
3821     break;
3822    
3823 michael 967 case 89:
3824    
3825 michael 1089 /* Line 1464 of yacc.c */
3826 michael 1118 #line 807 "ircd_parser.y"
3827 michael 913 {
3828 michael 967 if (conf_parser_ctx.pass == 2)
3829 michael 913 {
3830     MyFree(AdminInfo.email);
3831     DupString(AdminInfo.email, yylval.string);
3832     }
3833     }
3834     break;
3835    
3836 michael 967 case 90:
3837    
3838 michael 1089 /* Line 1464 of yacc.c */
3839 michael 1118 #line 816 "ircd_parser.y"
3840 michael 913 {
3841 michael 967 if (conf_parser_ctx.pass == 2)
3842 michael 913 {
3843     MyFree(AdminInfo.description);
3844     DupString(AdminInfo.description, yylval.string);
3845     }
3846     }
3847     break;
3848    
3849 michael 967 case 107:
3850    
3851 michael 1089 /* Line 1464 of yacc.c */
3852 michael 1118 #line 843 "ircd_parser.y"
3853 michael 913 {
3854     }
3855     break;
3856    
3857 michael 967 case 108:
3858    
3859 michael 1089 /* Line 1464 of yacc.c */
3860 michael 1118 #line 847 "ircd_parser.y"
3861 michael 913 {
3862     }
3863     break;
3864    
3865 michael 967 case 109:
3866    
3867 michael 1089 /* Line 1464 of yacc.c */
3868 michael 1118 #line 851 "ircd_parser.y"
3869 michael 913 {
3870 michael 967 if (conf_parser_ctx.pass == 2)
3871 michael 913 strlcpy(ConfigLoggingEntry.userlog, yylval.string,
3872     sizeof(ConfigLoggingEntry.userlog));
3873     }
3874     break;
3875    
3876 michael 967 case 110:
3877    
3878 michael 1089 /* Line 1464 of yacc.c */
3879 michael 1118 #line 858 "ircd_parser.y"
3880 michael 913 {
3881 michael 967 if (conf_parser_ctx.pass == 2)
3882 michael 913 strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
3883     sizeof(ConfigLoggingEntry.failed_operlog));
3884     }
3885     break;
3886    
3887 michael 967 case 111:
3888    
3889 michael 1089 /* Line 1464 of yacc.c */
3890 michael 1118 #line 865 "ircd_parser.y"
3891 michael 913 {
3892 michael 967 if (conf_parser_ctx.pass == 2)
3893 michael 913 strlcpy(ConfigLoggingEntry.operlog, yylval.string,
3894     sizeof(ConfigLoggingEntry.operlog));
3895     }
3896     break;
3897    
3898 michael 967 case 112:
3899    
3900 michael 1089 /* Line 1464 of yacc.c */
3901 michael 1118 #line 872 "ircd_parser.y"
3902 michael 913 {
3903 michael 967 if (conf_parser_ctx.pass == 2)
3904 michael 913 strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
3905     sizeof(ConfigLoggingEntry.operspylog));
3906     }
3907     break;
3908    
3909 michael 967 case 113:
3910    
3911 michael 1089 /* Line 1464 of yacc.c */
3912 michael 1118 #line 879 "ircd_parser.y"
3913 michael 913 {
3914 michael 967 if (conf_parser_ctx.pass == 2)
3915 michael 913 strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
3916     sizeof(ConfigLoggingEntry.glinelog));
3917     }
3918     break;
3919    
3920 michael 967 case 114:
3921    
3922 michael 1089 /* Line 1464 of yacc.c */
3923 michael 1118 #line 886 "ircd_parser.y"
3924 michael 913 {
3925 michael 967 if (conf_parser_ctx.pass == 2)
3926 michael 913 strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
3927     sizeof(ConfigLoggingEntry.klinelog));
3928     }
3929     break;
3930    
3931 michael 967 case 115:
3932    
3933 michael 1089 /* Line 1464 of yacc.c */
3934 michael 1118 #line 893 "ircd_parser.y"
3935 michael 913 {
3936 michael 967 if (conf_parser_ctx.pass == 2)
3937 michael 913 strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
3938     sizeof(ConfigLoggingEntry.ioerrlog));
3939     }
3940     break;
3941    
3942 michael 967 case 116:
3943    
3944 michael 1089 /* Line 1464 of yacc.c */
3945 michael 1118 #line 900 "ircd_parser.y"
3946 michael 913 {
3947 michael 967 if (conf_parser_ctx.pass == 2)
3948 michael 913 strlcpy(ConfigLoggingEntry.killlog, yylval.string,
3949     sizeof(ConfigLoggingEntry.killlog));
3950     }
3951     break;
3952    
3953 michael 967 case 117:
3954    
3955 michael 1089 /* Line 1464 of yacc.c */
3956 michael 1118 #line 907 "ircd_parser.y"
3957 michael 913 {
3958 michael 967 if (conf_parser_ctx.pass == 2)
3959 michael 913 set_log_level(L_CRIT);
3960     }
3961     break;
3962    
3963 michael 967 case 118:
3964    
3965 michael 1089 /* Line 1464 of yacc.c */
3966 michael 1118 #line 911 "ircd_parser.y"
3967 michael 913 {
3968 michael 967 if (conf_parser_ctx.pass == 2)
3969 michael 913 set_log_level(L_ERROR);
3970     }
3971     break;
3972    
3973 michael 967 case 119:
3974    
3975 michael 1089 /* Line 1464 of yacc.c */
3976 michael 1118 #line 915 "ircd_parser.y"
3977 michael 913 {
3978 michael 967 if (conf_parser_ctx.pass == 2)
3979 michael 913 set_log_level(L_WARN);
3980     }
3981     break;
3982    
3983 michael 967 case 120:
3984    
3985 michael 1089 /* Line 1464 of yacc.c */
3986 michael 1118 #line 919 "ircd_parser.y"
3987 michael 913 {
3988 michael 967 if (conf_parser_ctx.pass == 2)
3989 michael 913 set_log_level(L_NOTICE);
3990     }
3991     break;
3992    
3993 michael 967 case 121:
3994    
3995 michael 1089 /* Line 1464 of yacc.c */
3996 michael 1118 #line 923 "ircd_parser.y"
3997 michael 913 {
3998 michael 967 if (conf_parser_ctx.pass == 2)
3999 michael 913 set_log_level(L_TRACE);
4000     }
4001     break;
4002    
4003 michael 967 case 122:
4004    
4005 michael 1089 /* Line 1464 of yacc.c */
4006 michael 1118 #line 927 "ircd_parser.y"
4007 michael 913 {
4008 michael 967 if (conf_parser_ctx.pass == 2)
4009 michael 913 set_log_level(L_INFO);
4010     }
4011     break;
4012    
4013 michael 967 case 123:
4014    
4015 michael 1089 /* Line 1464 of yacc.c */
4016 michael 1118 #line 931 "ircd_parser.y"
4017 michael 913 {
4018 michael 967 if (conf_parser_ctx.pass == 2)
4019 michael 913 set_log_level(L_DEBUG);
4020     }
4021     break;
4022    
4023 michael 967 case 124:
4024    
4025 michael 1089 /* Line 1464 of yacc.c */
4026 michael 1118 #line 937 "ircd_parser.y"
4027 michael 913 {
4028 michael 967 if (conf_parser_ctx.pass == 2)
4029 michael 913 ConfigLoggingEntry.use_logging = yylval.number;
4030     }
4031     break;
4032    
4033 michael 967 case 125:
4034    
4035 michael 1089 /* Line 1464 of yacc.c */
4036 michael 1118 #line 946 "ircd_parser.y"
4037 michael 913 {
4038 michael 967 if (conf_parser_ctx.pass == 2)
4039 michael 913 {
4040     yy_conf = make_conf_item(OPER_TYPE);
4041     yy_aconf = map_to_conf(yy_conf);
4042     SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
4043     }
4044     else
4045     {
4046     MyFree(class_name);
4047     class_name = NULL;
4048     }
4049     }
4050     break;
4051    
4052 michael 967 case 126:
4053    
4054 michael 1089 /* Line 1464 of yacc.c */
4055 michael 1118 #line 959 "ircd_parser.y"
4056 michael 913 {
4057 michael 967 if (conf_parser_ctx.pass == 2)
4058 michael 913 {
4059     struct CollectItem *yy_tmp;
4060     dlink_node *ptr;
4061     dlink_node *next_ptr;
4062    
4063     conf_add_class_to_conf(yy_conf, class_name);
4064    
4065     /* Now, make sure there is a copy of the "base" given oper
4066     * block in each of the collected copies
4067     */
4068    
4069     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4070     {
4071     struct AccessItem *new_aconf;
4072     struct ConfItem *new_conf;
4073     yy_tmp = ptr->data;
4074    
4075     new_conf = make_conf_item(OPER_TYPE);
4076     new_aconf = (struct AccessItem *)map_to_conf(new_conf);
4077    
4078     new_aconf->flags = yy_aconf->flags;
4079    
4080     if (yy_conf->name != NULL)
4081     DupString(new_conf->name, yy_conf->name);
4082     if (yy_tmp->user != NULL)
4083     DupString(new_aconf->user, yy_tmp->user);
4084     else
4085     DupString(new_aconf->user, "*");
4086     if (yy_tmp->host != NULL)
4087     DupString(new_aconf->host, yy_tmp->host);
4088     else
4089     DupString(new_aconf->host, "*");
4090     conf_add_class_to_conf(new_conf, class_name);
4091     if (yy_aconf->passwd != NULL)
4092     DupString(new_aconf->passwd, yy_aconf->passwd);
4093    
4094     new_aconf->port = yy_aconf->port;
4095     #ifdef HAVE_LIBCRYPTO
4096     if (yy_aconf->rsa_public_key_file != NULL)
4097     {
4098     BIO *file;
4099    
4100     DupString(new_aconf->rsa_public_key_file,
4101     yy_aconf->rsa_public_key_file);
4102    
4103     file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4104     new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4105     NULL, 0, NULL);
4106     BIO_set_close(file, BIO_CLOSE);
4107     BIO_free(file);
4108     }
4109     #endif
4110    
4111     #ifdef HAVE_LIBCRYPTO
4112     if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4113     && yy_tmp->host)
4114     #else
4115     if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4116     #endif
4117     {
4118     conf_add_class_to_conf(new_conf, class_name);
4119     if (yy_tmp->name != NULL)
4120     DupString(new_conf->name, yy_tmp->name);
4121     }
4122    
4123     dlinkDelete(&yy_tmp->node, &col_conf_list);
4124     free_collect_item(yy_tmp);
4125     }
4126    
4127     yy_conf = NULL;
4128     yy_aconf = NULL;
4129    
4130    
4131     MyFree(class_name);
4132     class_name = NULL;
4133     }
4134     }
4135     break;
4136    
4137 michael 1076 case 140:
4138 michael 967
4139 michael 1089 /* Line 1464 of yacc.c */
4140 michael 1118 #line 1046 "ircd_parser.y"
4141 michael 913 {
4142 michael 967 if (conf_parser_ctx.pass == 2)
4143 michael 913 {
4144     if (strlen(yylval.string) > OPERNICKLEN)
4145     yylval.string[OPERNICKLEN] = '\0';
4146    
4147     MyFree(yy_conf->name);
4148     DupString(yy_conf->name, yylval.string);
4149     }
4150     }
4151     break;
4152    
4153 michael 1076 case 141:
4154 michael 967
4155 michael 1089 /* Line 1464 of yacc.c */
4156 michael 1118 #line 1058 "ircd_parser.y"
4157 michael 913 {
4158 michael 967 if (conf_parser_ctx.pass == 2)
4159 michael 913 {
4160     if (strlen(yylval.string) > OPERNICKLEN)
4161     yylval.string[OPERNICKLEN] = '\0';
4162    
4163     MyFree(yy_conf->name);
4164     DupString(yy_conf->name, yylval.string);
4165     }
4166     }
4167     break;
4168    
4169 michael 1076 case 142:
4170 michael 967
4171 michael 1089 /* Line 1464 of yacc.c */
4172 michael 1118 #line 1070 "ircd_parser.y"
4173 michael 913 {
4174 michael 967 if (conf_parser_ctx.pass == 2)
4175 michael 913 {
4176     struct split_nuh_item nuh;
4177    
4178     nuh.nuhmask = yylval.string;
4179     nuh.nickptr = NULL;
4180     nuh.userptr = userbuf;
4181     nuh.hostptr = hostbuf;
4182    
4183     nuh.nicksize = 0;
4184     nuh.usersize = sizeof(userbuf);
4185     nuh.hostsize = sizeof(hostbuf);
4186    
4187     split_nuh(&nuh);
4188    
4189     if (yy_aconf->user == NULL)
4190     {
4191     DupString(yy_aconf->user, userbuf);
4192     DupString(yy_aconf->host, hostbuf);
4193     }
4194     else
4195     {
4196     struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4197    
4198     DupString(yy_tmp->user, userbuf);
4199     DupString(yy_tmp->host, hostbuf);
4200    
4201     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4202     }
4203     }
4204     }
4205     break;
4206    
4207 michael 1076 case 143:
4208 michael 967
4209 michael 1089 /* Line 1464 of yacc.c */
4210 michael 1118 #line 1104 "ircd_parser.y"
4211 michael 913 {
4212 michael 967 if (conf_parser_ctx.pass == 2)
4213 michael 913 {
4214     if (yy_aconf->passwd != NULL)
4215     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4216    
4217     MyFree(yy_aconf->passwd);
4218     DupString(yy_aconf->passwd, yylval.string);
4219     }
4220     }
4221     break;
4222    
4223 michael 1076 case 144:
4224 michael 967
4225 michael 1089 /* Line 1464 of yacc.c */
4226 michael 1118 #line 1116 "ircd_parser.y"
4227 michael 913 {
4228 michael 967 if (conf_parser_ctx.pass == 2)
4229 michael 913 {
4230     if (yylval.number)
4231     SetConfEncrypted(yy_aconf);
4232     else
4233     ClearConfEncrypted(yy_aconf);
4234     }
4235     }
4236     break;
4237    
4238 michael 1076 case 145:
4239 michael 967
4240 michael 1089 /* Line 1464 of yacc.c */
4241 michael 1118 #line 1127 "ircd_parser.y"
4242 michael 913 {
4243     #ifdef HAVE_LIBCRYPTO
4244 michael 967 if (conf_parser_ctx.pass == 2)
4245 michael 913 {
4246     BIO *file;
4247    
4248     if (yy_aconf->rsa_public_key != NULL)
4249     {
4250     RSA_free(yy_aconf->rsa_public_key);
4251     yy_aconf->rsa_public_key = NULL;
4252     }
4253    
4254     if (yy_aconf->rsa_public_key_file != NULL)
4255     {
4256     MyFree(yy_aconf->rsa_public_key_file);
4257     yy_aconf->rsa_public_key_file = NULL;
4258     }
4259    
4260     DupString(yy_aconf->rsa_public_key_file, yylval.string);
4261     file = BIO_new_file(yylval.string, "r");
4262    
4263     if (file == NULL)
4264     {
4265     yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4266     break;
4267     }
4268    
4269     yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4270    
4271     if (yy_aconf->rsa_public_key == NULL)
4272     {
4273     yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4274     break;
4275     }
4276    
4277     BIO_set_close(file, BIO_CLOSE);
4278     BIO_free(file);
4279     }
4280     #endif /* HAVE_LIBCRYPTO */
4281     }
4282     break;
4283    
4284 michael 1076 case 146:
4285 michael 967
4286 michael 1089 /* Line 1464 of yacc.c */
4287 michael 1118 #line 1169 "ircd_parser.y"
4288 michael 913 {
4289 michael 967 if (conf_parser_ctx.pass == 2)
4290 michael 913 {
4291     MyFree(class_name);
4292     DupString(class_name, yylval.string);
4293     }
4294     }
4295     break;
4296    
4297 michael 1076 case 147:
4298 michael 967
4299 michael 1089 /* Line 1464 of yacc.c */
4300 michael 1118 #line 1178 "ircd_parser.y"
4301 michael 913 {
4302 michael 967 if (conf_parser_ctx.pass == 2)
4303 michael 913 yy_aconf->modes = 0;
4304     }
4305     break;
4306    
4307 michael 1076 case 151:
4308 michael 967
4309 michael 1089 /* Line 1464 of yacc.c */
4310 michael 1118 #line 1185 "ircd_parser.y"
4311 michael 913 {
4312 michael 967 if (conf_parser_ctx.pass == 2)
4313 michael 913 yy_aconf->modes |= UMODE_BOTS;
4314     }
4315     break;
4316    
4317 michael 1076 case 152:
4318 michael 967
4319 michael 1089 /* Line 1464 of yacc.c */
4320 michael 1118 #line 1189 "ircd_parser.y"
4321 michael 913 {
4322 michael 967 if (conf_parser_ctx.pass == 2)
4323 michael 913 yy_aconf->modes |= UMODE_CCONN;
4324     }
4325     break;
4326    
4327 michael 1076 case 153:
4328 michael 967
4329 michael 1089 /* Line 1464 of yacc.c */
4330 michael 1118 #line 1193 "ircd_parser.y"
4331 michael 913 {
4332 michael 967 if (conf_parser_ctx.pass == 2)
4333 michael 913 yy_aconf->modes |= UMODE_CCONN_FULL;
4334     }
4335     break;
4336    
4337 michael 1076 case 154:
4338 michael 967
4339 michael 1089 /* Line 1464 of yacc.c */
4340 michael 1118 #line 1197 "ircd_parser.y"
4341 michael 913 {
4342 michael 967 if (conf_parser_ctx.pass == 2)
4343 michael 913 yy_aconf->modes |= UMODE_DEAF;
4344     }
4345     break;
4346    
4347 michael 1076 case 155:
4348 michael 967
4349 michael 1089 /* Line 1464 of yacc.c */
4350 michael 1118 #line 1201 "ircd_parser.y"
4351 michael 913 {
4352 michael 967 if (conf_parser_ctx.pass == 2)
4353 michael 913 yy_aconf->modes |= UMODE_DEBUG;
4354     }
4355     break;
4356    
4357 michael 1076 case 156:
4358 michael 967
4359 michael 1089 /* Line 1464 of yacc.c */
4360 michael 1118 #line 1205 "ircd_parser.y"
4361 michael 913 {
4362 michael 967 if (conf_parser_ctx.pass == 2)
4363 michael 913 yy_aconf->modes |= UMODE_FULL;
4364     }
4365     break;
4366    
4367 michael 1076 case 157:
4368 michael 967
4369 michael 1089 /* Line 1464 of yacc.c */
4370 michael 1118 #line 1209 "ircd_parser.y"
4371 michael 913 {
4372 michael 967 if (conf_parser_ctx.pass == 2)
4373 michael 913 yy_aconf->modes |= UMODE_SKILL;
4374     }
4375     break;
4376    
4377 michael 1076 case 158:
4378 michael 967
4379 michael 1089 /* Line 1464 of yacc.c */
4380 michael 1118 #line 1213 "ircd_parser.y"
4381 michael 913 {
4382 michael 967 if (conf_parser_ctx.pass == 2)
4383 michael 913 yy_aconf->modes |= UMODE_NCHANGE;
4384     }
4385     break;
4386    
4387 michael 1076 case 159:
4388 michael 967
4389 michael 1089 /* Line 1464 of yacc.c */
4390 michael 1118 #line 1217 "ircd_parser.y"
4391 michael 913 {
4392 michael 967 if (conf_parser_ctx.pass == 2)
4393 michael 913 yy_aconf->modes |= UMODE_REJ;
4394     }
4395     break;
4396    
4397 michael 1076 case 160:
4398 michael 967
4399 michael 1089 /* Line 1464 of yacc.c */
4400 michael 1118 #line 1221 "ircd_parser.y"
4401 michael 913 {
4402 michael 967 if (conf_parser_ctx.pass == 2)
4403 michael 913 yy_aconf->modes |= UMODE_UNAUTH;
4404     }
4405     break;
4406    
4407 michael 1076 case 161:
4408 michael 967
4409 michael 1089 /* Line 1464 of yacc.c */
4410 michael 1118 #line 1225 "ircd_parser.y"
4411 michael 913 {
4412 michael 967 if (conf_parser_ctx.pass == 2)
4413 michael 913 yy_aconf->modes |= UMODE_SPY;
4414     }
4415     break;
4416    
4417 michael 1076 case 162:
4418 michael 967
4419 michael 1089 /* Line 1464 of yacc.c */
4420 michael 1118 #line 1229 "ircd_parser.y"
4421 michael 913 {
4422 michael 967 if (conf_parser_ctx.pass == 2)
4423 michael 913 yy_aconf->modes |= UMODE_EXTERNAL;
4424     }
4425     break;
4426    
4427 michael 1076 case 163:
4428 michael 967
4429 michael 1089 /* Line 1464 of yacc.c */
4430 michael 1118 #line 1233 "ircd_parser.y"
4431 michael 913 {
4432 michael 967 if (conf_parser_ctx.pass == 2)
4433 michael 913 yy_aconf->modes |= UMODE_OPERWALL;
4434     }
4435     break;
4436    
4437 michael 1076 case 164:
4438 michael 967
4439 michael 1089 /* Line 1464 of yacc.c */
4440 michael 1118 #line 1237 "ircd_parser.y"
4441 michael 913 {
4442 michael 967 if (conf_parser_ctx.pass == 2)
4443 michael 913 yy_aconf->modes |= UMODE_SERVNOTICE;
4444     }
4445     break;
4446    
4447 michael 1076 case 165:
4448 michael 967
4449 michael 1089 /* Line 1464 of yacc.c */
4450 michael 1118 #line 1241 "ircd_parser.y"
4451 michael 913 {
4452 michael 967 if (conf_parser_ctx.pass == 2)
4453 michael 913 yy_aconf->modes |= UMODE_INVISIBLE;
4454     }
4455     break;
4456    
4457 michael 1076 case 166:
4458 michael 967
4459 michael 1089 /* Line 1464 of yacc.c */
4460 michael 1118 #line 1245 "ircd_parser.y"
4461 michael 913 {
4462 michael 967 if (conf_parser_ctx.pass == 2)
4463 michael 913 yy_aconf->modes |= UMODE_WALLOP;
4464     }
4465     break;
4466    
4467 michael 1076 case 167:
4468 michael 967
4469 michael 1089 /* Line 1464 of yacc.c */
4470 michael 1118 #line 1249 "ircd_parser.y"
4471 michael 913 {
4472 michael 967 if (conf_parser_ctx.pass == 2)
4473 michael 913 yy_aconf->modes |= UMODE_SOFTCALLERID;
4474     }
4475     break;
4476    
4477 michael 1076 case 168:
4478 michael 967
4479 michael 1089 /* Line 1464 of yacc.c */
4480 michael 1118 #line 1253 "ircd_parser.y"
4481 michael 913 {
4482 michael 967 if (conf_parser_ctx.pass == 2)
4483 michael 913 yy_aconf->modes |= UMODE_CALLERID;
4484     }
4485     break;
4486    
4487 michael 1076 case 169:
4488 michael 967
4489 michael 1089 /* Line 1464 of yacc.c */
4490 michael 1118 #line 1257 "ircd_parser.y"
4491 michael 913 {
4492 michael 967 if (conf_parser_ctx.pass == 2)
4493 michael 913 yy_aconf->modes |= UMODE_LOCOPS;
4494     }
4495     break;
4496    
4497 michael 1076 case 170:
4498 michael 967
4499 michael 1089 /* Line 1464 of yacc.c */
4500 michael 1118 #line 1263 "ircd_parser.y"
4501 michael 913 {
4502     }
4503     break;
4504    
4505 michael 1076 case 174:
4506 michael 967
4507 michael 1089 /* Line 1464 of yacc.c */
4508 michael 1118 #line 1267 "ircd_parser.y"
4509 michael 913 { not_atom = 1; }
4510     break;
4511    
4512 michael 1076 case 176:
4513 michael 967
4514 michael 1089 /* Line 1464 of yacc.c */
4515 michael 1118 #line 1268 "ircd_parser.y"
4516 michael 913 { not_atom = 0; }
4517     break;
4518    
4519 michael 1076 case 178:
4520 michael 967
4521 michael 1089 /* Line 1464 of yacc.c */
4522 michael 1118 #line 1271 "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_GLOBAL_KILL;
4527     else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4528     }
4529     }
4530     break;
4531    
4532 michael 1076 case 179:
4533 michael 967
4534 michael 1089 /* Line 1464 of yacc.c */
4535 michael 1118 #line 1278 "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_REMOTE;
4540     else yy_aconf->port |= OPER_FLAG_REMOTE;
4541     }
4542     }
4543     break;
4544    
4545 michael 1076 case 180:
4546 michael 967
4547 michael 1089 /* Line 1464 of yacc.c */
4548 michael 1118 #line 1285 "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_K;
4553     else yy_aconf->port |= OPER_FLAG_K;
4554     }
4555     }
4556     break;
4557    
4558 michael 1076 case 181:
4559 michael 967
4560 michael 1089 /* Line 1464 of yacc.c */
4561 michael 1118 #line 1292 "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_UNKLINE;
4566     else yy_aconf->port |= OPER_FLAG_UNKLINE;
4567     }
4568     }
4569     break;
4570    
4571 michael 1076 case 182:
4572 michael 967
4573 michael 1089 /* Line 1464 of yacc.c */
4574 michael 1118 #line 1299 "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_X;
4579     else yy_aconf->port |= OPER_FLAG_X;
4580     }
4581     }
4582     break;
4583    
4584 michael 1076 case 183:
4585 michael 967
4586 michael 1089 /* Line 1464 of yacc.c */
4587 michael 1118 #line 1306 "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_GLINE;
4592     else yy_aconf->port |= OPER_FLAG_GLINE;
4593     }
4594     }
4595     break;
4596    
4597 michael 1076 case 184:
4598 michael 967
4599 michael 1089 /* Line 1464 of yacc.c */
4600 michael 1118 #line 1313 "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_DIE;
4605     else yy_aconf->port |= OPER_FLAG_DIE;
4606     }
4607     }
4608     break;
4609    
4610 michael 1076 case 185:
4611 michael 967
4612 michael 1089 /* Line 1464 of yacc.c */
4613 michael 1118 #line 1320 "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_REHASH;
4618     else yy_aconf->port |= OPER_FLAG_REHASH;
4619     }
4620     }
4621     break;
4622    
4623 michael 1076 case 186:
4624 michael 967
4625 michael 1089 /* Line 1464 of yacc.c */
4626 michael 1118 #line 1327 "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_ADMIN;
4631     else yy_aconf->port |= OPER_FLAG_ADMIN;
4632     }
4633     }
4634     break;
4635    
4636 michael 1076 case 187:
4637 michael 967
4638 michael 1089 /* Line 1464 of yacc.c */
4639 michael 1118 #line 1334 "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_HIDDEN_ADMIN;
4644     else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4645     }
4646     }
4647     break;
4648    
4649 michael 1076 case 188:
4650 michael 967
4651 michael 1089 /* Line 1464 of yacc.c */
4652 michael 1118 #line 1341 "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_N;
4657     else yy_aconf->port |= OPER_FLAG_N;
4658     }
4659     }
4660     break;
4661    
4662 michael 1076 case 189:
4663 michael 967
4664 michael 1089 /* Line 1464 of yacc.c */
4665 michael 1118 #line 1348 "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_OPERWALL;
4670     else yy_aconf->port |= OPER_FLAG_OPERWALL;
4671     }
4672     }
4673     break;
4674    
4675 michael 1076 case 190:
4676 michael 967
4677 michael 1089 /* Line 1464 of yacc.c */
4678 michael 1118 #line 1355 "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_OPER_SPY;
4683     else yy_aconf->port |= OPER_FLAG_OPER_SPY;
4684     }
4685     }
4686     break;
4687    
4688 michael 1076 case 191:
4689 michael 967
4690 michael 1089 /* Line 1464 of yacc.c */
4691 michael 1118 #line 1362 "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_HIDDEN_OPER;
4696     else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
4697     }
4698     }
4699     break;
4700    
4701 michael 1076 case 192:
4702 michael 967
4703 michael 1089 /* Line 1464 of yacc.c */
4704 michael 1118 #line 1369 "ircd_parser.y"
4705 michael 913 {
4706 michael 967 if (conf_parser_ctx.pass == 2)
4707 michael 913 {
4708     if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
4709     else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4710     }
4711     }
4712     break;
4713    
4714 michael 1076 case 193:
4715 michael 967
4716 michael 1089 /* Line 1464 of yacc.c */
4717 michael 1118 #line 1376 "ircd_parser.y"
4718 michael 913 {
4719 michael 967 if (conf_parser_ctx.pass == 2)
4720 michael 913 {
4721     if (not_atom) ClearConfEncrypted(yy_aconf);
4722     else SetConfEncrypted(yy_aconf);
4723     }
4724     }
4725     break;
4726    
4727 michael 1076 case 194:
4728 michael 967
4729 michael 1089 /* Line 1464 of yacc.c */
4730 michael 1118 #line 1389 "ircd_parser.y"
4731 michael 913 {
4732 michael 967 if (conf_parser_ctx.pass == 1)
4733 michael 913 {
4734     yy_conf = make_conf_item(CLASS_TYPE);
4735     yy_class = map_to_conf(yy_conf);
4736     }
4737     }
4738     break;
4739    
4740 michael 1076 case 195:
4741 michael 967
4742 michael 1089 /* Line 1464 of yacc.c */
4743 michael 1118 #line 1396 "ircd_parser.y"
4744 michael 913 {
4745 michael 967 if (conf_parser_ctx.pass == 1)
4746 michael 913 {
4747     struct ConfItem *cconf = NULL;
4748     struct ClassItem *class = NULL;
4749    
4750     if (yy_class_name == NULL)
4751     delete_conf_item(yy_conf);
4752     else
4753     {
4754     cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
4755    
4756     if (cconf != NULL) /* The class existed already */
4757     {
4758     int user_count = 0;
4759    
4760     rebuild_cidr_class(cconf, yy_class);
4761    
4762     class = map_to_conf(cconf);
4763    
4764     user_count = class->curr_user_count;
4765     memcpy(class, yy_class, sizeof(*class));
4766     class->curr_user_count = user_count;
4767     class->active = 1;
4768    
4769     delete_conf_item(yy_conf);
4770    
4771     MyFree(cconf->name); /* Allows case change of class name */
4772     cconf->name = yy_class_name;
4773     }
4774     else /* Brand new class */
4775     {
4776     MyFree(yy_conf->name); /* just in case it was allocated */
4777     yy_conf->name = yy_class_name;
4778     yy_class->active = 1;
4779     }
4780     }
4781    
4782     yy_class_name = NULL;
4783     }
4784     }
4785     break;
4786    
4787 michael 1076 case 214:
4788 michael 967
4789 michael 1089 /* Line 1464 of yacc.c */
4790 michael 1118 #line 1456 "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 215:
4801 michael 967
4802 michael 1089 /* Line 1464 of yacc.c */
4803 michael 1118 #line 1465 "ircd_parser.y"
4804 michael 913 {
4805 michael 967 if (conf_parser_ctx.pass == 1)
4806 michael 913 {
4807     MyFree(yy_class_name);
4808     DupString(yy_class_name, yylval.string);
4809     }
4810     }
4811     break;
4812    
4813 michael 1076 case 216:
4814 michael 967
4815 michael 1089 /* Line 1464 of yacc.c */
4816 michael 1118 #line 1474 "ircd_parser.y"
4817 michael 913 {
4818 michael 967 if (conf_parser_ctx.pass == 1)
4819 michael 913 PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
4820     }
4821     break;
4822    
4823 michael 1076 case 217:
4824 michael 967
4825 michael 1089 /* Line 1464 of yacc.c */
4826 michael 1118 #line 1480 "ircd_parser.y"
4827 michael 913 {
4828 michael 967 if (conf_parser_ctx.pass == 1)
4829 michael 913 PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
4830     }
4831     break;
4832    
4833 michael 1076 case 218:
4834 michael 967
4835 michael 1089 /* Line 1464 of yacc.c */
4836 michael 1118 #line 1486 "ircd_parser.y"
4837 michael 913 {
4838 michael 967 if (conf_parser_ctx.pass == 1)
4839 michael 913 MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
4840     }
4841     break;
4842    
4843 michael 1076 case 219:
4844 michael 967
4845 michael 1089 /* Line 1464 of yacc.c */
4846 michael 1118 #line 1492 "ircd_parser.y"
4847 michael 913 {
4848 michael 967 if (conf_parser_ctx.pass == 1)
4849 michael 913 ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
4850     }
4851     break;
4852    
4853 michael 1076 case 220:
4854 michael 967
4855 michael 1089 /* Line 1464 of yacc.c */
4856 michael 1118 #line 1498 "ircd_parser.y"
4857 michael 913 {
4858 michael 967 if (conf_parser_ctx.pass == 1)
4859 michael 913 MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
4860     }
4861     break;
4862    
4863 michael 1076 case 221:
4864 michael 967
4865 michael 1089 /* Line 1464 of yacc.c */
4866 michael 1118 #line 1504 "ircd_parser.y"
4867 michael 913 {
4868 michael 967 if (conf_parser_ctx.pass == 1)
4869 michael 913 MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
4870     }
4871     break;
4872    
4873 michael 1076 case 222:
4874 michael 967
4875 michael 1089 /* Line 1464 of yacc.c */
4876 michael 1118 #line 1510 "ircd_parser.y"
4877 michael 913 {
4878 michael 967 if (conf_parser_ctx.pass == 1)
4879 michael 913 MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
4880     }
4881     break;
4882    
4883 michael 1076 case 223:
4884 michael 967
4885 michael 1089 /* Line 1464 of yacc.c */
4886 michael 1118 #line 1516 "ircd_parser.y"
4887 michael 913 {
4888 michael 967 if (conf_parser_ctx.pass == 1)
4889 michael 913 MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
4890     }
4891     break;
4892    
4893 michael 1076 case 224:
4894 michael 967
4895 michael 1089 /* Line 1464 of yacc.c */
4896 michael 1118 #line 1522 "ircd_parser.y"
4897 michael 913 {
4898 michael 967 if (conf_parser_ctx.pass == 1)
4899 michael 913 MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
4900     }
4901     break;
4902    
4903 michael 1076 case 225:
4904 michael 967
4905 michael 1089 /* Line 1464 of yacc.c */
4906 michael 1118 #line 1528 "ircd_parser.y"
4907 michael 913 {
4908 michael 967 if (conf_parser_ctx.pass == 1)
4909 michael 913 CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
4910     }
4911     break;
4912    
4913 michael 1076 case 226:
4914 michael 967
4915 michael 1089 /* Line 1464 of yacc.c */
4916 michael 1118 #line 1534 "ircd_parser.y"
4917 michael 913 {
4918 michael 967 if (conf_parser_ctx.pass == 1)
4919 michael 913 CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
4920     }
4921     break;
4922    
4923 michael 1076 case 227:
4924 michael 967
4925 michael 1089 /* Line 1464 of yacc.c */
4926 michael 1118 #line 1540 "ircd_parser.y"
4927 michael 913 {
4928 michael 967 if (conf_parser_ctx.pass == 1)
4929 michael 913 NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
4930     }
4931     break;
4932    
4933 michael 1076 case 228:
4934 michael 967
4935 michael 1089 /* Line 1464 of yacc.c */
4936 michael 1118 #line 1549 "ircd_parser.y"
4937 michael 913 {
4938 michael 967 if (conf_parser_ctx.pass == 2)
4939 michael 913 {
4940     listener_address = NULL;
4941     listener_flags = 0;
4942     }
4943     }
4944     break;
4945    
4946 michael 1076 case 229:
4947 michael 967
4948 michael 1089 /* Line 1464 of yacc.c */
4949 michael 1118 #line 1556 "ircd_parser.y"
4950 michael 913 {
4951 michael 967 if (conf_parser_ctx.pass == 2)
4952 michael 913 {
4953     MyFree(listener_address);
4954     listener_address = NULL;
4955     }
4956     }
4957     break;
4958    
4959 michael 1076 case 230:
4960 michael 967
4961 michael 1089 /* Line 1464 of yacc.c */
4962 michael 1118 #line 1565 "ircd_parser.y"
4963 michael 913 {
4964     listener_flags = 0;
4965     }
4966     break;
4967    
4968 michael 1076 case 234:
4969 michael 967
4970 michael 1089 /* Line 1464 of yacc.c */
4971 michael 1118 #line 1571 "ircd_parser.y"
4972 michael 913 {
4973 michael 967 if (conf_parser_ctx.pass == 2)
4974 michael 913 listener_flags |= LISTENER_SSL;
4975     }
4976     break;
4977    
4978 michael 1076 case 235:
4979 michael 967
4980 michael 1089 /* Line 1464 of yacc.c */
4981 michael 1118 #line 1575 "ircd_parser.y"
4982 michael 913 {
4983 michael 967 if (conf_parser_ctx.pass == 2)
4984 michael 913 listener_flags |= LISTENER_HIDDEN;
4985     }
4986     break;
4987    
4988 michael 1076 case 236:
4989 michael 967
4990 michael 1089 /* Line 1464 of yacc.c */
4991 michael 1118 #line 1579 "ircd_parser.y"
4992 michael 913 {
4993 michael 967 if (conf_parser_ctx.pass == 2)
4994 michael 913 listener_flags |= LISTENER_SERVER;
4995     }
4996     break;
4997    
4998 michael 1076 case 244:
4999 michael 967
5000 michael 1089 /* Line 1464 of yacc.c */
5001 michael 1118 #line 1589 "ircd_parser.y"
5002 michael 913 { listener_flags = 0; }
5003     break;
5004    
5005 michael 1076 case 248:
5006 michael 967
5007 michael 1089 /* Line 1464 of yacc.c */
5008 michael 1118 #line 1594 "ircd_parser.y"
5009 michael 913 {
5010 michael 967 if (conf_parser_ctx.pass == 2)
5011 michael 913 {
5012     if ((listener_flags & LISTENER_SSL))
5013     #ifdef HAVE_LIBCRYPTO
5014 michael 967 if (!ServerInfo.server_ctx)
5015 michael 913 #endif
5016     {
5017     yyerror("SSL not available - port closed");
5018     break;
5019     }
5020     add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
5021     }
5022     }
5023     break;
5024    
5025 michael 1076 case 249:
5026 michael 967
5027 michael 1089 /* Line 1464 of yacc.c */
5028 michael 1118 #line 1608 "ircd_parser.y"
5029 michael 913 {
5030 michael 967 if (conf_parser_ctx.pass == 2)
5031 michael 913 {
5032     int i;
5033    
5034     if ((listener_flags & LISTENER_SSL))
5035     #ifdef HAVE_LIBCRYPTO
5036 michael 967 if (!ServerInfo.server_ctx)
5037 michael 913 #endif
5038     {
5039     yyerror("SSL not available - port closed");
5040     break;
5041     }
5042    
5043     for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
5044     add_listener(i, listener_address, listener_flags);
5045     }
5046     }
5047     break;
5048    
5049 michael 1076 case 250:
5050 michael 967
5051 michael 1089 /* Line 1464 of yacc.c */
5052 michael 1118 #line 1628 "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 251:
5063 michael 967
5064 michael 1089 /* Line 1464 of yacc.c */
5065 michael 1118 #line 1637 "ircd_parser.y"
5066 michael 913 {
5067 michael 967 if (conf_parser_ctx.pass == 2)
5068 michael 913 {
5069     MyFree(listener_address);
5070     DupString(listener_address, yylval.string);
5071     }
5072     }
5073     break;
5074    
5075 michael 1076 case 252:
5076 michael 967
5077 michael 1089 /* Line 1464 of yacc.c */
5078 michael 1118 #line 1649 "ircd_parser.y"
5079 michael 913 {
5080 michael 967 if (conf_parser_ctx.pass == 2)
5081 michael 913 {
5082     yy_conf = make_conf_item(CLIENT_TYPE);
5083     yy_aconf = map_to_conf(yy_conf);
5084     }
5085     else
5086     {
5087     MyFree(class_name);
5088     class_name = NULL;
5089     }
5090     }
5091     break;
5092    
5093 michael 1076 case 253:
5094 michael 967
5095 michael 1089 /* Line 1464 of yacc.c */
5096 michael 1118 #line 1661 "ircd_parser.y"
5097 michael 913 {
5098 michael 967 if (conf_parser_ctx.pass == 2)
5099 michael 913 {
5100     struct CollectItem *yy_tmp = NULL;
5101     dlink_node *ptr = NULL, *next_ptr = NULL;
5102    
5103     if (yy_aconf->user && yy_aconf->host)
5104     {
5105     conf_add_class_to_conf(yy_conf, class_name);
5106     add_conf_by_address(CONF_CLIENT, yy_aconf);
5107     }
5108     else
5109     delete_conf_item(yy_conf);
5110    
5111     /* copy over settings from first struct */
5112     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5113     {
5114     struct AccessItem *new_aconf;
5115     struct ConfItem *new_conf;
5116    
5117     new_conf = make_conf_item(CLIENT_TYPE);
5118     new_aconf = map_to_conf(new_conf);
5119    
5120     yy_tmp = ptr->data;
5121    
5122     assert(yy_tmp->user && yy_tmp->host);
5123    
5124     if (yy_aconf->passwd != NULL)
5125     DupString(new_aconf->passwd, yy_aconf->passwd);
5126     if (yy_conf->name != NULL)
5127     DupString(new_conf->name, yy_conf->name);
5128     if (yy_aconf->passwd != NULL)
5129     DupString(new_aconf->passwd, yy_aconf->passwd);
5130    
5131     new_aconf->flags = yy_aconf->flags;
5132     new_aconf->port = yy_aconf->port;
5133    
5134     DupString(new_aconf->user, yy_tmp->user);
5135     collapse(new_aconf->user);
5136    
5137     DupString(new_aconf->host, yy_tmp->host);
5138     collapse(new_aconf->host);
5139    
5140     conf_add_class_to_conf(new_conf, class_name);
5141     add_conf_by_address(CONF_CLIENT, new_aconf);
5142     dlinkDelete(&yy_tmp->node, &col_conf_list);
5143     free_collect_item(yy_tmp);
5144     }
5145    
5146     MyFree(class_name);
5147     class_name = NULL;
5148     yy_conf = NULL;
5149     yy_aconf = NULL;
5150     }
5151     }
5152     break;
5153    
5154 michael 1076 case 265:
5155 michael 967
5156 michael 1089 /* Line 1464 of yacc.c */
5157 michael 1118 #line 1723 "ircd_parser.y"
5158 michael 913 {
5159 michael 967 if (conf_parser_ctx.pass == 2)
5160 michael 913 {
5161     struct CollectItem *yy_tmp = NULL;
5162     struct split_nuh_item nuh;
5163    
5164     nuh.nuhmask = yylval.string;
5165     nuh.nickptr = NULL;
5166     nuh.userptr = userbuf;
5167     nuh.hostptr = hostbuf;
5168    
5169     nuh.nicksize = 0;
5170     nuh.usersize = sizeof(userbuf);
5171     nuh.hostsize = sizeof(hostbuf);
5172    
5173     split_nuh(&nuh);
5174    
5175     if (yy_aconf->user == NULL)
5176     {
5177     DupString(yy_aconf->user, userbuf);
5178     DupString(yy_aconf->host, hostbuf);
5179     }
5180     else
5181     {
5182     yy_tmp = MyMalloc(sizeof(struct CollectItem));
5183    
5184     DupString(yy_tmp->user, userbuf);
5185     DupString(yy_tmp->host, hostbuf);
5186    
5187     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5188     }
5189     }
5190     }
5191     break;
5192    
5193 michael 1076 case 266:
5194 michael 967
5195 michael 1089 /* Line 1464 of yacc.c */
5196 michael 1118 #line 1760 "ircd_parser.y"
5197 michael 913 {
5198 michael 967 if (conf_parser_ctx.pass == 2)
5199 michael 913 {
5200     /* be paranoid */
5201     if (yy_aconf->passwd != NULL)
5202     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5203    
5204     MyFree(yy_aconf->passwd);
5205     DupString(yy_aconf->passwd, yylval.string);
5206     }
5207     }
5208     break;
5209    
5210 michael 1076 case 267:
5211 michael 967
5212 michael 1089 /* Line 1464 of yacc.c */
5213 michael 1118 #line 1773 "ircd_parser.y"
5214 michael 913 {
5215 michael 967 if (conf_parser_ctx.pass == 2)
5216 michael 913 {
5217     MyFree(class_name);
5218     DupString(class_name, yylval.string);
5219     }
5220     }
5221     break;
5222    
5223 michael 1076 case 268:
5224 michael 967
5225 michael 1089 /* Line 1464 of yacc.c */
5226 michael 1118 #line 1782 "ircd_parser.y"
5227 michael 913 {
5228 michael 967 if (conf_parser_ctx.pass == 2)
5229 michael 913 {
5230     if (yylval.number)
5231     SetConfEncrypted(yy_aconf);
5232     else
5233     ClearConfEncrypted(yy_aconf);
5234     }
5235     }
5236     break;
5237    
5238 michael 1076 case 269:
5239 michael 967
5240 michael 1089 /* Line 1464 of yacc.c */
5241 michael 1118 #line 1793 "ircd_parser.y"
5242 michael 913 {
5243     }
5244     break;
5245    
5246 michael 1076 case 273:
5247 michael 967
5248 michael 1089 /* Line 1464 of yacc.c */
5249 michael 1118 #line 1797 "ircd_parser.y"
5250 michael 913 { not_atom = 1; }
5251     break;
5252    
5253 michael 1076 case 275:
5254 michael 967
5255 michael 1089 /* Line 1464 of yacc.c */
5256 michael 1118 #line 1798 "ircd_parser.y"
5257 michael 913 { not_atom = 0; }
5258     break;
5259    
5260 michael 1076 case 277:
5261 michael 967
5262 michael 1089 /* Line 1464 of yacc.c */
5263 michael 1118 #line 1801 "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_SPOOF_NOTICE;
5268     else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5269     }
5270     }
5271     break;
5272    
5273 michael 1076 case 278:
5274 michael 967
5275 michael 1089 /* Line 1464 of yacc.c */
5276 michael 1118 #line 1808 "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_NOLIMIT;
5281     else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5282     }
5283     }
5284     break;
5285    
5286 michael 1076 case 279:
5287 michael 967
5288 michael 1089 /* Line 1464 of yacc.c */
5289 michael 1118 #line 1815 "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_EXEMPTKLINE;
5294     else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5295     }
5296     }
5297     break;
5298    
5299 michael 1076 case 280:
5300 michael 967
5301 michael 1089 /* Line 1464 of yacc.c */
5302 michael 1118 #line 1822 "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_NEED_IDENTD;
5307     else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5308     }
5309     }
5310     break;
5311    
5312 michael 1076 case 281:
5313 michael 967
5314 michael 1089 /* Line 1464 of yacc.c */
5315 michael 1118 #line 1829 "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_CAN_FLOOD;
5320     else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5321     }
5322     }
5323     break;
5324    
5325 michael 1076 case 282:
5326 michael 967
5327 michael 1089 /* Line 1464 of yacc.c */
5328 michael 1118 #line 1836 "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_IDLE_LINED;
5333     else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
5334     }
5335     }
5336     break;
5337    
5338 michael 1076 case 283:
5339 michael 967
5340 michael 1089 /* Line 1464 of yacc.c */
5341 michael 1118 #line 1843 "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_NO_TILDE;
5346     else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5347     }
5348     }
5349     break;
5350    
5351 michael 1076 case 284:
5352 michael 967
5353 michael 1089 /* Line 1464 of yacc.c */
5354 michael 1118 #line 1850 "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_EXEMPTGLINE;
5359     else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5360     }
5361     }
5362     break;
5363    
5364 michael 1076 case 285:
5365 michael 967
5366 michael 1089 /* Line 1464 of yacc.c */
5367 michael 1118 #line 1857 "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_EXEMPTRESV;
5372     else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5373     }
5374     }
5375     break;
5376    
5377 michael 1076 case 286:
5378 michael 967
5379 michael 1089 /* Line 1464 of yacc.c */
5380 michael 1118 #line 1864 "ircd_parser.y"
5381 michael 913 {
5382 michael 967 if (conf_parser_ctx.pass == 2)
5383 michael 913 {
5384     if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5385     else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5386     }
5387     }
5388     break;
5389    
5390 michael 1076 case 287:
5391 michael 967
5392 michael 1089 /* Line 1464 of yacc.c */
5393 michael 1118 #line 1874 "ircd_parser.y"
5394 michael 913 {
5395 michael 967 if (conf_parser_ctx.pass == 2)
5396 michael 913 {
5397     MyFree(yy_conf->name);
5398    
5399     if (strlen(yylval.string) < HOSTLEN)
5400     {
5401     DupString(yy_conf->name, yylval.string);
5402     yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5403     }
5404     else
5405     {
5406     ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5407     yy_conf->name = NULL;
5408     }
5409     }
5410     }
5411     break;
5412    
5413 michael 1076 case 288:
5414 michael 967
5415 michael 1089 /* Line 1464 of yacc.c */
5416 michael 1118 #line 1893 "ircd_parser.y"
5417 michael 913 {
5418 michael 967 if (conf_parser_ctx.pass == 2)
5419 michael 913 {
5420     yy_aconf->flags |= CONF_FLAGS_REDIR;
5421     MyFree(yy_conf->name);
5422     DupString(yy_conf->name, yylval.string);
5423     }
5424     }
5425     break;
5426    
5427 michael 1076 case 289:
5428 michael 967
5429 michael 1089 /* Line 1464 of yacc.c */
5430 michael 1118 #line 1903 "ircd_parser.y"
5431 michael 913 {
5432 michael 967 if (conf_parser_ctx.pass == 2)
5433 michael 913 {
5434     yy_aconf->flags |= CONF_FLAGS_REDIR;
5435     yy_aconf->port = (yyvsp[(3) - (4)].number);
5436     }
5437     }
5438     break;
5439    
5440 michael 1076 case 290:
5441 michael 967
5442 michael 1089 /* Line 1464 of yacc.c */
5443 michael 1118 #line 1916 "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 291:
5454 michael 967
5455 michael 1089 /* Line 1464 of yacc.c */
5456 michael 1118 #line 1923 "ircd_parser.y"
5457 michael 913 {
5458 michael 967 if (conf_parser_ctx.pass == 2)
5459 michael 913 {
5460     MyFree(resv_reason);
5461     resv_reason = NULL;
5462     }
5463     }
5464     break;
5465    
5466 michael 1076 case 298:
5467 michael 967
5468 michael 1089 /* Line 1464 of yacc.c */
5469 michael 1118 #line 1935 "ircd_parser.y"
5470 michael 913 {
5471 michael 967 if (conf_parser_ctx.pass == 2)
5472 michael 913 {
5473     MyFree(resv_reason);
5474     DupString(resv_reason, yylval.string);
5475     }
5476     }
5477     break;
5478    
5479 michael 1076 case 299:
5480 michael 967
5481 michael 1089 /* Line 1464 of yacc.c */
5482 michael 1118 #line 1944 "ircd_parser.y"
5483 michael 913 {
5484 michael 967 if (conf_parser_ctx.pass == 2)
5485 michael 913 {
5486     if (IsChanPrefix(*yylval.string))
5487     {
5488     char def_reason[] = "No reason";
5489    
5490     create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5491     }
5492     }
5493     /* ignore it for now.. but we really should make a warning if
5494     * its an erroneous name --fl_ */
5495     }
5496     break;
5497    
5498 michael 1076 case 300:
5499 michael 967
5500 michael 1089 /* Line 1464 of yacc.c */
5501 michael 1118 #line 1959 "ircd_parser.y"
5502 michael 913 {
5503 michael 967 if (conf_parser_ctx.pass == 2)
5504 michael 913 {
5505     char def_reason[] = "No reason";
5506    
5507     create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5508     }
5509     }
5510     break;
5511    
5512 michael 1076 case 301:
5513 michael 967
5514 michael 1089 /* Line 1464 of yacc.c */
5515 michael 1118 #line 1972 "ircd_parser.y"
5516 michael 913 {
5517 michael 967 if (conf_parser_ctx.pass == 2)
5518 michael 913 {
5519     yy_conf = make_conf_item(ULINE_TYPE);
5520     yy_match_item = map_to_conf(yy_conf);
5521     yy_match_item->action = SHARED_ALL;
5522     }
5523     }
5524     break;
5525    
5526 michael 1076 case 302:
5527 michael 967
5528 michael 1089 /* Line 1464 of yacc.c */
5529 michael 1118 #line 1980 "ircd_parser.y"
5530 michael 913 {
5531 michael 967 if (conf_parser_ctx.pass == 2)
5532 michael 913 {
5533     yy_conf = NULL;
5534     }
5535     }
5536     break;
5537    
5538 michael 1076 case 309:
5539 michael 967
5540 michael 1089 /* Line 1464 of yacc.c */
5541 michael 1118 #line 1991 "ircd_parser.y"
5542 michael 913 {
5543 michael 967 if (conf_parser_ctx.pass == 2)
5544 michael 913 {
5545     MyFree(yy_conf->name);
5546     DupString(yy_conf->name, yylval.string);
5547     }
5548     }
5549     break;
5550    
5551 michael 1076 case 310:
5552 michael 967
5553 michael 1089 /* Line 1464 of yacc.c */
5554 michael 1118 #line 2000 "ircd_parser.y"
5555 michael 913 {
5556 michael 967 if (conf_parser_ctx.pass == 2)
5557 michael 913 {
5558     struct split_nuh_item nuh;
5559    
5560     nuh.nuhmask = yylval.string;
5561     nuh.nickptr = NULL;
5562     nuh.userptr = userbuf;
5563     nuh.hostptr = hostbuf;
5564    
5565     nuh.nicksize = 0;
5566     nuh.usersize = sizeof(userbuf);
5567     nuh.hostsize = sizeof(hostbuf);
5568    
5569     split_nuh(&nuh);
5570    
5571     DupString(yy_match_item->user, userbuf);
5572     DupString(yy_match_item->host, hostbuf);
5573     }
5574     }
5575     break;
5576    
5577 michael 1076 case 311:
5578 michael 967
5579 michael 1089 /* Line 1464 of yacc.c */
5580 michael 1118 #line 2022 "ircd_parser.y"
5581 michael 913 {
5582 michael 967 if (conf_parser_ctx.pass == 2)
5583 michael 913 yy_match_item->action = 0;
5584     }
5585     break;
5586    
5587 michael 1076 case 315:
5588 michael 967
5589 michael 1089 /* Line 1464 of yacc.c */
5590 michael 1118 #line 2029 "ircd_parser.y"
5591 michael 913 {
5592 michael 967 if (conf_parser_ctx.pass == 2)
5593 michael 913 yy_match_item->action |= SHARED_KLINE;
5594     }
5595     break;
5596    
5597 michael 1076 case 316:
5598 michael 967
5599 michael 1089 /* Line 1464 of yacc.c */
5600 michael 1118 #line 2033 "ircd_parser.y"
5601 michael 913 {
5602 michael 967 if (conf_parser_ctx.pass == 2)
5603 michael 913 yy_match_item->action |= SHARED_TKLINE;
5604     }
5605     break;
5606    
5607 michael 1076 case 317:
5608 michael 967
5609 michael 1089 /* Line 1464 of yacc.c */
5610 michael 1118 #line 2037 "ircd_parser.y"
5611 michael 913 {
5612 michael 967 if (conf_parser_ctx.pass == 2)
5613 michael 913 yy_match_item->action |= SHARED_UNKLINE;
5614     }
5615     break;
5616    
5617 michael 1076 case 318:
5618 michael 967
5619 michael 1089 /* Line 1464 of yacc.c */
5620 michael 1118 #line 2041 "ircd_parser.y"
5621 michael 913 {
5622 michael 967 if (conf_parser_ctx.pass == 2)
5623 michael 913 yy_match_item->action |= SHARED_XLINE;
5624     }
5625     break;
5626    
5627 michael 1076 case 319:
5628 michael 967
5629 michael 1089 /* Line 1464 of yacc.c */
5630 michael 1118 #line 2045 "ircd_parser.y"
5631 michael 913 {
5632 michael 967 if (conf_parser_ctx.pass == 2)
5633 michael 913 yy_match_item->action |= SHARED_TXLINE;
5634     }
5635     break;
5636    
5637 michael 1076 case 320:
5638 michael 967
5639 michael 1089 /* Line 1464 of yacc.c */
5640 michael 1118 #line 2049 "ircd_parser.y"
5641 michael 913 {
5642 michael 967 if (conf_parser_ctx.pass == 2)
5643 michael 913 yy_match_item->action |= SHARED_UNXLINE;
5644     }
5645     break;
5646    
5647 michael 1076 case 321:
5648 michael 967
5649 michael 1089 /* Line 1464 of yacc.c */
5650 michael 1118 #line 2053 "ircd_parser.y"
5651 michael 913 {
5652 michael 967 if (conf_parser_ctx.pass == 2)
5653 michael 913 yy_match_item->action |= SHARED_RESV;
5654     }
5655     break;
5656    
5657 michael 1076 case 322:
5658 michael 967
5659 michael 1089 /* Line 1464 of yacc.c */
5660 michael 1118 #line 2057 "ircd_parser.y"
5661 michael 913 {
5662 michael 967 if (conf_parser_ctx.pass == 2)
5663 michael 913 yy_match_item->action |= SHARED_TRESV;
5664     }
5665     break;
5666    
5667 michael 1076 case 323:
5668 michael 967
5669 michael 1089 /* Line 1464 of yacc.c */
5670 michael 1118 #line 2061 "ircd_parser.y"
5671 michael 913 {
5672 michael 967 if (conf_parser_ctx.pass == 2)
5673 michael 913 yy_match_item->action |= SHARED_UNRESV;
5674     }
5675     break;
5676    
5677 michael 1076 case 324:
5678 michael 967
5679 michael 1089 /* Line 1464 of yacc.c */
5680 michael 1118 #line 2065 "ircd_parser.y"
5681 michael 913 {
5682 michael 967 if (conf_parser_ctx.pass == 2)
5683 michael 913 yy_match_item->action |= SHARED_LOCOPS;
5684     }
5685     break;
5686    
5687 michael 1076 case 325:
5688 michael 967
5689 michael 1089 /* Line 1464 of yacc.c */
5690 michael 1118 #line 2069 "ircd_parser.y"
5691 michael 913 {
5692 michael 967 if (conf_parser_ctx.pass == 2)
5693 michael 913 yy_match_item->action = SHARED_ALL;
5694     }
5695     break;
5696    
5697 michael 1076 case 326:
5698 michael 967
5699 michael 1089 /* Line 1464 of yacc.c */
5700 michael 1118 #line 2078 "ircd_parser.y"
5701 michael 913 {
5702 michael 967 if (conf_parser_ctx.pass == 2)
5703 michael 913 {
5704     yy_conf = make_conf_item(CLUSTER_TYPE);
5705     yy_conf->flags = SHARED_ALL;
5706     }
5707     }
5708     break;
5709    
5710 michael 1076 case 327:
5711 michael 967
5712 michael 1089 /* Line 1464 of yacc.c */
5713 michael 1118 #line 2085 "ircd_parser.y"
5714 michael 913 {
5715 michael 967 if (conf_parser_ctx.pass == 2)
5716 michael 913 {
5717     if (yy_conf->name == NULL)
5718     DupString(yy_conf->name, "*");
5719     yy_conf = NULL;
5720     }
5721     }
5722     break;
5723    
5724 michael 1076 case 333:
5725 michael 967
5726 michael 1089 /* Line 1464 of yacc.c */
5727 michael 1118 #line 2098 "ircd_parser.y"
5728 michael 913 {
5729 michael 967 if (conf_parser_ctx.pass == 2)
5730 michael 913 DupString(yy_conf->name, yylval.string);
5731     }
5732     break;
5733    
5734 michael 1076 case 334:
5735 michael 967
5736 michael 1089 /* Line 1464 of yacc.c */
5737 michael 1118 #line 2104 "ircd_parser.y"
5738 michael 913 {
5739 michael 967 if (conf_parser_ctx.pass == 2)
5740 michael 913 yy_conf->flags = 0;
5741     }
5742     break;
5743    
5744 michael 1076 case 338:
5745 michael 967
5746 michael 1089 /* Line 1464 of yacc.c */
5747 michael 1118 #line 2111 "ircd_parser.y"
5748 michael 913 {
5749 michael 967 if (conf_parser_ctx.pass == 2)
5750 michael 913 yy_conf->flags |= SHARED_KLINE;
5751     }
5752     break;
5753    
5754 michael 1076 case 339:
5755 michael 967
5756 michael 1089 /* Line 1464 of yacc.c */
5757 michael 1118 #line 2115 "ircd_parser.y"
5758 michael 913 {
5759 michael 967 if (conf_parser_ctx.pass == 2)
5760 michael 913 yy_conf->flags |= SHARED_TKLINE;
5761     }
5762     break;
5763    
5764 michael 1076 case 340:
5765 michael 967
5766 michael 1089 /* Line 1464 of yacc.c */
5767 michael 1118 #line 2119 "ircd_parser.y"
5768 michael 913 {
5769 michael 967 if (conf_parser_ctx.pass == 2)
5770 michael 913 yy_conf->flags |= SHARED_UNKLINE;
5771     }
5772     break;
5773    
5774 michael 1076 case 341:
5775 michael 967
5776 michael 1089 /* Line 1464 of yacc.c */
5777 michael 1118 #line 2123 "ircd_parser.y"
5778 michael 913 {
5779 michael 967 if (conf_parser_ctx.pass == 2)
5780 michael 913 yy_conf->flags |= SHARED_XLINE;
5781     }
5782     break;
5783    
5784 michael 1076 case 342:
5785 michael 967
5786 michael 1089 /* Line 1464 of yacc.c */
5787 michael 1118 #line 2127 "ircd_parser.y"
5788 michael 913 {
5789 michael 967 if (conf_parser_ctx.pass == 2)
5790 michael 913 yy_conf->flags |= SHARED_TXLINE;
5791     }
5792     break;
5793    
5794 michael 1076 case 343:
5795 michael 967
5796 michael 1089 /* Line 1464 of yacc.c */
5797 michael 1118 #line 2131 "ircd_parser.y"
5798 michael 913 {
5799 michael 967 if (conf_parser_ctx.pass == 2)
5800 michael 913 yy_conf->flags |= SHARED_UNXLINE;
5801     }
5802     break;
5803    
5804 michael 1076 case 344:
5805 michael 967
5806 michael 1089 /* Line 1464 of yacc.c */
5807 michael 1118 #line 2135 "ircd_parser.y"
5808 michael 913 {
5809 michael 967 if (conf_parser_ctx.pass == 2)
5810 michael 913 yy_conf->flags |= SHARED_RESV;
5811     }
5812     break;
5813    
5814 michael 1076 case 345:
5815 michael 967
5816 michael 1089 /* Line 1464 of yacc.c */
5817 michael 1118 #line 2139 "ircd_parser.y"
5818 michael 913 {
5819 michael 967 if (conf_parser_ctx.pass == 2)
5820 michael 913 yy_conf->flags |= SHARED_TRESV;
5821     }
5822     break;
5823    
5824 michael 1076 case 346:
5825 michael 967
5826 michael 1089 /* Line 1464 of yacc.c */
5827 michael 1118 #line 2143 "ircd_parser.y"
5828 michael 913 {
5829 michael 967 if (conf_parser_ctx.pass == 2)
5830 michael 913 yy_conf->flags |= SHARED_UNRESV;
5831     }
5832     break;
5833    
5834 michael 1076 case 347:
5835 michael 967
5836 michael 1089 /* Line 1464 of yacc.c */
5837 michael 1118 #line 2147 "ircd_parser.y"
5838 michael 913 {
5839 michael 967 if (conf_parser_ctx.pass == 2)
5840 michael 913 yy_conf->flags |= SHARED_LOCOPS;
5841     }
5842     break;
5843    
5844 michael 1076 case 348:
5845 michael 967
5846 michael 1089 /* Line 1464 of yacc.c */
5847 michael 1118 #line 2151 "ircd_parser.y"
5848 michael 913 {
5849 michael 967 if (conf_parser_ctx.pass == 2)
5850 michael 913 yy_conf->flags = SHARED_ALL;
5851     }
5852     break;
5853    
5854 michael 1076 case 349:
5855 michael 967
5856 michael 1089 /* Line 1464 of yacc.c */
5857 michael 1118 #line 2160 "ircd_parser.y"
5858 michael 913 {
5859 michael 967 if (conf_parser_ctx.pass == 2)
5860 michael 913 {
5861     yy_conf = make_conf_item(SERVER_TYPE);
5862     yy_aconf = (struct AccessItem *)map_to_conf(yy_conf);
5863     yy_aconf->passwd = NULL;
5864     /* defaults */
5865     yy_aconf->port = PORTNUM;
5866    
5867     if (ConfigFileEntry.burst_away)
5868     yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
5869     }
5870     else
5871     {
5872     MyFree(class_name);
5873     class_name = NULL;
5874     }
5875     }
5876     break;
5877    
5878 michael 1076 case 350:
5879 michael 967
5880 michael 1089 /* Line 1464 of yacc.c */
5881 michael 1118 #line 2178 "ircd_parser.y"
5882 michael 913 {
5883 michael 967 if (conf_parser_ctx.pass == 2)
5884 michael 913 {
5885     struct CollectItem *yy_hconf=NULL;
5886     struct CollectItem *yy_lconf=NULL;
5887     dlink_node *ptr;
5888     dlink_node *next_ptr;
5889     #ifdef HAVE_LIBCRYPTO
5890     if (yy_aconf->host &&
5891     ((yy_aconf->passwd && yy_aconf->spasswd) ||
5892     (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
5893     #else /* !HAVE_LIBCRYPTO */
5894     if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
5895     yy_aconf->passwd && yy_aconf->spasswd)
5896     #endif /* !HAVE_LIBCRYPTO */
5897     {
5898     if (conf_add_server(yy_conf, class_name) == -1)
5899     {
5900     delete_conf_item(yy_conf);
5901     yy_conf = NULL;
5902     yy_aconf = NULL;
5903     }
5904     }
5905     else
5906     {
5907     /* Even if yy_conf ->name is NULL
5908     * should still unhook any hub/leaf confs still pending
5909     */
5910     unhook_hub_leaf_confs();
5911    
5912     if (yy_conf->name != NULL)
5913     {
5914     #ifndef HAVE_LIBCRYPTO
5915     if (IsConfCryptLink(yy_aconf))
5916     yyerror("Ignoring connect block -- no OpenSSL support");
5917     #else
5918     if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
5919     yyerror("Ignoring connect block -- missing key");
5920     #endif
5921     if (yy_aconf->host == NULL)
5922     yyerror("Ignoring connect block -- missing host");
5923     else if (!IsConfCryptLink(yy_aconf) &&
5924     (!yy_aconf->passwd || !yy_aconf->spasswd))
5925     yyerror("Ignoring connect block -- missing password");
5926     }
5927    
5928    
5929     /* XXX
5930     * This fixes a try_connections() core (caused by invalid class_ptr
5931     * pointers) reported by metalrock. That's an ugly fix, but there
5932     * is currently no better way. The entire config subsystem needs an
5933     * rewrite ASAP. make_conf_item() shouldn't really add things onto
5934     * a doubly linked list immediately without any sanity checks! -Michael
5935     */
5936     delete_conf_item(yy_conf);
5937    
5938     yy_aconf = NULL;
5939     yy_conf = NULL;
5940     }
5941    
5942     /*
5943     * yy_conf is still pointing at the server that is having
5944     * a connect block built for it. This means, y_aconf->name
5945     * points to the actual irc name this server will be known as.
5946     * Now this new server has a set or even just one hub_mask (or leaf_mask)
5947     * given in the link list at yy_hconf. Fill in the HUB confs
5948     * from this link list now.
5949     */
5950     DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
5951     {
5952     struct ConfItem *new_hub_conf;
5953     struct MatchItem *match_item;
5954    
5955     yy_hconf = ptr->data;
5956    
5957     /* yy_conf == NULL is a fatal error for this connect block! */
5958     if ((yy_conf != NULL) && (yy_conf->name != NULL))
5959     {
5960     new_hub_conf = make_conf_item(HUB_TYPE);
5961     match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
5962     DupString(new_hub_conf->name, yy_conf->name);
5963     if (yy_hconf->user != NULL)
5964     DupString(match_item->user, yy_hconf->user);
5965     else
5966     DupString(match_item->user, "*");
5967     if (yy_hconf->host != NULL)
5968     DupString(match_item->host, yy_hconf->host);
5969     else
5970     DupString(match_item->host, "*");
5971     }
5972     dlinkDelete(&yy_hconf->node, &hub_conf_list);
5973     free_collect_item(yy_hconf);
5974     }
5975    
5976     /* Ditto for the LEAF confs */
5977    
5978     DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
5979     {
5980     struct ConfItem *new_leaf_conf;
5981     struct MatchItem *match_item;
5982    
5983     yy_lconf = ptr->data;
5984    
5985     if ((yy_conf != NULL) && (yy_conf->name != NULL))
5986     {
5987     new_leaf_conf = make_conf_item(LEAF_TYPE);
5988     match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
5989     DupString(new_leaf_conf->name, yy_conf->name);
5990     if (yy_lconf->user != NULL)
5991     DupString(match_item->user, yy_lconf->user);
5992     else
5993     DupString(match_item->user, "*");
5994     if (yy_lconf->host != NULL)
5995     DupString(match_item->host, yy_lconf->host);
5996     else
5997     DupString(match_item->host, "*");
5998     }
5999     dlinkDelete(&yy_lconf->node, &leaf_conf_list);
6000     free_collect_item(yy_lconf);
6001     }
6002     MyFree(class_name);
6003     class_name = NULL;
6004     yy_conf = NULL;
6005     yy_aconf = NULL;
6006     }
6007     }
6008     break;
6009    
6010 michael 1118 case 370:
6011 michael 967
6012 michael 1089 /* Line 1464 of yacc.c */
6013 michael 1118 #line 2316 "ircd_parser.y"
6014 michael 913 {
6015 michael 967 if (conf_parser_ctx.pass == 2)
6016 michael 913 {
6017     if (yy_conf->name != NULL)
6018     yyerror("Multiple connect name entry");
6019    
6020     MyFree(yy_conf->name);
6021     DupString(yy_conf->name, yylval.string);
6022     }
6023     }
6024     break;
6025    
6026 michael 1118 case 371:
6027 michael 967
6028 michael 1089 /* Line 1464 of yacc.c */
6029 michael 1118 #line 2328 "ircd_parser.y"
6030 michael 913 {
6031 michael 967 if (conf_parser_ctx.pass == 2)
6032 michael 913 {
6033     if (yy_conf->name != NULL)
6034     yyerror("Multiple connect name entry");
6035    
6036     MyFree(yy_conf->name);
6037     DupString(yy_conf->name, yylval.string);
6038     }
6039     }
6040     break;
6041    
6042 michael 1118 case 372:
6043 michael 967
6044 michael 1089 /* Line 1464 of yacc.c */
6045 michael 1118 #line 2340 "ircd_parser.y"
6046 michael 913 {
6047 michael 967 if (conf_parser_ctx.pass == 2)
6048 michael 913 {
6049     MyFree(yy_aconf->host);
6050     DupString(yy_aconf->host, yylval.string);
6051     }
6052     }
6053     break;
6054    
6055 michael 1118 case 373:
6056 michael 967
6057 michael 1089 /* Line 1464 of yacc.c */
6058 michael 1118 #line 2349 "ircd_parser.y"
6059 michael 913 {
6060 michael 967 if (conf_parser_ctx.pass == 2)
6061 michael 913 {
6062     struct addrinfo hints, *res;
6063    
6064     memset(&hints, 0, sizeof(hints));
6065    
6066     hints.ai_family = AF_UNSPEC;
6067     hints.ai_socktype = SOCK_STREAM;
6068     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
6069    
6070     if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
6071     ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
6072     else
6073     {
6074     assert(res != NULL);
6075    
6076     memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
6077     yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
6078     yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
6079     irc_freeaddrinfo(res);
6080     }
6081     }
6082     }
6083     break;
6084    
6085 michael 1118 case 374:
6086 michael 967
6087 michael 1089 /* Line 1464 of yacc.c */
6088 michael 1118 #line 2375 "ircd_parser.y"
6089 michael 913 {
6090 michael 967 if (conf_parser_ctx.pass == 2)
6091 michael 913 {
6092     if ((yyvsp[(3) - (4)].string)[0] == ':')
6093     yyerror("Server passwords cannot begin with a colon");
6094     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6095     yyerror("Server passwords cannot contain spaces");
6096     else {
6097     if (yy_aconf->spasswd != NULL)
6098     memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
6099    
6100     MyFree(yy_aconf->spasswd);
6101     DupString(yy_aconf->spasswd, yylval.string);
6102     }
6103     }
6104     }
6105     break;
6106    
6107 michael 1118 case 375:
6108 michael 967
6109 michael 1089 /* Line 1464 of yacc.c */
6110 michael 1118 #line 2393 "ircd_parser.y"
6111 michael 913 {
6112 michael 967 if (conf_parser_ctx.pass == 2)
6113 michael 913 {
6114     if ((yyvsp[(3) - (4)].string)[0] == ':')
6115     yyerror("Server passwords cannot begin with a colon");
6116     else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6117     yyerror("Server passwords cannot contain spaces");
6118     else {
6119     if (yy_aconf->passwd != NULL)
6120     memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
6121    
6122     MyFree(yy_aconf->passwd);
6123     DupString(yy_aconf->passwd, yylval.string);
6124     }
6125     }
6126     }
6127     break;
6128    
6129 michael 1118 case 376:
6130 michael 967
6131 michael 1089 /* Line 1464 of yacc.c */
6132 michael 1118 #line 2411 "ircd_parser.y"
6133 michael 913 {
6134 michael 967 if (conf_parser_ctx.pass == 2)
6135 michael 913 yy_aconf->port = (yyvsp[(3) - (4)].number);
6136     }
6137     break;
6138    
6139 michael 1118 case 377:
6140 michael 967
6141 michael 1089 /* Line 1464 of yacc.c */
6142 michael 1118 #line 2417 "ircd_parser.y"
6143 michael 913 {
6144 michael 967 if (conf_parser_ctx.pass == 2)
6145 michael 913 yy_aconf->aftype = AF_INET;
6146     }
6147     break;
6148    
6149 michael 1118 case 378:
6150 michael 967
6151 michael 1089 /* Line 1464 of yacc.c */
6152 michael 1118 #line 2421 "ircd_parser.y"
6153 michael 913 {
6154     #ifdef IPV6
6155 michael 967 if (conf_parser_ctx.pass == 2)
6156 michael 913 yy_aconf->aftype = AF_INET6;
6157     #endif
6158     }
6159     break;
6160    
6161 michael 1118 case 379:
6162 michael 967
6163 michael 1089 /* Line 1464 of yacc.c */
6164 michael 1118 #line 2429 "ircd_parser.y"
6165 michael 913 {
6166     }
6167     break;
6168    
6169 michael 1118 case 383:
6170 michael 967
6171 michael 1089 /* Line 1464 of yacc.c */
6172 michael 1118 #line 2433 "ircd_parser.y"
6173     { not_atom = 1; }
6174 michael 913 break;
6175    
6176 michael 1076 case 385:
6177 michael 967
6178 michael 1089 /* Line 1464 of yacc.c */
6179 michael 1118 #line 2434 "ircd_parser.y"
6180     { not_atom = 0; }
6181 michael 913 break;
6182    
6183 michael 1076 case 387:
6184 michael 967
6185 michael 1089 /* Line 1464 of yacc.c */
6186 michael 1118 #line 2437 "ircd_parser.y"
6187 michael 913 {
6188 michael 967 if (conf_parser_ctx.pass == 2)
6189 michael 913 #ifndef HAVE_LIBZ
6190     yyerror("Ignoring flags = compressed; -- no zlib support");
6191     #else
6192     {
6193     if (not_atom)ClearConfCompressed(yy_aconf);
6194     else SetConfCompressed(yy_aconf);
6195     }
6196     #endif
6197     }
6198     break;
6199    
6200 michael 1118 case 388:
6201 michael 967
6202 michael 1089 /* Line 1464 of yacc.c */
6203 michael 1118 #line 2448 "ircd_parser.y"
6204 michael 913 {
6205 michael 967 if (conf_parser_ctx.pass == 2)
6206 michael 913 {
6207     if (not_atom)ClearConfCryptLink(yy_aconf);
6208     else SetConfCryptLink(yy_aconf);
6209     }
6210     }
6211     break;
6212    
6213 michael 1118 case 389:
6214 michael 967
6215 michael 1089 /* Line 1464 of yacc.c */
6216 michael 1118 #line 2455 "ircd_parser.y"
6217 michael 913 {
6218 michael 967 if (conf_parser_ctx.pass == 2)
6219 michael 913 {
6220     if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6221     else SetConfAllowAutoConn(yy_aconf);
6222     }
6223     }
6224     break;
6225    
6226 michael 1118 case 390:
6227 michael 967
6228 michael 1089 /* Line 1464 of yacc.c */
6229 michael 1118 #line 2462 "ircd_parser.y"
6230 michael 913 {
6231 michael 967 if (conf_parser_ctx.pass == 2)
6232 michael 913 {
6233     if (not_atom)ClearConfAwayBurst(yy_aconf);
6234     else SetConfAwayBurst(yy_aconf);
6235     }
6236     }
6237     break;
6238    
6239 michael 1118 case 391:
6240 michael 967
6241 michael 1089 /* Line 1464 of yacc.c */
6242 michael 1118 #line 2469 "ircd_parser.y"
6243 michael 913 {
6244 michael 967 if (conf_parser_ctx.pass == 2)
6245 michael 913 {
6246     if (not_atom)ClearConfTopicBurst(yy_aconf);
6247     else SetConfTopicBurst(yy_aconf);
6248     }
6249     }
6250     break;
6251    
6252 michael 1118 case 392:
6253 michael 967
6254 michael 1089 /* Line 1464 of yacc.c */
6255 michael 1118 #line 2479 "ircd_parser.y"
6256 michael 913 {
6257     #ifdef HAVE_LIBCRYPTO
6258 michael 967 if (conf_parser_ctx.pass == 2)
6259 michael 913 {
6260     BIO *file;
6261    
6262     if (yy_aconf->rsa_public_key != NULL)
6263     {
6264     RSA_free(yy_aconf->rsa_public_key);
6265     yy_aconf->rsa_public_key = NULL;
6266     }
6267    
6268     if (yy_aconf->rsa_public_key_file != NULL)
6269     {
6270     MyFree(yy_aconf->rsa_public_key_file);
6271     yy_aconf->rsa_public_key_file = NULL;
6272     }
6273    
6274     DupString(yy_aconf->rsa_public_key_file, yylval.string);
6275    
6276     if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6277     {
6278     yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6279     break;
6280     }
6281    
6282     yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
6283    
6284     if (yy_aconf->rsa_public_key == NULL)
6285     {
6286     yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
6287     break;
6288     }
6289    
6290     BIO_set_close(file, BIO_CLOSE);
6291     BIO_free(file);
6292     }
6293     #endif /* HAVE_LIBCRYPTO */
6294     }
6295     break;
6296    
6297 michael 1118 case 393:
6298 michael 967
6299 michael 1089 /* Line 1464 of yacc.c */
6300 michael 1118 #line 2520 "ircd_parser.y"
6301 michael 913 {
6302 michael 967 if (conf_parser_ctx.pass == 2)
6303 michael 913 {
6304     if (yylval.number)
6305     yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6306     else
6307     yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6308     }
6309     }
6310     break;
6311    
6312 michael 1118 case 394:
6313 michael 967
6314 michael 1089 /* Line 1464 of yacc.c */
6315 michael 1118 #line 2531 "ircd_parser.y"
6316 michael 913 {
6317 michael 967 if (conf_parser_ctx.pass == 2)
6318 michael 913 {
6319     struct CollectItem *yy_tmp;
6320    
6321     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6322     DupString(yy_tmp->host, yylval.string);
6323     DupString(yy_tmp->user, "*");
6324     dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6325     }
6326     }
6327     break;
6328    
6329 michael 1118 case 395:
6330 michael 967
6331 michael 1089 /* Line 1464 of yacc.c */
6332 michael 1118 #line 2544 "ircd_parser.y"
6333 michael 913 {
6334 michael 967 if (conf_parser_ctx.pass == 2)
6335 michael 913 {
6336     struct CollectItem *yy_tmp;
6337    
6338     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6339     DupString(yy_tmp->host, yylval.string);
6340     DupString(yy_tmp->user, "*");
6341     dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6342     }
6343     }
6344     break;
6345    
6346 michael 1118 case 396:
6347 michael 967
6348 michael 1089 /* Line 1464 of yacc.c */
6349 michael 1118 #line 2557 "ircd_parser.y"
6350 michael 913 {
6351 michael 967 if (conf_parser_ctx.pass == 2)
6352 michael 913 {
6353     MyFree(class_name);
6354     DupString(class_name, yylval.string);
6355     }
6356     }
6357     break;
6358    
6359 michael 1118 case 397:
6360 michael 967
6361 michael 1089 /* Line 1464 of yacc.c */
6362 michael 1118 #line 2566 "ircd_parser.y"
6363 michael 913 {
6364     #ifdef HAVE_LIBCRYPTO
6365 michael 967 if (conf_parser_ctx.pass == 2)
6366 michael 913 {
6367     struct EncCapability *ecap;
6368     const char *cipher_name;
6369     int found = 0;
6370    
6371     yy_aconf->cipher_preference = NULL;
6372     cipher_name = yylval.string;
6373    
6374     for (ecap = CipherTable; ecap->name; ecap++)
6375     {
6376     if ((irccmp(ecap->name, cipher_name) == 0) &&
6377     (ecap->cap & CAP_ENC_MASK))
6378     {
6379     yy_aconf->cipher_preference = ecap;
6380     found = 1;
6381     break;
6382     }
6383     }
6384    
6385     if (!found)
6386     yyerror("Invalid cipher");
6387     }
6388     #else
6389 michael 967 if (conf_parser_ctx.pass == 2)
6390 michael 913 yyerror("Ignoring cipher_preference -- no OpenSSL support");
6391     #endif
6392     }
6393     break;
6394    
6395 michael 1118 case 398:
6396 michael 967
6397 michael 1089 /* Line 1464 of yacc.c */
6398 michael 1118 #line 2601 "ircd_parser.y"
6399 michael 913 {
6400 michael 967 if (conf_parser_ctx.pass == 2)
6401 michael 913 {
6402     userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6403     regex_ban = 0;
6404     }
6405     }
6406     break;
6407    
6408 michael 1118 case 399:
6409 michael 967
6410 michael 1089 /* Line 1464 of yacc.c */
6411 michael 1118 #line 2608 "ircd_parser.y"
6412 michael 913 {
6413 michael 967 if (conf_parser_ctx.pass == 2)
6414 michael 913 {
6415     if (userbuf[0] && hostbuf[0])
6416     {
6417     if (regex_ban)
6418     {
6419 michael 1009 #ifdef HAVE_LIBPCRE
6420 michael 1011 void *exp_user = NULL;
6421     void *exp_host = NULL;
6422 michael 913 const char *errptr = NULL;
6423    
6424     if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6425     !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6426     {
6427     ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6428     errptr);
6429     break;
6430     }
6431    
6432 michael 1005 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6433 michael 913 yy_aconf->regexuser = exp_user;
6434     yy_aconf->regexhost = exp_host;
6435    
6436     DupString(yy_aconf->user, userbuf);
6437     DupString(yy_aconf->host, hostbuf);
6438    
6439     if (reasonbuf[0])
6440     DupString(yy_aconf->reason, reasonbuf);
6441     else
6442     DupString(yy_aconf->reason, "No reason");
6443 michael 1009 #else
6444     ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6445     break;
6446     #endif
6447 michael 913 }
6448     else
6449     {
6450 michael 1005 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6451 michael 913
6452     DupString(yy_aconf->user, userbuf);
6453     DupString(yy_aconf->host, hostbuf);
6454    
6455     if (reasonbuf[0])
6456     DupString(yy_aconf->reason, reasonbuf);
6457     else
6458     DupString(yy_aconf->reason, "No reason");
6459     add_conf_by_address(CONF_KILL, yy_aconf);
6460     }
6461     }
6462    
6463     yy_aconf = NULL;
6464     }
6465     }
6466     break;
6467    
6468 michael 1118 case 400:
6469 michael 967
6470 michael 1089 /* Line 1464 of yacc.c */
6471 michael 1118 #line 2664 "ircd_parser.y"
6472 michael 913 {
6473     }
6474     break;
6475    
6476 michael 1118 case 404:
6477 michael 967
6478 michael 1089 /* Line 1464 of yacc.c */
6479 michael 1118 #line 2669 "ircd_parser.y"
6480 michael 913 {
6481 michael 967 if (conf_parser_ctx.pass == 2)
6482 michael 913 regex_ban = 1;
6483     }
6484     break;
6485    
6486 michael 1118 case 411:
6487 michael 967
6488 michael 1089 /* Line 1464 of yacc.c */
6489 michael 1118 #line 2678 "ircd_parser.y"
6490 michael 913 {
6491 michael 967 if (conf_parser_ctx.pass == 2)
6492 michael 913 {
6493     struct split_nuh_item nuh;
6494    
6495     nuh.nuhmask = yylval.string;
6496     nuh.nickptr = NULL;
6497     nuh.userptr = userbuf;
6498     nuh.hostptr = hostbuf;
6499    
6500     nuh.nicksize = 0;
6501     nuh.usersize = sizeof(userbuf);
6502     nuh.hostsize = sizeof(hostbuf);
6503    
6504     split_nuh(&nuh);
6505     }
6506     }
6507     break;
6508    
6509 michael 1118 case 412:
6510 michael 967
6511 michael 1089 /* Line 1464 of yacc.c */
6512 michael 1118 #line 2697 "ircd_parser.y"
6513 michael 913 {
6514 michael 967 if (conf_parser_ctx.pass == 2)
6515 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6516     }
6517     break;
6518    
6519 michael 1118 case 413:
6520 michael 967
6521 michael 1089 /* Line 1464 of yacc.c */
6522 michael 1118 #line 2706 "ircd_parser.y"
6523 michael 913 {
6524 michael 967 if (conf_parser_ctx.pass == 2)
6525 michael 1005 hostbuf[0] = reasonbuf[0] = '\0';
6526 michael 913 }
6527     break;
6528    
6529 michael 1118 case 414:
6530 michael 967
6531 michael 1089 /* Line 1464 of yacc.c */
6532 michael 1118 #line 2710 "ircd_parser.y"
6533 michael 913 {
6534 michael 967 if (conf_parser_ctx.pass == 2)
6535 michael 913 {
6536 michael 1005 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
6537     {
6538     yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
6539     DupString(yy_aconf->host, hostbuf);
6540    
6541     if (reasonbuf[0])
6542     DupString(yy_aconf->reason, reasonbuf);
6543     else
6544     DupString(yy_aconf->reason, "No reason");
6545 michael 913 add_conf_by_address(CONF_DLINE, yy_aconf);
6546 michael 1005 yy_aconf = NULL;
6547     }
6548 michael 913 }
6549     }
6550     break;
6551    
6552 michael 1118 case 420:
6553 michael 967
6554 michael 1089 /* Line 1464 of yacc.c */
6555 michael 1118 #line 2732 "ircd_parser.y"
6556 michael 913 {
6557 michael 967 if (conf_parser_ctx.pass == 2)
6558 michael 1005 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
6559 michael 913 }
6560     break;
6561    
6562 michael 1118 case 421:
6563 michael 967
6564 michael 1089 /* Line 1464 of yacc.c */
6565 michael 1118 #line 2738 "ircd_parser.y"
6566 michael 913 {
6567 michael 967 if (conf_parser_ctx.pass == 2)
6568 michael 1005 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6569 michael 913 }
6570     break;
6571    
6572 michael 1118 case 427:
6573 michael 967
6574 michael 1089 /* Line 1464 of yacc.c */
6575 michael 1118 #line 2752 "ircd_parser.y"
6576 michael 913 {
6577 michael 967 if (conf_parser_ctx.pass == 2)
6578 michael 913 {
6579     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
6580     {
6581 michael 1005 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
6582 michael 913 DupString(yy_aconf->host, yylval.string);
6583    
6584     add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
6585     yy_aconf = NULL;
6586     }
6587     }
6588     }
6589     break;
6590    
6591 michael 1118 case 428:
6592 michael 967
6593 michael 1089 /* Line 1464 of yacc.c */
6594 michael 1118 #line 2770 "ircd_parser.y"
6595 michael 913 {
6596 michael 967 if (conf_parser_ctx.pass == 2)
6597 michael 913 {
6598     regex_ban = 0;
6599     reasonbuf[0] = gecos_name[0] = '\0';
6600     }
6601     }
6602     break;
6603    
6604 michael 1118 case 429:
6605 michael 967
6606 michael 1089 /* Line 1464 of yacc.c */
6607 michael 1118 #line 2777 "ircd_parser.y"
6608 michael 913 {
6609 michael 967 if (conf_parser_ctx.pass == 2)
6610 michael 913 {
6611     if (gecos_name[0])
6612     {
6613     if (regex_ban)
6614     {
6615 michael 1009 #ifdef HAVE_LIBPCRE
6616 michael 1011 void *exp_p = NULL;
6617 michael 913 const char *errptr = NULL;
6618    
6619     if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
6620     {
6621     ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
6622     errptr);
6623     break;
6624     }
6625    
6626     yy_conf = make_conf_item(RXLINE_TYPE);
6627     yy_conf->regexpname = exp_p;
6628 michael 1009 #else
6629     ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
6630     break;
6631     #endif
6632 michael 913 }
6633     else
6634     yy_conf = make_conf_item(XLINE_TYPE);
6635    
6636     yy_match_item = map_to_conf(yy_conf);
6637     DupString(yy_conf->name, gecos_name);
6638    
6639     if (reasonbuf[0])
6640     DupString(yy_match_item->reason, reasonbuf);
6641     else
6642     DupString(yy_match_item->reason, "No reason");
6643     }
6644     }
6645     }
6646     break;
6647    
6648 michael 1118 case 430:
6649 michael 967
6650 michael 1089 /* Line 1464 of yacc.c */
6651 michael 1118 #line 2817 "ircd_parser.y"
6652 michael 913 {
6653     }
6654     break;
6655    
6656 michael 1118 case 434:
6657 michael 967
6658 michael 1089 /* Line 1464 of yacc.c */
6659 michael 1118 #line 2822 "ircd_parser.y"
6660 michael 913 {
6661 michael 967 if (conf_parser_ctx.pass == 2)
6662 michael 913 regex_ban = 1;
6663     }
6664     break;
6665    
6666 michael 1118 case 441:
6667 michael 967
6668 michael 1089 /* Line 1464 of yacc.c */
6669 michael 1118 #line 2831 "ircd_parser.y"
6670 michael 913 {
6671 michael 967 if (conf_parser_ctx.pass == 2)
6672 michael 913 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
6673     }
6674     break;
6675    
6676 michael 1118 case 442:
6677 michael 967
6678 michael 1089 /* Line 1464 of yacc.c */
6679 michael 1118 #line 2837 "ircd_parser.y"
6680 michael 913 {
6681 michael 967 if (conf_parser_ctx.pass == 2)
6682 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6683     }
6684     break;
6685    
6686 michael 1118 case 502:
6687    
6688     /* Line 1464 of yacc.c */
6689     #line 2882 "ircd_parser.y"
6690     {
6691     ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
6692     }
6693     break;
6694    
6695     case 503:
6696    
6697     /* Line 1464 of yacc.c */
6698     #line 2887 "ircd_parser.y"
6699     {
6700     ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
6701     }
6702     break;
6703    
6704 michael 1076 case 504:
6705 michael 967
6706 michael 1089 /* Line 1464 of yacc.c */
6707 michael 1117 #line 2892 "ircd_parser.y"
6708 michael 913 {
6709 michael 1118 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
6710 michael 913 }
6711     break;
6712    
6713 michael 1076 case 505:
6714 michael 967
6715 michael 1089 /* Line 1464 of yacc.c */
6716 michael 1117 #line 2897 "ircd_parser.y"
6717 michael 913 {
6718 michael 1118 ConfigFileEntry.burst_away = yylval.number;
6719 michael 913 }
6720     break;
6721    
6722 michael 1076 case 506:
6723 michael 967
6724 michael 1089 /* Line 1464 of yacc.c */
6725 michael 1117 #line 2902 "ircd_parser.y"
6726 michael 913 {
6727 michael 1118 ConfigFileEntry.use_whois_actually = yylval.number;
6728 michael 913 }
6729     break;
6730    
6731 michael 1076 case 507:
6732 michael 967
6733 michael 1089 /* Line 1464 of yacc.c */
6734 michael 1117 #line 2907 "ircd_parser.y"
6735 michael 913 {
6736 michael 1118 GlobalSetOptions.rejecttime = yylval.number;
6737 michael 913 }
6738     break;
6739    
6740 michael 1076 case 508:
6741 michael 967
6742 michael 1089 /* Line 1464 of yacc.c */
6743 michael 1117 #line 2912 "ircd_parser.y"
6744 michael 913 {
6745 michael 1118 ConfigFileEntry.tkline_expire_notices = yylval.number;
6746 michael 913 }
6747     break;
6748    
6749 michael 1076 case 509:
6750 michael 967
6751 michael 1089 /* Line 1464 of yacc.c */
6752 michael 1117 #line 2917 "ircd_parser.y"
6753 michael 913 {
6754 michael 1118 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
6755 michael 913 }
6756     break;
6757    
6758 michael 1076 case 510:
6759 michael 967
6760 michael 1089 /* Line 1464 of yacc.c */
6761 michael 1117 #line 2922 "ircd_parser.y"
6762 michael 913 {
6763 michael 1118 ConfigFileEntry.hide_spoof_ips = yylval.number;
6764 michael 913 }
6765     break;
6766    
6767 michael 1076 case 511:
6768 michael 967
6769 michael 1089 /* Line 1464 of yacc.c */
6770 michael 1117 #line 2927 "ircd_parser.y"
6771 michael 913 {
6772 michael 1118 ConfigFileEntry.ignore_bogus_ts = yylval.number;
6773 michael 913 }
6774     break;
6775    
6776 michael 1076 case 512:
6777 michael 967
6778 michael 1089 /* Line 1464 of yacc.c */
6779 michael 1117 #line 2932 "ircd_parser.y"
6780 michael 913 {
6781 michael 1118 ConfigFileEntry.disable_remote = yylval.number;
6782 michael 913 }
6783     break;
6784    
6785 michael 1076 case 513:
6786 michael 967
6787 michael 1089 /* Line 1464 of yacc.c */
6788 michael 1117 #line 2937 "ircd_parser.y"
6789 michael 913 {
6790 michael 1118 ConfigFileEntry.failed_oper_notice = yylval.number;
6791 michael 913 }
6792     break;
6793    
6794 michael 1076 case 514:
6795 michael 967
6796 michael 1089 /* Line 1464 of yacc.c */
6797 michael 1117 #line 2942 "ircd_parser.y"
6798 michael 913 {
6799 michael 1118 ConfigFileEntry.anti_nick_flood = yylval.number;
6800 michael 913 }
6801     break;
6802    
6803 michael 1076 case 515:
6804 michael 967
6805 michael 1089 /* Line 1464 of yacc.c */
6806 michael 1117 #line 2947 "ircd_parser.y"
6807 michael 913 {
6808 michael 1118 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
6809 michael 913 }
6810     break;
6811    
6812 michael 1076 case 516:
6813 michael 967
6814 michael 1089 /* Line 1464 of yacc.c */
6815 michael 1117 #line 2952 "ircd_parser.y"
6816 michael 913 {
6817 michael 1118 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
6818 michael 913 }
6819     break;
6820    
6821 michael 1076 case 517:
6822 michael 967
6823 michael 1089 /* Line 1464 of yacc.c */
6824 michael 1117 #line 2957 "ircd_parser.y"
6825 michael 913 {
6826 michael 1118 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
6827 michael 913 }
6828     break;
6829    
6830 michael 1076 case 518:
6831 michael 967
6832 michael 1089 /* Line 1464 of yacc.c */
6833 michael 1117 #line 2962 "ircd_parser.y"
6834 michael 913 {
6835 michael 1118 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
6836 michael 913 }
6837     break;
6838    
6839 michael 1076 case 519:
6840 michael 967
6841 michael 1089 /* Line 1464 of yacc.c */
6842 michael 1117 #line 2967 "ircd_parser.y"
6843 michael 913 {
6844 michael 1118 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
6845 michael 913 }
6846     break;
6847    
6848 michael 1076 case 520:
6849 michael 967
6850 michael 1089 /* Line 1464 of yacc.c */
6851 michael 1117 #line 2972 "ircd_parser.y"
6852 michael 913 {
6853 michael 1118 if (conf_parser_ctx.pass == 2)
6854     ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
6855 michael 913 }
6856     break;
6857    
6858 michael 1076 case 521:
6859 michael 967
6860 michael 1089 /* Line 1464 of yacc.c */
6861 michael 1118 #line 2978 "ircd_parser.y"
6862 michael 913 {
6863 michael 1118 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6864     {
6865     ilog(L_CRIT, "You haven't read your config file properly.");
6866     ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
6867     ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
6868     exit(0);
6869     }
6870 michael 913 }
6871     break;
6872    
6873 michael 1076 case 522:
6874 michael 967
6875 michael 1089 /* Line 1464 of yacc.c */
6876 michael 1118 #line 2989 "ircd_parser.y"
6877 michael 913 {
6878 michael 1118 ConfigFileEntry.kline_with_reason = yylval.number;
6879 michael 913 }
6880     break;
6881    
6882 michael 1076 case 523:
6883 michael 967
6884 michael 1089 /* Line 1464 of yacc.c */
6885 michael 1118 #line 2994 "ircd_parser.y"
6886 michael 913 {
6887 michael 1118 if (conf_parser_ctx.pass == 2)
6888 michael 913 {
6889 michael 1118 MyFree(ConfigFileEntry.kline_reason);
6890     DupString(ConfigFileEntry.kline_reason, yylval.string);
6891 michael 913 }
6892     }
6893     break;
6894    
6895 michael 1076 case 524:
6896 michael 967
6897 michael 1089 /* Line 1464 of yacc.c */
6898 michael 1118 #line 3003 "ircd_parser.y"
6899 michael 913 {
6900 michael 1118 ConfigFileEntry.invisible_on_connect = yylval.number;
6901 michael 913 }
6902     break;
6903    
6904 michael 1076 case 525:
6905 michael 967
6906 michael 1089 /* Line 1464 of yacc.c */
6907 michael 1118 #line 3008 "ircd_parser.y"
6908 michael 913 {
6909 michael 1118 ConfigFileEntry.warn_no_nline = yylval.number;
6910 michael 913 }
6911     break;
6912    
6913 michael 1076 case 526:
6914 michael 967
6915 michael 1089 /* Line 1464 of yacc.c */
6916 michael 1117 #line 3013 "ircd_parser.y"
6917 michael 913 {
6918 michael 1118 ConfigFileEntry.stats_e_disabled = yylval.number;
6919 michael 913 }
6920     break;
6921    
6922 michael 1076 case 527:
6923 michael 967
6924 michael 1089 /* Line 1464 of yacc.c */
6925 michael 1117 #line 3018 "ircd_parser.y"
6926 michael 913 {
6927 michael 1118 ConfigFileEntry.stats_o_oper_only = yylval.number;
6928 michael 913 }
6929     break;
6930    
6931 michael 1076 case 528:
6932 michael 967
6933 michael 1089 /* Line 1464 of yacc.c */
6934 michael 1117 #line 3023 "ircd_parser.y"
6935 michael 913 {
6936 michael 1118 ConfigFileEntry.stats_P_oper_only = yylval.number;
6937 michael 913 }
6938     break;
6939    
6940 michael 1076 case 529:
6941 michael 967
6942 michael 1089 /* Line 1464 of yacc.c */
6943 michael 1117 #line 3028 "ircd_parser.y"
6944 michael 913 {
6945 michael 1118 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
6946 michael 913 }
6947     break;
6948    
6949 michael 1076 case 530:
6950 michael 967
6951 michael 1089 /* Line 1464 of yacc.c */
6952 michael 1118 #line 3031 "ircd_parser.y"
6953 michael 913 {
6954 michael 1118 ConfigFileEntry.stats_k_oper_only = 1;
6955 michael 913 }
6956     break;
6957    
6958 michael 1076 case 531:
6959 michael 967
6960 michael 1089 /* Line 1464 of yacc.c */
6961 michael 1118 #line 3036 "ircd_parser.y"
6962 michael 913 {
6963 michael 1118 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
6964 michael 913 }
6965     break;
6966    
6967 michael 1076 case 532:
6968 michael 967
6969 michael 1089 /* Line 1464 of yacc.c */
6970 michael 1118 #line 3039 "ircd_parser.y"
6971 michael 913 {
6972 michael 1118 ConfigFileEntry.stats_i_oper_only = 1;
6973 michael 913 }
6974     break;
6975    
6976 michael 1076 case 533:
6977 michael 967
6978 michael 1089 /* Line 1464 of yacc.c */
6979 michael 1118 #line 3044 "ircd_parser.y"
6980 michael 913 {
6981 michael 1118 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
6982 michael 913 }
6983     break;
6984    
6985 michael 1076 case 534:
6986 michael 967
6987 michael 1089 /* Line 1464 of yacc.c */
6988 michael 1117 #line 3049 "ircd_parser.y"
6989 michael 913 {
6990 michael 1118 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
6991 michael 913 }
6992     break;
6993    
6994 michael 1076 case 535:
6995 michael 967
6996 michael 1089 /* Line 1464 of yacc.c */
6997 michael 1117 #line 3054 "ircd_parser.y"
6998 michael 913 {
6999 michael 1118 ConfigFileEntry.opers_bypass_callerid = yylval.number;
7000 michael 913 }
7001     break;
7002    
7003 michael 1076 case 536:
7004 michael 967
7005 michael 1089 /* Line 1464 of yacc.c */
7006 michael 1117 #line 3059 "ircd_parser.y"
7007 michael 913 {
7008 michael 1118 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
7009 michael 913 }
7010     break;
7011    
7012 michael 1076 case 537:
7013 michael 967
7014 michael 1089 /* Line 1464 of yacc.c */
7015 michael 1117 #line 3064 "ircd_parser.y"
7016 michael 913 {
7017 michael 1118 ConfigFileEntry.short_motd = yylval.number;
7018 michael 913 }
7019     break;
7020    
7021 michael 1076 case 538:
7022 michael 967
7023 michael 1089 /* Line 1464 of yacc.c */
7024 michael 1117 #line 3069 "ircd_parser.y"
7025 michael 913 {
7026 michael 1118 ConfigFileEntry.no_oper_flood = yylval.number;
7027 michael 913 }
7028     break;
7029    
7030 michael 1076 case 539:
7031 michael 967
7032 michael 1089 /* Line 1464 of yacc.c */
7033 michael 1117 #line 3074 "ircd_parser.y"
7034 michael 913 {
7035 michael 1118 ConfigFileEntry.true_no_oper_flood = yylval.number;
7036 michael 913 }
7037     break;
7038    
7039 michael 1076 case 540:
7040 michael 967
7041 michael 1089 /* Line 1464 of yacc.c */
7042 michael 1117 #line 3079 "ircd_parser.y"
7043 michael 913 {
7044 michael 1118 ConfigFileEntry.oper_pass_resv = yylval.number;
7045 michael 913 }
7046     break;
7047    
7048 michael 1076 case 541:
7049 michael 967
7050 michael 1089 /* Line 1464 of yacc.c */
7051 michael 1117 #line 3084 "ircd_parser.y"
7052 michael 913 {
7053 michael 967 if (conf_parser_ctx.pass == 2)
7054 michael 913 {
7055     if (strlen(yylval.string) > LOCALE_LENGTH-2)
7056     yylval.string[LOCALE_LENGTH-1] = '\0';
7057    
7058     set_locale(yylval.string);
7059     }
7060     }
7061     break;
7062    
7063 michael 1118 case 542:
7064 michael 967
7065 michael 1089 /* Line 1464 of yacc.c */
7066 michael 1118 #line 3095 "ircd_parser.y"
7067 michael 913 {
7068     ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
7069     }
7070     break;
7071    
7072 michael 1118 case 543:
7073 michael 967
7074 michael 1089 /* Line 1464 of yacc.c */
7075 michael 1118 #line 3100 "ircd_parser.y"
7076 michael 913 {
7077     ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
7078     }
7079     break;
7080    
7081 michael 1118 case 544:
7082 michael 967
7083 michael 1089 /* Line 1464 of yacc.c */
7084 michael 1118 #line 3105 "ircd_parser.y"
7085 michael 913 {
7086     ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
7087     }
7088     break;
7089    
7090 michael 1118 case 545:
7091 michael 967
7092 michael 1089 /* Line 1464 of yacc.c */
7093 michael 1118 #line 3110 "ircd_parser.y"
7094 michael 913 {
7095 michael 967 if (conf_parser_ctx.pass == 2)
7096 michael 913 {
7097     MyFree(ConfigFileEntry.servlink_path);
7098     DupString(ConfigFileEntry.servlink_path, yylval.string);
7099     }
7100     }
7101     break;
7102    
7103 michael 1118 case 546:
7104 michael 967
7105 michael 1089 /* Line 1464 of yacc.c */
7106 michael 1118 #line 3119 "ircd_parser.y"
7107 michael 913 {
7108     #ifdef HAVE_LIBCRYPTO
7109 michael 967 if (conf_parser_ctx.pass == 2)
7110 michael 913 {
7111     struct EncCapability *ecap;
7112     const char *cipher_name;
7113     int found = 0;
7114    
7115     ConfigFileEntry.default_cipher_preference = NULL;
7116     cipher_name = yylval.string;
7117    
7118     for (ecap = CipherTable; ecap->name; ecap++)
7119     {
7120     if ((irccmp(ecap->name, cipher_name) == 0) &&
7121     (ecap->cap & CAP_ENC_MASK))
7122     {
7123     ConfigFileEntry.default_cipher_preference = ecap;
7124     found = 1;
7125     break;
7126     }
7127     }
7128    
7129     if (!found)
7130     yyerror("Invalid cipher");
7131     }
7132     #else
7133 michael 967 if (conf_parser_ctx.pass == 2)
7134 michael 913 yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7135     #endif
7136     }
7137     break;
7138    
7139 michael 1118 case 547:
7140 michael 967
7141 michael 1089 /* Line 1464 of yacc.c */
7142 michael 1118 #line 3151 "ircd_parser.y"
7143 michael 913 {
7144 michael 967 if (conf_parser_ctx.pass == 2)
7145 michael 913 {
7146     ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7147     #ifndef HAVE_LIBZ
7148     yyerror("Ignoring compression_level -- no zlib support");
7149     #else
7150     if ((ConfigFileEntry.compression_level < 1) ||
7151     (ConfigFileEntry.compression_level > 9))
7152     {
7153     yyerror("Ignoring invalid compression_level, using default");
7154     ConfigFileEntry.compression_level = 0;
7155     }
7156     #endif
7157     }
7158     }
7159     break;
7160    
7161 michael 1118 case 548:
7162 michael 967
7163 michael 1089 /* Line 1464 of yacc.c */
7164 michael 1118 #line 3169 "ircd_parser.y"
7165 michael 913 {
7166     ConfigFileEntry.use_egd = yylval.number;
7167     }
7168     break;
7169    
7170 michael 1118 case 549:
7171 michael 967
7172 michael 1089 /* Line 1464 of yacc.c */
7173 michael 1118 #line 3174 "ircd_parser.y"
7174 michael 913 {
7175 michael 967 if (conf_parser_ctx.pass == 2)
7176 michael 913 {
7177     MyFree(ConfigFileEntry.egdpool_path);
7178     DupString(ConfigFileEntry.egdpool_path, yylval.string);
7179     }
7180     }
7181     break;
7182    
7183 michael 1118 case 550:
7184 michael 967
7185 michael 1089 /* Line 1464 of yacc.c */
7186 michael 1118 #line 3183 "ircd_parser.y"
7187 michael 913 {
7188     ConfigFileEntry.ping_cookie = yylval.number;
7189     }
7190     break;
7191    
7192 michael 1118 case 551:
7193 michael 967
7194 michael 1089 /* Line 1464 of yacc.c */
7195 michael 1118 #line 3188 "ircd_parser.y"
7196 michael 913 {
7197     ConfigFileEntry.disable_auth = yylval.number;
7198     }
7199     break;
7200    
7201 michael 1118 case 552:
7202 michael 967
7203 michael 1089 /* Line 1464 of yacc.c */
7204 michael 1118 #line 3193 "ircd_parser.y"
7205 michael 913 {
7206     ConfigFileEntry.throttle_time = yylval.number;
7207     }
7208     break;
7209    
7210 michael 1118 case 553:
7211 michael 967
7212 michael 1089 /* Line 1464 of yacc.c */
7213 michael 1118 #line 3198 "ircd_parser.y"
7214 michael 913 {
7215     ConfigFileEntry.oper_umodes = 0;
7216     }
7217     break;
7218    
7219 michael 1118 case 557:
7220 michael 967
7221 michael 1089 /* Line 1464 of yacc.c */
7222 michael 1118 #line 3204 "ircd_parser.y"
7223 michael 913 {
7224     ConfigFileEntry.oper_umodes |= UMODE_BOTS;
7225     }
7226     break;
7227    
7228 michael 1118 case 558:
7229 michael 967
7230 michael 1089 /* Line 1464 of yacc.c */
7231 michael 1118 #line 3207 "ircd_parser.y"
7232 michael 913 {
7233     ConfigFileEntry.oper_umodes |= UMODE_CCONN;
7234     }
7235     break;
7236    
7237 michael 1118 case 559:
7238 michael 967
7239 michael 1089 /* Line 1464 of yacc.c */
7240 michael 1118 #line 3210 "ircd_parser.y"
7241 michael 913 {
7242     ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
7243     }
7244     break;
7245    
7246 michael 1118 case 560:
7247 michael 967
7248 michael 1089 /* Line 1464 of yacc.c */
7249 michael 1118 #line 3213 "ircd_parser.y"
7250 michael 913 {
7251     ConfigFileEntry.oper_umodes |= UMODE_DEAF;
7252     }
7253     break;
7254    
7255 michael 1118 case 561:
7256 michael 967
7257 michael 1089 /* Line 1464 of yacc.c */
7258 michael 1118 #line 3216 "ircd_parser.y"
7259 michael 913 {
7260     ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
7261     }
7262     break;
7263    
7264 michael 1118 case 562:
7265 michael 967
7266 michael 1089 /* Line 1464 of yacc.c */
7267 michael 1118 #line 3219 "ircd_parser.y"
7268 michael 913 {
7269     ConfigFileEntry.oper_umodes |= UMODE_FULL;
7270     }
7271     break;
7272    
7273 michael 1118 case 563:
7274 michael 967
7275 michael 1089 /* Line 1464 of yacc.c */
7276 michael 1118 #line 3222 "ircd_parser.y"
7277 michael 913 {
7278     ConfigFileEntry.oper_umodes |= UMODE_SKILL;
7279     }
7280     break;
7281    
7282 michael 1118 case 564:
7283 michael 967
7284 michael 1089 /* Line 1464 of yacc.c */
7285 michael 1118 #line 3225 "ircd_parser.y"
7286 michael 913 {
7287     ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
7288     }
7289     break;
7290    
7291 michael 1118 case 565:
7292 michael 967
7293 michael 1089 /* Line 1464 of yacc.c */
7294 michael 1118 #line 3228 "ircd_parser.y"
7295 michael 913 {
7296     ConfigFileEntry.oper_umodes |= UMODE_REJ;
7297     }
7298     break;
7299    
7300 michael 1118 case 566:
7301 michael 967
7302 michael 1089 /* Line 1464 of yacc.c */
7303 michael 1118 #line 3231 "ircd_parser.y"
7304 michael 913 {
7305     ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
7306     }
7307     break;
7308    
7309 michael 1118 case 567:
7310 michael 967
7311 michael 1089 /* Line 1464 of yacc.c */
7312 michael 1118 #line 3234 "ircd_parser.y"
7313 michael 913 {
7314     ConfigFileEntry.oper_umodes |= UMODE_SPY;
7315     }
7316     break;
7317    
7318 michael 1118 case 568:
7319 michael 967
7320 michael 1089 /* Line 1464 of yacc.c */
7321 michael 1118 #line 3237 "ircd_parser.y"
7322 michael 913 {
7323     ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
7324     }
7325     break;
7326    
7327 michael 1118 case 569:
7328 michael 967
7329 michael 1089 /* Line 1464 of yacc.c */
7330 michael 1118 #line 3240 "ircd_parser.y"
7331 michael 913 {
7332     ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
7333     }
7334     break;
7335    
7336 michael 1118 case 570:
7337 michael 967
7338 michael 1089 /* Line 1464 of yacc.c */
7339 michael 1118 #line 3243 "ircd_parser.y"
7340 michael 913 {
7341     ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
7342     }
7343     break;
7344    
7345 michael 1118 case 571:
7346 michael 967
7347 michael 1089 /* Line 1464 of yacc.c */
7348 michael 1118 #line 3246 "ircd_parser.y"
7349 michael 913 {
7350     ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
7351     }
7352     break;
7353    
7354 michael 1118 case 572:
7355 michael 967
7356 michael 1089 /* Line 1464 of yacc.c */
7357 michael 1118 #line 3249 "ircd_parser.y"
7358 michael 913 {
7359     ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
7360     }
7361     break;
7362    
7363 michael 1118 case 573:
7364 michael 967
7365 michael 1089 /* Line 1464 of yacc.c */
7366 michael 1118 #line 3252 "ircd_parser.y"
7367 michael 913 {
7368     ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
7369     }
7370     break;
7371    
7372 michael 1118 case 574:
7373 michael 967
7374 michael 1089 /* Line 1464 of yacc.c */
7375 michael 1118 #line 3255 "ircd_parser.y"
7376 michael 913 {
7377     ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
7378     }
7379     break;
7380    
7381 michael 1118 case 575:
7382 michael 967
7383 michael 1089 /* Line 1464 of yacc.c */
7384 michael 1118 #line 3258 "ircd_parser.y"
7385 michael 913 {
7386     ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
7387     }
7388     break;
7389    
7390 michael 1118 case 576:
7391 michael 967
7392 michael 1089 /* Line 1464 of yacc.c */
7393 michael 1118 #line 3263 "ircd_parser.y"
7394 michael 913 {
7395     ConfigFileEntry.oper_only_umodes = 0;
7396     }
7397     break;
7398    
7399 michael 1118 case 580:
7400 michael 967
7401 michael 1089 /* Line 1464 of yacc.c */
7402 michael 1118 #line 3269 "ircd_parser.y"
7403 michael 913 {
7404     ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7405     }
7406     break;
7407    
7408 michael 1118 case 581:
7409 michael 967
7410 michael 1089 /* Line 1464 of yacc.c */
7411 michael 1118 #line 3272 "ircd_parser.y"
7412 michael 913 {
7413     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7414     }
7415     break;
7416    
7417 michael 1118 case 582:
7418 michael 967
7419 michael 1089 /* Line 1464 of yacc.c */
7420 michael 1118 #line 3275 "ircd_parser.y"
7421 michael 913 {
7422     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7423     }
7424     break;
7425    
7426 michael 1118 case 583:
7427 michael 967
7428 michael 1089 /* Line 1464 of yacc.c */
7429 michael 1118 #line 3278 "ircd_parser.y"
7430 michael 913 {
7431     ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7432     }
7433     break;
7434    
7435 michael 1118 case 584:
7436 michael 967
7437 michael 1089 /* Line 1464 of yacc.c */
7438 michael 1118 #line 3281 "ircd_parser.y"
7439 michael 913 {
7440     ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7441     }
7442     break;
7443    
7444 michael 1118 case 585:
7445 michael 967
7446 michael 1089 /* Line 1464 of yacc.c */
7447 michael 1118 #line 3284 "ircd_parser.y"
7448 michael 913 {
7449     ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7450     }
7451     break;
7452    
7453 michael 1118 case 586:
7454 michael 967
7455 michael 1089 /* Line 1464 of yacc.c */
7456 michael 1118 #line 3287 "ircd_parser.y"
7457 michael 913 {
7458     ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7459     }
7460     break;
7461    
7462 michael 1118 case 587:
7463 michael 967
7464 michael 1089 /* Line 1464 of yacc.c */
7465 michael 1118 #line 3290 "ircd_parser.y"
7466 michael 913 {
7467     ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
7468     }
7469     break;
7470    
7471 michael 1118 case 588:
7472 michael 967
7473 michael 1089 /* Line 1464 of yacc.c */
7474 michael 1118 #line 3293 "ircd_parser.y"
7475 michael 913 {
7476     ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
7477     }
7478     break;
7479    
7480 michael 1118 case 589:
7481 michael 967
7482 michael 1089 /* Line 1464 of yacc.c */
7483 michael 1118 #line 3296 "ircd_parser.y"
7484 michael 913 {
7485     ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
7486     }
7487     break;
7488    
7489 michael 1118 case 590:
7490 michael 967
7491 michael 1089 /* Line 1464 of yacc.c */
7492 michael 1118 #line 3299 "ircd_parser.y"
7493 michael 913 {
7494     ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
7495     }
7496     break;
7497    
7498 michael 1118 case 591:
7499 michael 967
7500 michael 1089 /* Line 1464 of yacc.c */
7501 michael 1118 #line 3302 "ircd_parser.y"
7502 michael 913 {
7503     ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
7504     }
7505     break;
7506    
7507 michael 1118 case 592:
7508 michael 967
7509 michael 1089 /* Line 1464 of yacc.c */
7510 michael 1118 #line 3305 "ircd_parser.y"
7511 michael 913 {
7512     ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
7513     }
7514     break;
7515    
7516 michael 1118 case 593:
7517 michael 967
7518 michael 1089 /* Line 1464 of yacc.c */
7519 michael 1118 #line 3308 "ircd_parser.y"
7520 michael 913 {
7521     ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
7522     }
7523     break;
7524    
7525 michael 1118 case 594:
7526 michael 967
7527 michael 1089 /* Line 1464 of yacc.c */
7528 michael 1118 #line 3311 "ircd_parser.y"
7529 michael 913 {
7530     ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
7531     }
7532     break;
7533    
7534 michael 1118 case 595:
7535 michael 967
7536 michael 1089 /* Line 1464 of yacc.c */
7537 michael 1118 #line 3314 "ircd_parser.y"
7538 michael 913 {
7539     ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
7540     }
7541     break;
7542    
7543 michael 1118 case 596:
7544 michael 967
7545 michael 1089 /* Line 1464 of yacc.c */
7546 michael 1118 #line 3317 "ircd_parser.y"
7547 michael 913 {
7548     ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
7549     }
7550     break;
7551    
7552 michael 1118 case 597:
7553 michael 967
7554 michael 1089 /* Line 1464 of yacc.c */
7555 michael 1118 #line 3320 "ircd_parser.y"
7556 michael 913 {
7557     ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
7558     }
7559     break;
7560    
7561 michael 1118 case 598:
7562 michael 967
7563 michael 1089 /* Line 1464 of yacc.c */
7564 michael 1118 #line 3323 "ircd_parser.y"
7565 michael 913 {
7566     ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
7567     }
7568     break;
7569    
7570 michael 1118 case 599:
7571 michael 967
7572 michael 1089 /* Line 1464 of yacc.c */
7573 michael 1118 #line 3328 "ircd_parser.y"
7574 michael 913 {
7575     ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
7576     }
7577     break;
7578    
7579 michael 1118 case 600:
7580 michael 967
7581 michael 1089 /* Line 1464 of yacc.c */
7582 michael 1118 #line 3333 "ircd_parser.y"
7583 michael 913 {
7584     ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
7585     }
7586     break;
7587    
7588 michael 1118 case 601:
7589 michael 967
7590 michael 1089 /* Line 1464 of yacc.c */
7591 michael 1118 #line 3338 "ircd_parser.y"
7592 michael 913 {
7593     ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
7594     }
7595     break;
7596    
7597 michael 1118 case 602:
7598 michael 967
7599 michael 1089 /* Line 1464 of yacc.c */
7600 michael 1118 #line 3343 "ircd_parser.y"
7601 michael 913 {
7602     ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
7603     }
7604     break;
7605    
7606 michael 1118 case 603:
7607 michael 967
7608 michael 1089 /* Line 1464 of yacc.c */
7609 michael 1118 #line 3352 "ircd_parser.y"
7610 michael 913 {
7611 michael 967 if (conf_parser_ctx.pass == 2)
7612 michael 913 {
7613     yy_conf = make_conf_item(GDENY_TYPE);
7614     yy_aconf = map_to_conf(yy_conf);
7615     }
7616     }
7617     break;
7618    
7619 michael 1118 case 604:
7620 michael 967
7621 michael 1089 /* Line 1464 of yacc.c */
7622 michael 1118 #line 3359 "ircd_parser.y"
7623 michael 913 {
7624 michael 967 if (conf_parser_ctx.pass == 2)
7625 michael 913 {
7626     /*
7627     * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
7628     * end we will have one extra, so we should free it.
7629     */
7630     if (yy_conf->name == NULL || yy_aconf->user == NULL)
7631     {
7632     delete_conf_item(yy_conf);
7633     yy_conf = NULL;
7634     yy_aconf = NULL;
7635     }
7636     }
7637     }
7638     break;
7639    
7640 michael 1118 case 614:
7641 michael 967
7642 michael 1089 /* Line 1464 of yacc.c */
7643 michael 1118 #line 3385 "ircd_parser.y"
7644 michael 913 {
7645 michael 967 if (conf_parser_ctx.pass == 2)
7646 michael 913 ConfigFileEntry.glines = yylval.number;
7647     }
7648     break;
7649    
7650 michael 1118 case 615:
7651 michael 967
7652 michael 1089 /* Line 1464 of yacc.c */
7653 michael 1118 #line 3391 "ircd_parser.y"
7654 michael 913 {
7655 michael 967 if (conf_parser_ctx.pass == 2)
7656 michael 913 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
7657     }
7658     break;
7659    
7660 michael 1118 case 616:
7661 michael 967
7662 michael 1089 /* Line 1464 of yacc.c */
7663 michael 1118 #line 3397 "ircd_parser.y"
7664 michael 913 {
7665 michael 967 if (conf_parser_ctx.pass == 2)
7666 michael 913 ConfigFileEntry.gline_logging = 0;
7667     }
7668     break;
7669    
7670 michael 1118 case 620:
7671 michael 967
7672 michael 1089 /* Line 1464 of yacc.c */
7673 michael 1118 #line 3403 "ircd_parser.y"
7674 michael 913 {
7675 michael 967 if (conf_parser_ctx.pass == 2)
7676 michael 913 ConfigFileEntry.gline_logging |= GDENY_REJECT;
7677     }
7678     break;
7679    
7680 michael 1118 case 621:
7681 michael 967
7682 michael 1089 /* Line 1464 of yacc.c */
7683 michael 1118 #line 3407 "ircd_parser.y"
7684 michael 913 {
7685 michael 967 if (conf_parser_ctx.pass == 2)
7686 michael 913 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
7687     }
7688     break;
7689    
7690 michael 1118 case 622:
7691 michael 967
7692 michael 1089 /* Line 1464 of yacc.c */
7693 michael 1118 #line 3413 "ircd_parser.y"
7694 michael 913 {
7695 michael 967 if (conf_parser_ctx.pass == 2)
7696 michael 913 {
7697     struct split_nuh_item nuh;
7698    
7699     nuh.nuhmask = yylval.string;
7700     nuh.nickptr = NULL;
7701     nuh.userptr = userbuf;
7702     nuh.hostptr = hostbuf;
7703    
7704     nuh.nicksize = 0;
7705     nuh.usersize = sizeof(userbuf);
7706     nuh.hostsize = sizeof(hostbuf);
7707    
7708     split_nuh(&nuh);
7709    
7710     if (yy_aconf->user == NULL)
7711     {
7712     DupString(yy_aconf->user, userbuf);
7713     DupString(yy_aconf->host, hostbuf);
7714     }
7715     else
7716     {
7717     struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
7718    
7719     DupString(yy_tmp->user, userbuf);
7720     DupString(yy_tmp->host, hostbuf);
7721    
7722     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
7723     }
7724     }
7725     }
7726     break;
7727    
7728 michael 1118 case 623:
7729 michael 967
7730 michael 1089 /* Line 1464 of yacc.c */
7731 michael 1118 #line 3447 "ircd_parser.y"
7732 michael 913 {
7733 michael 967 if (conf_parser_ctx.pass == 2)
7734 michael 913 {
7735     MyFree(yy_conf->name);
7736     DupString(yy_conf->name, yylval.string);
7737     }
7738     }
7739     break;
7740    
7741 michael 1118 case 624:
7742 michael 967
7743 michael 1089 /* Line 1464 of yacc.c */
7744 michael 1118 #line 3456 "ircd_parser.y"
7745 michael 913 {
7746 michael 967 if (conf_parser_ctx.pass == 2)
7747 michael 913 yy_aconf->flags = 0;
7748     }
7749     break;
7750    
7751 michael 1118 case 625:
7752 michael 967
7753 michael 1089 /* Line 1464 of yacc.c */
7754 michael 1118 #line 3460 "ircd_parser.y"
7755 michael 913 {
7756 michael 967 if (conf_parser_ctx.pass == 2)
7757 michael 913 {
7758     struct CollectItem *yy_tmp = NULL;
7759     dlink_node *ptr, *next_ptr;
7760    
7761     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
7762     {
7763     struct AccessItem *new_aconf;
7764     struct ConfItem *new_conf;
7765    
7766     yy_tmp = ptr->data;
7767     new_conf = make_conf_item(GDENY_TYPE);
7768     new_aconf = map_to_conf(new_conf);
7769    
7770     new_aconf->flags = yy_aconf->flags;
7771    
7772     if (yy_conf->name != NULL)
7773     DupString(new_conf->name, yy_conf->name);
7774     else
7775     DupString(new_conf->name, "*");
7776     if (yy_aconf->user != NULL)
7777     DupString(new_aconf->user, yy_tmp->user);
7778     else
7779     DupString(new_aconf->user, "*");
7780     if (yy_aconf->host != NULL)
7781     DupString(new_aconf->host, yy_tmp->host);
7782     else
7783     DupString(new_aconf->host, "*");
7784    
7785     dlinkDelete(&yy_tmp->node, &col_conf_list);
7786     }
7787    
7788     /*
7789     * In case someone has fed us with more than one action= after user/name
7790     * which would leak memory -Michael
7791     */
7792     if (yy_conf->name == NULL || yy_aconf->user == NULL)
7793     delete_conf_item(yy_conf);
7794    
7795     yy_conf = make_conf_item(GDENY_TYPE);
7796     yy_aconf = map_to_conf(yy_conf);
7797     }
7798     }
7799     break;
7800    
7801 michael 1118 case 628:
7802 michael 967
7803 michael 1089 /* Line 1464 of yacc.c */
7804 michael 1118 #line 3507 "ircd_parser.y"
7805 michael 913 {
7806 michael 967 if (conf_parser_ctx.pass == 2)
7807 michael 913 yy_aconf->flags |= GDENY_REJECT;
7808     }
7809     break;
7810    
7811 michael 1118 case 629:
7812 michael 967
7813 michael 1089 /* Line 1464 of yacc.c */
7814 michael 1118 #line 3511 "ircd_parser.y"
7815 michael 913 {
7816 michael 967 if (conf_parser_ctx.pass == 2)
7817 michael 913 yy_aconf->flags |= GDENY_BLOCK;
7818     }
7819     break;
7820    
7821 michael 1118 case 652:
7822    
7823     /* Line 1464 of yacc.c */
7824     #line 3535 "ircd_parser.y"
7825     {
7826     ConfigChannel.disable_fake_channels = yylval.number;
7827     }
7828     break;
7829    
7830     case 653:
7831    
7832     /* Line 1464 of yacc.c */
7833     #line 3540 "ircd_parser.y"
7834     {
7835     ConfigChannel.restrict_channels = yylval.number;
7836     }
7837     break;
7838    
7839 michael 1076 case 654:
7840 michael 967
7841 michael 1089 /* Line 1464 of yacc.c */
7842 michael 1117 #line 3545 "ircd_parser.y"
7843 michael 913 {
7844 michael 1118 ConfigChannel.disable_local_channels = yylval.number;
7845 michael 913 }
7846     break;
7847    
7848 michael 1076 case 655:
7849 michael 967
7850 michael 1089 /* Line 1464 of yacc.c */
7851 michael 1117 #line 3550 "ircd_parser.y"
7852 michael 913 {
7853 michael 1118 ConfigChannel.use_except = yylval.number;
7854 michael 913 }
7855     break;
7856    
7857 michael 1076 case 656:
7858 michael 967
7859 michael 1089 /* Line 1464 of yacc.c */
7860 michael 1117 #line 3555 "ircd_parser.y"
7861 michael 913 {
7862 michael 1118 ConfigChannel.use_invex = yylval.number;
7863 michael 913 }
7864     break;
7865    
7866 michael 1076 case 657:
7867 michael 967
7868 michael 1089 /* Line 1464 of yacc.c */
7869 michael 1117 #line 3560 "ircd_parser.y"
7870 michael 913 {
7871 michael 1118 ConfigChannel.use_knock = yylval.number;
7872 michael 913 }
7873     break;
7874    
7875 michael 1076 case 658:
7876 michael 967
7877 michael 1089 /* Line 1464 of yacc.c */
7878 michael 1117 #line 3565 "ircd_parser.y"
7879 michael 913 {
7880 michael 1118 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
7881 michael 913 }
7882     break;
7883    
7884 michael 1076 case 659:
7885 michael 967
7886 michael 1089 /* Line 1464 of yacc.c */
7887 michael 1117 #line 3570 "ircd_parser.y"
7888 michael 913 {
7889 michael 1118 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
7890 michael 913 }
7891     break;
7892    
7893 michael 1076 case 660:
7894 michael 967
7895 michael 1089 /* Line 1464 of yacc.c */
7896 michael 1117 #line 3575 "ircd_parser.y"
7897 michael 913 {
7898 michael 1118 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
7899 michael 913 }
7900     break;
7901    
7902 michael 1076 case 661:
7903 michael 967
7904 michael 1089 /* Line 1464 of yacc.c */
7905 michael 1117 #line 3580 "ircd_parser.y"
7906 michael 913 {
7907 michael 1118 ConfigChannel.quiet_on_ban = yylval.number;
7908 michael 913 }
7909     break;
7910    
7911 michael 1076 case 662:
7912 michael 967
7913 michael 1089 /* Line 1464 of yacc.c */
7914 michael 1117 #line 3585 "ircd_parser.y"
7915 michael 913 {
7916 michael 1118 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
7917 michael 913 }
7918     break;
7919    
7920 michael 1076 case 663:
7921 michael 967
7922 michael 1089 /* Line 1464 of yacc.c */
7923 michael 1117 #line 3590 "ircd_parser.y"
7924 michael 913 {
7925 michael 1118 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
7926 michael 913 }
7927     break;
7928    
7929 michael 1076 case 664:
7930 michael 967
7931 michael 1089 /* Line 1464 of yacc.c */
7932 michael 1117 #line 3595 "ircd_parser.y"
7933 michael 913 {
7934 michael 1118 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
7935 michael 913 }
7936     break;
7937    
7938 michael 1076 case 665:
7939 michael 967
7940 michael 1089 /* Line 1464 of yacc.c */
7941 michael 1117 #line 3600 "ircd_parser.y"
7942 michael 913 {
7943 michael 1118 ConfigChannel.no_create_on_split = yylval.number;
7944 michael 913 }
7945     break;
7946    
7947 michael 1076 case 666:
7948 michael 967
7949 michael 1089 /* Line 1464 of yacc.c */
7950 michael 1117 #line 3605 "ircd_parser.y"
7951 michael 913 {
7952 michael 1118 ConfigChannel.no_join_on_split = yylval.number;
7953 michael 913 }
7954     break;
7955    
7956 michael 1076 case 667:
7957 michael 967
7958 michael 1089 /* Line 1464 of yacc.c */
7959 michael 1117 #line 3610 "ircd_parser.y"
7960 michael 913 {
7961 michael 1118 ConfigChannel.burst_topicwho = yylval.number;
7962 michael 913 }
7963     break;
7964    
7965 michael 1076 case 668:
7966 michael 967
7967 michael 1089 /* Line 1464 of yacc.c */
7968 michael 1117 #line 3615 "ircd_parser.y"
7969 michael 913 {
7970 michael 1118 GlobalSetOptions.joinfloodcount = yylval.number;
7971 michael 913 }
7972     break;
7973    
7974 michael 1076 case 669:
7975 michael 967
7976 michael 1089 /* Line 1464 of yacc.c */
7977 michael 1117 #line 3620 "ircd_parser.y"
7978 michael 913 {
7979     GlobalSetOptions.joinfloodtime = yylval.number;
7980     }
7981     break;
7982    
7983 michael 1118 case 681:
7984 michael 967
7985 michael 1089 /* Line 1464 of yacc.c */
7986 michael 1118 #line 3639 "ircd_parser.y"
7987 michael 913 {
7988 michael 967 if (conf_parser_ctx.pass == 2)
7989 michael 913 ConfigServerHide.flatten_links = yylval.number;
7990     }
7991     break;
7992    
7993 michael 1118 case 682:
7994 michael 967
7995 michael 1089 /* Line 1464 of yacc.c */
7996 michael 1118 #line 3645 "ircd_parser.y"
7997 michael 913 {
7998 michael 967 if (conf_parser_ctx.pass == 2)
7999 michael 913 ConfigServerHide.hide_servers = yylval.number;
8000     }
8001     break;
8002    
8003 michael 1118 case 683:
8004 michael 967
8005 michael 1089 /* Line 1464 of yacc.c */
8006 michael 1118 #line 3651 "ircd_parser.y"
8007 michael 913 {
8008 michael 967 if (conf_parser_ctx.pass == 2)
8009 michael 913 {
8010     MyFree(ConfigServerHide.hidden_name);
8011     DupString(ConfigServerHide.hidden_name, yylval.string);
8012     }
8013     }
8014     break;
8015    
8016 michael 1118 case 684:
8017 michael 967
8018 michael 1089 /* Line 1464 of yacc.c */
8019 michael 1118 #line 3660 "ircd_parser.y"
8020 michael 913 {
8021 michael 967 if (conf_parser_ctx.pass == 2)
8022 michael 913 {
8023     if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
8024     {
8025     eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
8026     ConfigServerHide.links_disabled = 0;
8027     }
8028    
8029     ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
8030     }
8031     }
8032     break;
8033    
8034 michael 1118 case 685:
8035 michael 967
8036 michael 1089 /* Line 1464 of yacc.c */
8037 michael 1118 #line 3674 "ircd_parser.y"
8038 michael 913 {
8039 michael 967 if (conf_parser_ctx.pass == 2)
8040 michael 913 ConfigServerHide.hidden = yylval.number;
8041     }
8042     break;
8043    
8044 michael 1118 case 686:
8045 michael 967
8046 michael 1089 /* Line 1464 of yacc.c */
8047 michael 1118 #line 3680 "ircd_parser.y"
8048 michael 913 {
8049 michael 967 if (conf_parser_ctx.pass == 2)
8050 michael 913 ConfigServerHide.disable_hidden = yylval.number;
8051     }
8052     break;
8053    
8054 michael 1118 case 687:
8055 michael 967
8056 michael 1089 /* Line 1464 of yacc.c */
8057 michael 1118 #line 3686 "ircd_parser.y"
8058 michael 913 {
8059 michael 967 if (conf_parser_ctx.pass == 2)
8060 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
8061     }
8062     break;
8063    
8064    
8065 michael 967
8066 michael 1089 /* Line 1464 of yacc.c */
8067 michael 1118 #line 8068 "ircd_parser.c"
8068 michael 913 default: break;
8069     }
8070     YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8071    
8072     YYPOPSTACK (yylen);
8073     yylen = 0;
8074     YY_STACK_PRINT (yyss, yyssp);
8075    
8076     *++yyvsp = yyval;
8077    
8078     /* Now `shift' the result of the reduction. Determine what state
8079     that goes to, based on the state we popped back to and the rule
8080     number reduced by. */
8081    
8082     yyn = yyr1[yyn];
8083    
8084     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
8085     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
8086     yystate = yytable[yystate];
8087     else
8088     yystate = yydefgoto[yyn - YYNTOKENS];
8089    
8090     goto yynewstate;
8091    
8092    
8093     /*------------------------------------.
8094     | yyerrlab -- here on detecting error |
8095     `------------------------------------*/
8096     yyerrlab:
8097     /* If not already recovering from an error, report this error. */
8098     if (!yyerrstatus)
8099     {
8100     ++yynerrs;
8101     #if ! YYERROR_VERBOSE
8102     yyerror (YY_("syntax error"));
8103     #else
8104     {
8105     YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
8106     if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
8107     {
8108     YYSIZE_T yyalloc = 2 * yysize;
8109     if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
8110     yyalloc = YYSTACK_ALLOC_MAXIMUM;
8111     if (yymsg != yymsgbuf)
8112     YYSTACK_FREE (yymsg);
8113     yymsg = (char *) YYSTACK_ALLOC (yyalloc);
8114     if (yymsg)
8115     yymsg_alloc = yyalloc;
8116     else
8117     {
8118     yymsg = yymsgbuf;
8119     yymsg_alloc = sizeof yymsgbuf;
8120     }
8121     }
8122    
8123     if (0 < yysize && yysize <= yymsg_alloc)
8124     {
8125     (void) yysyntax_error (yymsg, yystate, yychar);
8126     yyerror (yymsg);
8127     }
8128     else
8129     {
8130     yyerror (YY_("syntax error"));
8131     if (yysize != 0)
8132     goto yyexhaustedlab;
8133     }
8134     }
8135     #endif
8136     }
8137    
8138    
8139    
8140     if (yyerrstatus == 3)
8141     {
8142 michael 967 /* If just tried and failed to reuse lookahead token after an
8143 michael 913 error, discard it. */
8144    
8145     if (yychar <= YYEOF)
8146     {
8147     /* Return failure if at end of input. */
8148     if (yychar == YYEOF)
8149     YYABORT;
8150     }
8151     else
8152     {
8153     yydestruct ("Error: discarding",
8154     yytoken, &yylval);
8155     yychar = YYEMPTY;
8156     }
8157     }
8158    
8159 michael 967 /* Else will try to reuse lookahead token after shifting the error
8160 michael 913 token. */
8161     goto yyerrlab1;
8162    
8163    
8164     /*---------------------------------------------------.
8165     | yyerrorlab -- error raised explicitly by YYERROR. |
8166     `---------------------------------------------------*/
8167     yyerrorlab:
8168    
8169     /* Pacify compilers like GCC when the user code never invokes
8170     YYERROR and the label yyerrorlab therefore never appears in user
8171     code. */
8172     if (/*CONSTCOND*/ 0)
8173     goto yyerrorlab;
8174    
8175     /* Do not reclaim the symbols of the rule which action triggered
8176     this YYERROR. */
8177     YYPOPSTACK (yylen);
8178     yylen = 0;
8179     YY_STACK_PRINT (yyss, yyssp);
8180     yystate = *yyssp;
8181     goto yyerrlab1;
8182    
8183    
8184     /*-------------------------------------------------------------.
8185     | yyerrlab1 -- common code for both syntax error and YYERROR. |
8186     `-------------------------------------------------------------*/
8187     yyerrlab1:
8188     yyerrstatus = 3; /* Each real token shifted decrements this. */
8189    
8190     for (;;)
8191     {
8192     yyn = yypact[yystate];
8193     if (yyn != YYPACT_NINF)
8194     {
8195     yyn += YYTERROR;
8196     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8197     {
8198     yyn = yytable[yyn];
8199     if (0 < yyn)
8200     break;
8201     }
8202     }
8203    
8204     /* Pop the current state because it cannot handle the error token. */
8205     if (yyssp == yyss)
8206     YYABORT;
8207    
8208    
8209     yydestruct ("Error: popping",
8210     yystos[yystate], yyvsp);
8211     YYPOPSTACK (1);
8212     yystate = *yyssp;
8213     YY_STACK_PRINT (yyss, yyssp);
8214     }
8215    
8216     *++yyvsp = yylval;
8217    
8218    
8219     /* Shift the error token. */
8220     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8221    
8222     yystate = yyn;
8223     goto yynewstate;
8224    
8225    
8226     /*-------------------------------------.
8227     | yyacceptlab -- YYACCEPT comes here. |
8228     `-------------------------------------*/
8229     yyacceptlab:
8230     yyresult = 0;
8231     goto yyreturn;
8232    
8233     /*-----------------------------------.
8234     | yyabortlab -- YYABORT comes here. |
8235     `-----------------------------------*/
8236     yyabortlab:
8237     yyresult = 1;
8238     goto yyreturn;
8239    
8240 michael 967 #if !defined(yyoverflow) || YYERROR_VERBOSE
8241 michael 913 /*-------------------------------------------------.
8242     | yyexhaustedlab -- memory exhaustion comes here. |
8243     `-------------------------------------------------*/
8244     yyexhaustedlab:
8245     yyerror (YY_("memory exhausted"));
8246     yyresult = 2;
8247     /* Fall through. */
8248     #endif
8249    
8250     yyreturn:
8251 michael 967 if (yychar != YYEMPTY)
8252 michael 913 yydestruct ("Cleanup: discarding lookahead",
8253     yytoken, &yylval);
8254     /* Do not reclaim the symbols of the rule which action triggered
8255     this YYABORT or YYACCEPT. */
8256     YYPOPSTACK (yylen);
8257     YY_STACK_PRINT (yyss, yyssp);
8258     while (yyssp != yyss)
8259     {
8260     yydestruct ("Cleanup: popping",
8261     yystos[*yyssp], yyvsp);
8262     YYPOPSTACK (1);
8263     }
8264     #ifndef yyoverflow
8265     if (yyss != yyssa)
8266     YYSTACK_FREE (yyss);
8267     #endif
8268     #if YYERROR_VERBOSE
8269     if (yymsg != yymsgbuf)
8270     YYSTACK_FREE (yymsg);
8271     #endif
8272     /* Make sure YYID is used. */
8273     return YYID (yyresult);
8274     }
8275    
8276    
8277    

Properties

Name Value
svn:eol-style native