ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1103
Committed: Wed Aug 18 22:18:47 2010 UTC (13 years, 8 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 243289 byte(s)
Log Message:
- rebuild parser

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

Properties

Name Value
svn:eol-style native