ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-8/src/conf_parser.c
Revision: 1156
Committed: Tue Aug 9 20:29:20 2011 UTC (14 years ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/ircd_parser.c
File size: 245537 byte(s)
Log Message:
- create ircd-hybrid-8 "branch"

File Contents

# User Rev Content
1 michael 1133 /* A Bison parser, made by GNU Bison 2.5. */
2 michael 913
3 michael 1133 /* Bison implementation for Yacc-like parsers in C
4 michael 967
5 michael 1133 Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
6 michael 967
7     This program is free software: you can redistribute it and/or modify
8 michael 913 it under the terms of the GNU General Public License as published by
9 michael 967 the Free Software Foundation, either version 3 of the License, or
10     (at your option) any later version.
11    
12 michael 913 This program is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15     GNU General Public License for more details.
16 michael 967
17 michael 913 You should have received a copy of the GNU General Public License
18 michael 967 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 michael 913
20     /* As a special exception, you may create a larger work that contains
21     part or all of the Bison parser skeleton and distribute that work
22     under terms of your choice, so long as that work isn't itself a
23     parser generator using the skeleton or a modified version thereof
24     as a parser skeleton. Alternatively, if you modify or redistribute
25     the parser skeleton itself, you may (at your option) remove this
26     special exception, which will cause the skeleton and the resulting
27     Bison output files to be licensed under the GNU General Public
28     License without this special exception.
29 michael 967
30 michael 913 This special exception was added by the Free Software Foundation in
31     version 2.2 of Bison. */
32    
33     /* C LALR(1) parser skeleton written by Richard Stallman, by
34     simplifying the original so-called "semantic" parser. */
35    
36     /* All symbols defined below should begin with yy or YY, to avoid
37     infringing on user name space. This should be done even for local
38     variables, as they might otherwise be expanded by user macros.
39     There are some unavoidable exceptions within include files to
40     define necessary library symbols; they are noted "INFRINGES ON
41     USER NAME SPACE" below. */
42    
43     /* Identify Bison output. */
44     #define YYBISON 1
45    
46     /* Bison version. */
47 michael 1133 #define YYBISON_VERSION "2.5"
48 michael 913
49     /* Skeleton name. */
50     #define YYSKELETON_NAME "yacc.c"
51    
52     /* Pure parsers. */
53     #define YYPURE 0
54    
55 michael 967 /* Push parsers. */
56     #define YYPUSH 0
57    
58     /* Pull parsers. */
59     #define YYPULL 1
60    
61 michael 913 /* Using locations. */
62     #define YYLSP_NEEDED 0
63    
64    
65    
66 michael 967 /* Copy the first part of user declarations. */
67    
68 michael 1133 /* Line 268 of yacc.c */
69 michael 967 #line 25 "ircd_parser.y"
70    
71    
72     #define YY_NO_UNPUT
73     #include <sys/types.h>
74     #include <string.h>
75    
76 michael 1009 #include "config.h"
77 michael 967 #include "stdinc.h"
78     #include "ircd.h"
79     #include "list.h"
80     #include "s_conf.h"
81     #include "event.h"
82     #include "s_log.h"
83     #include "client.h" /* for UMODE_ALL only */
84     #include "irc_string.h"
85     #include "sprintf_irc.h"
86     #include "memory.h"
87     #include "modules.h"
88     #include "s_serv.h"
89     #include "hostmask.h"
90     #include "send.h"
91     #include "listener.h"
92     #include "resv.h"
93     #include "numeric.h"
94     #include "s_user.h"
95    
96     #ifdef HAVE_LIBCRYPTO
97     #include <openssl/rsa.h>
98     #include <openssl/bio.h>
99     #include <openssl/pem.h>
100     #endif
101    
102     static char *class_name = NULL;
103     static struct ConfItem *yy_conf = NULL;
104     static struct AccessItem *yy_aconf = NULL;
105     static struct MatchItem *yy_match_item = NULL;
106     static struct ClassItem *yy_class = NULL;
107     static char *yy_class_name = NULL;
108    
109     static dlink_list col_conf_list = { NULL, NULL, 0 };
110     static dlink_list hub_conf_list = { NULL, NULL, 0 };
111     static dlink_list leaf_conf_list = { NULL, NULL, 0 };
112     static unsigned int listener_flags = 0;
113     static unsigned int regex_ban = 0;
114     static char userbuf[IRCD_BUFSIZE];
115     static char hostbuf[IRCD_BUFSIZE];
116     static char reasonbuf[REASONLEN + 1];
117     static char gecos_name[REALLEN * 4];
118    
119     static char *resv_reason = NULL;
120     static char *listener_address = NULL;
121     static int not_atom = 0;
122    
123     struct CollectItem
124     {
125     dlink_node node;
126     char *name;
127     char *user;
128     char *host;
129     char *passwd;
130     int port;
131     int flags;
132     #ifdef HAVE_LIBCRYPTO
133     char *rsa_public_key_file;
134     RSA *rsa_public_key;
135     #endif
136     };
137    
138     static void
139     free_collect_item(struct CollectItem *item)
140     {
141     MyFree(item->name);
142     MyFree(item->user);
143     MyFree(item->host);
144     MyFree(item->passwd);
145     #ifdef HAVE_LIBCRYPTO
146     MyFree(item->rsa_public_key_file);
147     #endif
148     MyFree(item);
149     }
150    
151     static void
152     unhook_hub_leaf_confs(void)
153     {
154     dlink_node *ptr;
155     dlink_node *next_ptr;
156     struct CollectItem *yy_hconf;
157     struct CollectItem *yy_lconf;
158    
159     DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
160     {
161     yy_hconf = ptr->data;
162     dlinkDelete(&yy_hconf->node, &hub_conf_list);
163     free_collect_item(yy_hconf);
164     }
165    
166     DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
167     {
168     yy_lconf = ptr->data;
169     dlinkDelete(&yy_lconf->node, &leaf_conf_list);
170     free_collect_item(yy_lconf);
171     }
172     }
173    
174    
175    
176 michael 1133 /* Line 268 of yacc.c */
177     #line 178 "ircd_parser.c"
178 michael 967
179     /* Enabling traces. */
180     #ifndef YYDEBUG
181     # define YYDEBUG 0
182     #endif
183    
184     /* Enabling verbose error messages. */
185     #ifdef YYERROR_VERBOSE
186     # undef YYERROR_VERBOSE
187     # define YYERROR_VERBOSE 1
188     #else
189     # define YYERROR_VERBOSE 0
190     #endif
191    
192     /* Enabling the token table. */
193     #ifndef YYTOKEN_TABLE
194     # define YYTOKEN_TABLE 0
195     #endif
196    
197    
198 michael 913 /* Tokens. */
199     #ifndef YYTOKENTYPE
200     # define YYTOKENTYPE
201     /* Put the tokens into the symbol table, so that GDB and other debuggers
202     know about them. */
203     enum yytokentype {
204     ACCEPT_PASSWORD = 258,
205     ACTION = 259,
206     ADMIN = 260,
207     AFTYPE = 261,
208     T_ALLOW = 262,
209     ANTI_NICK_FLOOD = 263,
210     ANTI_SPAM_EXIT_MESSAGE_TIME = 264,
211     AUTOCONN = 265,
212     T_BLOCK = 266,
213     BURST_AWAY = 267,
214     BURST_TOPICWHO = 268,
215     BYTES = 269,
216     KBYTES = 270,
217     MBYTES = 271,
218     GBYTES = 272,
219     TBYTES = 273,
220     CALLER_ID_WAIT = 274,
221     CAN_FLOOD = 275,
222     CAN_IDLE = 276,
223     CHANNEL = 277,
224     CIDR_BITLEN_IPV4 = 278,
225     CIDR_BITLEN_IPV6 = 279,
226     CIPHER_PREFERENCE = 280,
227     CLASS = 281,
228     COMPRESSED = 282,
229     COMPRESSION_LEVEL = 283,
230     CONNECT = 284,
231     CONNECTFREQ = 285,
232     CRYPTLINK = 286,
233     DEFAULT_CIPHER_PREFERENCE = 287,
234     DEFAULT_FLOODCOUNT = 288,
235     DEFAULT_SPLIT_SERVER_COUNT = 289,
236     DEFAULT_SPLIT_USER_COUNT = 290,
237     DENY = 291,
238     DESCRIPTION = 292,
239     DIE = 293,
240     DISABLE_AUTH = 294,
241     DISABLE_FAKE_CHANNELS = 295,
242     DISABLE_HIDDEN = 296,
243     DISABLE_LOCAL_CHANNELS = 297,
244     DISABLE_REMOTE_COMMANDS = 298,
245 michael 1072 DOTS_IN_IDENT = 299,
246     DURATION = 300,
247     EGDPOOL_PATH = 301,
248     EMAIL = 302,
249     ENABLE = 303,
250     ENCRYPTED = 304,
251     EXCEED_LIMIT = 305,
252     EXEMPT = 306,
253     FAILED_OPER_NOTICE = 307,
254 michael 1118 IRCD_FLAGS = 308,
255     FLATTEN_LINKS = 309,
256     FFAILED_OPERLOG = 310,
257     FKILLLOG = 311,
258     FKLINELOG = 312,
259     FGLINELOG = 313,
260     FIOERRLOG = 314,
261     FOPERLOG = 315,
262     FOPERSPYLOG = 316,
263     FUSERLOG = 317,
264     GECOS = 318,
265     GENERAL = 319,
266     GLINE = 320,
267     GLINES = 321,
268     GLINE_EXEMPT = 322,
269     GLINE_LOG = 323,
270     GLINE_TIME = 324,
271     GLINE_MIN_CIDR = 325,
272     GLINE_MIN_CIDR6 = 326,
273     GLOBAL_KILL = 327,
274     IRCD_AUTH = 328,
275     NEED_IDENT = 329,
276     HAVENT_READ_CONF = 330,
277     HIDDEN = 331,
278     HIDDEN_ADMIN = 332,
279     HIDDEN_NAME = 333,
280     HIDDEN_OPER = 334,
281     HIDE_SERVER_IPS = 335,
282     HIDE_SERVERS = 336,
283     HIDE_SPOOF_IPS = 337,
284     HOST = 338,
285     HUB = 339,
286     HUB_MASK = 340,
287     IDLETIME = 341,
288     IGNORE_BOGUS_TS = 342,
289     INVISIBLE_ON_CONNECT = 343,
290     IP = 344,
291     KILL = 345,
292     KILL_CHASE_TIME_LIMIT = 346,
293     KLINE = 347,
294     KLINE_EXEMPT = 348,
295     KLINE_REASON = 349,
296     KLINE_WITH_REASON = 350,
297     KNOCK_DELAY = 351,
298     KNOCK_DELAY_CHANNEL = 352,
299     LEAF_MASK = 353,
300     LINKS_DELAY = 354,
301     LISTEN = 355,
302     T_LOG = 356,
303     LOGGING = 357,
304     LOG_LEVEL = 358,
305     MAX_ACCEPT = 359,
306     MAX_BANS = 360,
307     MAX_CHANS_PER_USER = 361,
308     MAX_GLOBAL = 362,
309     MAX_IDENT = 363,
310     MAX_LOCAL = 364,
311     MAX_NICK_CHANGES = 365,
312     MAX_NICK_TIME = 366,
313     MAX_NUMBER = 367,
314     MAX_TARGETS = 368,
315     MAX_WATCH = 369,
316     MESSAGE_LOCALE = 370,
317     MIN_NONWILDCARD = 371,
318     MIN_NONWILDCARD_SIMPLE = 372,
319     MODULE = 373,
320     MODULES = 374,
321     NAME = 375,
322     NEED_PASSWORD = 376,
323     NETWORK_DESC = 377,
324     NETWORK_NAME = 378,
325     NICK = 379,
326     NICK_CHANGES = 380,
327     NO_CREATE_ON_SPLIT = 381,
328     NO_JOIN_ON_SPLIT = 382,
329     NO_OPER_FLOOD = 383,
330     NO_TILDE = 384,
331     NOT = 385,
332     NUMBER = 386,
333     NUMBER_PER_IDENT = 387,
334     NUMBER_PER_CIDR = 388,
335     NUMBER_PER_IP = 389,
336     NUMBER_PER_IP_GLOBAL = 390,
337     OPERATOR = 391,
338     OPERS_BYPASS_CALLERID = 392,
339     OPER_LOG = 393,
340     OPER_ONLY_UMODES = 394,
341     OPER_PASS_RESV = 395,
342     OPER_SPY_T = 396,
343     OPER_UMODES = 397,
344     JOIN_FLOOD_COUNT = 398,
345     JOIN_FLOOD_TIME = 399,
346     PACE_WAIT = 400,
347     PACE_WAIT_SIMPLE = 401,
348     PASSWORD = 402,
349     PATH = 403,
350     PING_COOKIE = 404,
351     PING_TIME = 405,
352     PING_WARNING = 406,
353     PORT = 407,
354     QSTRING = 408,
355     QUIET_ON_BAN = 409,
356     REASON = 410,
357     REDIRPORT = 411,
358     REDIRSERV = 412,
359     REGEX_T = 413,
360     REHASH = 414,
361     TREJECT_HOLD_TIME = 415,
362     REMOTE = 416,
363     REMOTEBAN = 417,
364     RESTRICT_CHANNELS = 418,
365     RESTRICTED = 419,
366     RSA_PRIVATE_KEY_FILE = 420,
367     RSA_PUBLIC_KEY_FILE = 421,
368     SSL_CERTIFICATE_FILE = 422,
369     T_SSL_CONNECTION_METHOD = 423,
370     T_SSLV3 = 424,
371     T_TLSV1 = 425,
372     RESV = 426,
373     RESV_EXEMPT = 427,
374     SECONDS = 428,
375     MINUTES = 429,
376     HOURS = 430,
377     DAYS = 431,
378     WEEKS = 432,
379     SENDQ = 433,
380     SEND_PASSWORD = 434,
381     SERVERHIDE = 435,
382     SERVERINFO = 436,
383     SERVLINK_PATH = 437,
384     IRCD_SID = 438,
385     TKLINE_EXPIRE_NOTICES = 439,
386     T_SHARED = 440,
387     T_CLUSTER = 441,
388     TYPE = 442,
389     SHORT_MOTD = 443,
390     SILENT = 444,
391     SPOOF = 445,
392     SPOOF_NOTICE = 446,
393     STATS_E_DISABLED = 447,
394     STATS_I_OPER_ONLY = 448,
395     STATS_K_OPER_ONLY = 449,
396     STATS_O_OPER_ONLY = 450,
397     STATS_P_OPER_ONLY = 451,
398     TBOOL = 452,
399     TMASKED = 453,
400     T_REJECT = 454,
401     TS_MAX_DELTA = 455,
402     TS_WARN_DELTA = 456,
403     TWODOTS = 457,
404     T_ALL = 458,
405     T_BOTS = 459,
406     T_SOFTCALLERID = 460,
407     T_CALLERID = 461,
408     T_CCONN = 462,
409     T_CCONN_FULL = 463,
410     T_CLIENT_FLOOD = 464,
411     T_DEAF = 465,
412     T_DEBUG = 466,
413     T_DRONE = 467,
414     T_EXTERNAL = 468,
415     T_FULL = 469,
416     T_INVISIBLE = 470,
417     T_IPV4 = 471,
418     T_IPV6 = 472,
419     T_LOCOPS = 473,
420     T_LOGPATH = 474,
421     T_L_CRIT = 475,
422     T_L_DEBUG = 476,
423     T_L_ERROR = 477,
424     T_L_INFO = 478,
425     T_L_NOTICE = 479,
426     T_L_TRACE = 480,
427     T_L_WARN = 481,
428     T_MAX_CLIENTS = 482,
429     T_NCHANGE = 483,
430     T_OPERWALL = 484,
431     T_REJ = 485,
432     T_SERVER = 486,
433     T_SERVNOTICE = 487,
434     T_SKILL = 488,
435     T_SPY = 489,
436     T_SSL = 490,
437     T_UMODES = 491,
438     T_UNAUTH = 492,
439     T_UNRESV = 493,
440     T_UNXLINE = 494,
441     T_WALLOP = 495,
442     THROTTLE_TIME = 496,
443     TOPICBURST = 497,
444     TRUE_NO_OPER_FLOOD = 498,
445     TKLINE = 499,
446     TXLINE = 500,
447     TRESV = 501,
448     UNKLINE = 502,
449     USER = 503,
450     USE_EGD = 504,
451     USE_EXCEPT = 505,
452     USE_INVEX = 506,
453     USE_KNOCK = 507,
454     USE_LOGGING = 508,
455     USE_WHOIS_ACTUALLY = 509,
456     VHOST = 510,
457     VHOST6 = 511,
458     XLINE = 512,
459     WARN = 513,
460     WARN_NO_NLINE = 514
461 michael 913 };
462     #endif
463     /* Tokens. */
464     #define ACCEPT_PASSWORD 258
465     #define ACTION 259
466     #define ADMIN 260
467     #define AFTYPE 261
468     #define T_ALLOW 262
469     #define ANTI_NICK_FLOOD 263
470     #define ANTI_SPAM_EXIT_MESSAGE_TIME 264
471     #define AUTOCONN 265
472     #define T_BLOCK 266
473     #define BURST_AWAY 267
474     #define BURST_TOPICWHO 268
475     #define BYTES 269
476     #define KBYTES 270
477     #define MBYTES 271
478     #define GBYTES 272
479     #define TBYTES 273
480     #define CALLER_ID_WAIT 274
481     #define CAN_FLOOD 275
482     #define CAN_IDLE 276
483     #define CHANNEL 277
484     #define CIDR_BITLEN_IPV4 278
485     #define CIDR_BITLEN_IPV6 279
486     #define CIPHER_PREFERENCE 280
487     #define CLASS 281
488     #define COMPRESSED 282
489     #define COMPRESSION_LEVEL 283
490     #define CONNECT 284
491     #define CONNECTFREQ 285
492     #define CRYPTLINK 286
493     #define DEFAULT_CIPHER_PREFERENCE 287
494     #define DEFAULT_FLOODCOUNT 288
495     #define DEFAULT_SPLIT_SERVER_COUNT 289
496     #define DEFAULT_SPLIT_USER_COUNT 290
497     #define DENY 291
498     #define DESCRIPTION 292
499     #define DIE 293
500     #define DISABLE_AUTH 294
501     #define DISABLE_FAKE_CHANNELS 295
502     #define DISABLE_HIDDEN 296
503     #define DISABLE_LOCAL_CHANNELS 297
504     #define DISABLE_REMOTE_COMMANDS 298
505 michael 1072 #define DOTS_IN_IDENT 299
506     #define DURATION 300
507     #define EGDPOOL_PATH 301
508     #define EMAIL 302
509     #define ENABLE 303
510     #define ENCRYPTED 304
511     #define EXCEED_LIMIT 305
512     #define EXEMPT 306
513     #define FAILED_OPER_NOTICE 307
514 michael 1118 #define IRCD_FLAGS 308
515     #define FLATTEN_LINKS 309
516     #define FFAILED_OPERLOG 310
517     #define FKILLLOG 311
518     #define FKLINELOG 312
519     #define FGLINELOG 313
520     #define FIOERRLOG 314
521     #define FOPERLOG 315
522     #define FOPERSPYLOG 316
523     #define FUSERLOG 317
524     #define GECOS 318
525     #define GENERAL 319
526     #define GLINE 320
527     #define GLINES 321
528     #define GLINE_EXEMPT 322
529     #define GLINE_LOG 323
530     #define GLINE_TIME 324
531     #define GLINE_MIN_CIDR 325
532     #define GLINE_MIN_CIDR6 326
533     #define GLOBAL_KILL 327
534     #define IRCD_AUTH 328
535     #define NEED_IDENT 329
536     #define HAVENT_READ_CONF 330
537     #define HIDDEN 331
538     #define HIDDEN_ADMIN 332
539     #define HIDDEN_NAME 333
540     #define HIDDEN_OPER 334
541     #define HIDE_SERVER_IPS 335
542     #define HIDE_SERVERS 336
543     #define HIDE_SPOOF_IPS 337
544     #define HOST 338
545     #define HUB 339
546     #define HUB_MASK 340
547     #define IDLETIME 341
548     #define IGNORE_BOGUS_TS 342
549     #define INVISIBLE_ON_CONNECT 343
550     #define IP 344
551     #define KILL 345
552     #define KILL_CHASE_TIME_LIMIT 346
553     #define KLINE 347
554     #define KLINE_EXEMPT 348
555     #define KLINE_REASON 349
556     #define KLINE_WITH_REASON 350
557     #define KNOCK_DELAY 351
558     #define KNOCK_DELAY_CHANNEL 352
559     #define LEAF_MASK 353
560     #define LINKS_DELAY 354
561     #define LISTEN 355
562     #define T_LOG 356
563     #define LOGGING 357
564     #define LOG_LEVEL 358
565     #define MAX_ACCEPT 359
566     #define MAX_BANS 360
567     #define MAX_CHANS_PER_USER 361
568     #define MAX_GLOBAL 362
569     #define MAX_IDENT 363
570     #define MAX_LOCAL 364
571     #define MAX_NICK_CHANGES 365
572     #define MAX_NICK_TIME 366
573     #define MAX_NUMBER 367
574     #define MAX_TARGETS 368
575     #define MAX_WATCH 369
576     #define MESSAGE_LOCALE 370
577     #define MIN_NONWILDCARD 371
578     #define MIN_NONWILDCARD_SIMPLE 372
579     #define MODULE 373
580     #define MODULES 374
581     #define NAME 375
582     #define NEED_PASSWORD 376
583     #define NETWORK_DESC 377
584     #define NETWORK_NAME 378
585     #define NICK 379
586     #define NICK_CHANGES 380
587     #define NO_CREATE_ON_SPLIT 381
588     #define NO_JOIN_ON_SPLIT 382
589     #define NO_OPER_FLOOD 383
590     #define NO_TILDE 384
591     #define NOT 385
592     #define NUMBER 386
593     #define NUMBER_PER_IDENT 387
594     #define NUMBER_PER_CIDR 388
595     #define NUMBER_PER_IP 389
596     #define NUMBER_PER_IP_GLOBAL 390
597     #define OPERATOR 391
598     #define OPERS_BYPASS_CALLERID 392
599     #define OPER_LOG 393
600     #define OPER_ONLY_UMODES 394
601     #define OPER_PASS_RESV 395
602     #define OPER_SPY_T 396
603     #define OPER_UMODES 397
604     #define JOIN_FLOOD_COUNT 398
605     #define JOIN_FLOOD_TIME 399
606     #define PACE_WAIT 400
607     #define PACE_WAIT_SIMPLE 401
608     #define PASSWORD 402
609     #define PATH 403
610     #define PING_COOKIE 404
611     #define PING_TIME 405
612     #define PING_WARNING 406
613     #define PORT 407
614     #define QSTRING 408
615     #define QUIET_ON_BAN 409
616     #define REASON 410
617     #define REDIRPORT 411
618     #define REDIRSERV 412
619     #define REGEX_T 413
620     #define REHASH 414
621     #define TREJECT_HOLD_TIME 415
622     #define REMOTE 416
623     #define REMOTEBAN 417
624     #define RESTRICT_CHANNELS 418
625     #define RESTRICTED 419
626     #define RSA_PRIVATE_KEY_FILE 420
627     #define RSA_PUBLIC_KEY_FILE 421
628     #define SSL_CERTIFICATE_FILE 422
629     #define T_SSL_CONNECTION_METHOD 423
630     #define T_SSLV3 424
631     #define T_TLSV1 425
632     #define RESV 426
633     #define RESV_EXEMPT 427
634     #define SECONDS 428
635     #define MINUTES 429
636     #define HOURS 430
637     #define DAYS 431
638     #define WEEKS 432
639     #define SENDQ 433
640     #define SEND_PASSWORD 434
641     #define SERVERHIDE 435
642     #define SERVERINFO 436
643     #define SERVLINK_PATH 437
644     #define IRCD_SID 438
645     #define TKLINE_EXPIRE_NOTICES 439
646     #define T_SHARED 440
647     #define T_CLUSTER 441
648     #define TYPE 442
649     #define SHORT_MOTD 443
650     #define SILENT 444
651     #define SPOOF 445
652     #define SPOOF_NOTICE 446
653     #define STATS_E_DISABLED 447
654     #define STATS_I_OPER_ONLY 448
655     #define STATS_K_OPER_ONLY 449
656     #define STATS_O_OPER_ONLY 450
657     #define STATS_P_OPER_ONLY 451
658     #define TBOOL 452
659     #define TMASKED 453
660     #define T_REJECT 454
661     #define TS_MAX_DELTA 455
662     #define TS_WARN_DELTA 456
663     #define TWODOTS 457
664     #define T_ALL 458
665     #define T_BOTS 459
666     #define T_SOFTCALLERID 460
667     #define T_CALLERID 461
668     #define T_CCONN 462
669     #define T_CCONN_FULL 463
670     #define T_CLIENT_FLOOD 464
671     #define T_DEAF 465
672     #define T_DEBUG 466
673     #define T_DRONE 467
674     #define T_EXTERNAL 468
675     #define T_FULL 469
676     #define T_INVISIBLE 470
677     #define T_IPV4 471
678     #define T_IPV6 472
679     #define T_LOCOPS 473
680     #define T_LOGPATH 474
681     #define T_L_CRIT 475
682     #define T_L_DEBUG 476
683     #define T_L_ERROR 477
684     #define T_L_INFO 478
685     #define T_L_NOTICE 479
686     #define T_L_TRACE 480
687     #define T_L_WARN 481
688     #define T_MAX_CLIENTS 482
689     #define T_NCHANGE 483
690     #define T_OPERWALL 484
691     #define T_REJ 485
692     #define T_SERVER 486
693     #define T_SERVNOTICE 487
694     #define T_SKILL 488
695     #define T_SPY 489
696     #define T_SSL 490
697     #define T_UMODES 491
698     #define T_UNAUTH 492
699     #define T_UNRESV 493
700     #define T_UNXLINE 494
701     #define T_WALLOP 495
702     #define THROTTLE_TIME 496
703     #define TOPICBURST 497
704     #define TRUE_NO_OPER_FLOOD 498
705     #define TKLINE 499
706     #define TXLINE 500
707     #define TRESV 501
708     #define UNKLINE 502
709     #define USER 503
710     #define USE_EGD 504
711     #define USE_EXCEPT 505
712     #define USE_INVEX 506
713     #define USE_KNOCK 507
714     #define USE_LOGGING 508
715     #define USE_WHOIS_ACTUALLY 509
716     #define VHOST 510
717     #define VHOST6 511
718     #define XLINE 512
719     #define WARN 513
720     #define WARN_NO_NLINE 514
721 michael 913
722    
723    
724    
725 michael 967 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
726     typedef union YYSTYPE
727 michael 913 {
728    
729 michael 1133 /* Line 293 of yacc.c */
730 michael 1123 #line 131 "ircd_parser.y"
731 michael 913
732 michael 967 int number;
733     char *string;
734 michael 913
735    
736    
737 michael 1133 /* Line 293 of yacc.c */
738     #line 739 "ircd_parser.c"
739 michael 967 } YYSTYPE;
740     # define YYSTYPE_IS_TRIVIAL 1
741 michael 913 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
742     # define YYSTYPE_IS_DECLARED 1
743     #endif
744    
745    
746     /* Copy the second part of user declarations. */
747    
748    
749 michael 1133 /* Line 343 of yacc.c */
750     #line 751 "ircd_parser.c"
751 michael 913
752     #ifdef short
753     # undef short
754     #endif
755    
756     #ifdef YYTYPE_UINT8
757     typedef YYTYPE_UINT8 yytype_uint8;
758     #else
759     typedef unsigned char yytype_uint8;
760     #endif
761    
762     #ifdef YYTYPE_INT8
763     typedef YYTYPE_INT8 yytype_int8;
764     #elif (defined __STDC__ || defined __C99__FUNC__ \
765     || defined __cplusplus || defined _MSC_VER)
766     typedef signed char yytype_int8;
767     #else
768     typedef short int yytype_int8;
769     #endif
770    
771     #ifdef YYTYPE_UINT16
772     typedef YYTYPE_UINT16 yytype_uint16;
773     #else
774     typedef unsigned short int yytype_uint16;
775     #endif
776    
777     #ifdef YYTYPE_INT16
778     typedef YYTYPE_INT16 yytype_int16;
779     #else
780     typedef short int yytype_int16;
781     #endif
782    
783     #ifndef YYSIZE_T
784     # ifdef __SIZE_TYPE__
785     # define YYSIZE_T __SIZE_TYPE__
786     # elif defined size_t
787     # define YYSIZE_T size_t
788     # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
789     || defined __cplusplus || defined _MSC_VER)
790     # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
791     # define YYSIZE_T size_t
792     # else
793     # define YYSIZE_T unsigned int
794     # endif
795     #endif
796    
797     #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
798    
799     #ifndef YY_
800 michael 1089 # if defined YYENABLE_NLS && YYENABLE_NLS
801 michael 913 # if ENABLE_NLS
802     # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
803     # define YY_(msgid) dgettext ("bison-runtime", msgid)
804     # endif
805     # endif
806     # ifndef YY_
807     # define YY_(msgid) msgid
808     # endif
809     #endif
810    
811     /* Suppress unused-variable warnings by "using" E. */
812     #if ! defined lint || defined __GNUC__
813     # define YYUSE(e) ((void) (e))
814     #else
815     # define YYUSE(e) /* empty */
816     #endif
817    
818     /* Identity function, used to suppress warnings about constant conditions. */
819     #ifndef lint
820     # define YYID(n) (n)
821     #else
822     #if (defined __STDC__ || defined __C99__FUNC__ \
823     || defined __cplusplus || defined _MSC_VER)
824     static int
825 michael 967 YYID (int yyi)
826 michael 913 #else
827     static int
828 michael 967 YYID (yyi)
829     int yyi;
830 michael 913 #endif
831     {
832 michael 967 return yyi;
833 michael 913 }
834     #endif
835    
836     #if ! defined yyoverflow || YYERROR_VERBOSE
837    
838     /* The parser invokes alloca or malloc; define the necessary symbols. */
839    
840     # ifdef YYSTACK_USE_ALLOCA
841     # if YYSTACK_USE_ALLOCA
842     # ifdef __GNUC__
843     # define YYSTACK_ALLOC __builtin_alloca
844     # elif defined __BUILTIN_VA_ARG_INCR
845     # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
846     # elif defined _AIX
847     # define YYSTACK_ALLOC __alloca
848     # elif defined _MSC_VER
849     # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
850     # define alloca _alloca
851     # else
852     # define YYSTACK_ALLOC alloca
853 michael 1133 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
854 michael 913 || defined __cplusplus || defined _MSC_VER)
855     # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
856 michael 1133 # ifndef EXIT_SUCCESS
857     # define EXIT_SUCCESS 0
858 michael 913 # endif
859     # endif
860     # endif
861     # endif
862     # endif
863    
864     # ifdef YYSTACK_ALLOC
865     /* Pacify GCC's `empty if-body' warning. */
866     # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
867     # ifndef YYSTACK_ALLOC_MAXIMUM
868     /* The OS might guarantee only one guard page at the bottom of the stack,
869     and a page size can be as small as 4096 bytes. So we cannot safely
870     invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
871     to allow for a few compiler-allocated temporary stack slots. */
872     # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
873     # endif
874     # else
875     # define YYSTACK_ALLOC YYMALLOC
876     # define YYSTACK_FREE YYFREE
877     # ifndef YYSTACK_ALLOC_MAXIMUM
878     # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
879     # endif
880 michael 1133 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
881 michael 913 && ! ((defined YYMALLOC || defined malloc) \
882     && (defined YYFREE || defined free)))
883     # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
884 michael 1133 # ifndef EXIT_SUCCESS
885     # define EXIT_SUCCESS 0
886 michael 913 # endif
887     # endif
888     # ifndef YYMALLOC
889     # define YYMALLOC malloc
890 michael 1133 # if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
891 michael 913 || defined __cplusplus || defined _MSC_VER)
892     void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
893     # endif
894     # endif
895     # ifndef YYFREE
896     # define YYFREE free
897 michael 1133 # if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
898 michael 913 || defined __cplusplus || defined _MSC_VER)
899     void free (void *); /* INFRINGES ON USER NAME SPACE */
900     # endif
901     # endif
902     # endif
903     #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
904    
905    
906     #if (! defined yyoverflow \
907     && (! defined __cplusplus \
908     || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
909    
910     /* A type that is properly aligned for any stack member. */
911     union yyalloc
912     {
913 michael 967 yytype_int16 yyss_alloc;
914     YYSTYPE yyvs_alloc;
915     };
916 michael 913
917     /* The size of the maximum gap between one aligned stack and the next. */
918     # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
919    
920     /* The size of an array large to enough to hold all stacks, each with
921     N elements. */
922     # define YYSTACK_BYTES(N) \
923     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
924     + YYSTACK_GAP_MAXIMUM)
925    
926 michael 1133 # define YYCOPY_NEEDED 1
927 michael 913
928     /* Relocate STACK from its old location to the new one. The
929     local variables YYSIZE and YYSTACKSIZE give the old and new number of
930     elements in the stack, and YYPTR gives the new location of the
931     stack. Advance YYPTR to a properly aligned location for the next
932     stack. */
933 michael 967 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
934 michael 913 do \
935     { \
936     YYSIZE_T yynewbytes; \
937 michael 967 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
938     Stack = &yyptr->Stack_alloc; \
939 michael 913 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
940     yyptr += yynewbytes / sizeof (*yyptr); \
941     } \
942     while (YYID (0))
943    
944     #endif
945    
946 michael 1133 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
947     /* Copy COUNT objects from FROM to TO. The source and destination do
948     not overlap. */
949     # ifndef YYCOPY
950     # if defined __GNUC__ && 1 < __GNUC__
951     # define YYCOPY(To, From, Count) \
952     __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
953     # else
954     # define YYCOPY(To, From, Count) \
955     do \
956     { \
957     YYSIZE_T yyi; \
958     for (yyi = 0; yyi < (Count); yyi++) \
959     (To)[yyi] = (From)[yyi]; \
960     } \
961     while (YYID (0))
962     # endif
963     # endif
964     #endif /* !YYCOPY_NEEDED */
965    
966 michael 913 /* YYFINAL -- State number of the termination state. */
967     #define YYFINAL 2
968     /* YYLAST -- Last index in YYTABLE. */
969 michael 1118 #define YYLAST 1258
970 michael 913
971     /* YYNTOKENS -- Number of terminals. */
972 michael 1118 #define YYNTOKENS 265
973 michael 913 /* YYNNTS -- Number of nonterminals. */
974 michael 1118 #define YYNNTS 318
975 michael 913 /* YYNRULES -- Number of rules. */
976 michael 1118 #define YYNRULES 687
977 michael 913 /* YYNRULES -- Number of states. */
978 michael 1118 #define YYNSTATES 1354
979 michael 913
980     /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
981     #define YYUNDEFTOK 2
982 michael 1118 #define YYMAXUTOK 514
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 1118 2, 2, 2, 2, 264, 2, 2, 2, 2, 2,
995     2, 2, 2, 2, 2, 2, 2, 2, 2, 260,
996     2, 263, 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 1118 2, 2, 2, 262, 2, 261, 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 1118 255, 256, 257, 258, 259
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 michael 1118 1077, 1082, 1084, 1089, 1094, 1099, 1104, 1109, 1114, 1119,
1087     1120, 1126, 1130, 1132, 1133, 1137, 1138, 1141, 1143, 1145,
1088     1147, 1149, 1151, 1156, 1161, 1166, 1171, 1176, 1181, 1182,
1089     1189, 1190, 1196, 1200, 1202, 1204, 1207, 1209, 1211, 1213,
1090     1215, 1217, 1222, 1227, 1228, 1235, 1238, 1240, 1242, 1244,
1091     1246, 1251, 1256, 1262, 1265, 1267, 1269, 1271, 1276, 1277,
1092     1284, 1285, 1291, 1295, 1297, 1299, 1302, 1304, 1306, 1308,
1093     1310, 1312, 1317, 1322, 1328, 1331, 1333, 1335, 1337, 1339,
1094     1341, 1343, 1345, 1347, 1349, 1351, 1353, 1355, 1357, 1359,
1095     1361, 1363, 1365, 1367, 1369, 1371, 1373, 1375, 1377, 1379,
1096     1381, 1383, 1385, 1387, 1389, 1391, 1393, 1395, 1397, 1399,
1097     1401, 1403, 1405, 1407, 1409, 1411, 1413, 1415, 1417, 1419,
1098     1421, 1423, 1425, 1427, 1429, 1431, 1433, 1435, 1437, 1439,
1099     1441, 1443, 1445, 1450, 1455, 1460, 1465, 1470, 1475, 1480,
1100     1485, 1490, 1495, 1500, 1505, 1510, 1515, 1520, 1525, 1530,
1101     1535, 1540, 1545, 1550, 1555, 1560, 1565, 1570, 1575, 1580,
1102     1585, 1590, 1595, 1600, 1605, 1610, 1615, 1620, 1625, 1630,
1103     1635, 1640, 1645, 1650, 1655, 1660, 1665, 1670, 1675, 1680,
1104     1685, 1690, 1695, 1700, 1701, 1707, 1711, 1713, 1715, 1717,
1105     1719, 1721, 1723, 1725, 1727, 1729, 1731, 1733, 1735, 1737,
1106     1739, 1741, 1743, 1745, 1747, 1749, 1751, 1752, 1758, 1762,
1107     1764, 1766, 1768, 1770, 1772, 1774, 1776, 1778, 1780, 1782,
1108     1784, 1786, 1788, 1790, 1792, 1794, 1796, 1798, 1800, 1802,
1109     1807, 1812, 1817, 1822, 1823, 1830, 1833, 1835, 1837, 1839,
1110     1841, 1843, 1845, 1847, 1849, 1854, 1859, 1860, 1866, 1870,
1111     1872, 1874, 1876, 1881, 1886, 1887, 1893, 1897, 1899, 1901,
1112     1903, 1909, 1912, 1914, 1916, 1918, 1920, 1922, 1924, 1926,
1113     1928, 1930, 1932, 1934, 1936, 1938, 1940, 1942, 1944, 1946,
1114     1948, 1950, 1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987,
1115     1992, 1997, 2002, 2007, 2012, 2017, 2022, 2027, 2032, 2037,
1116     2042, 2048, 2051, 2053, 2055, 2057, 2059, 2061, 2063, 2065,
1117     2067, 2069, 2074, 2079, 2084, 2089, 2094, 2099
1118 michael 913 };
1119    
1120     /* YYRHS -- A `-1'-separated list of the rules' RHS. */
1121     static const yytype_int16 yyrhs[] =
1122     {
1123 michael 1118 266, 0, -1, -1, 266, 267, -1, 295, -1, 301,
1124     -1, 316, -1, 552, -1, 339, -1, 358, -1, 372,
1125     -1, 277, -1, 573, -1, 390, -1, 397, -1, 407,
1126     -1, 416, -1, 442, -1, 452, -1, 458, -1, 472,
1127     -1, 536, -1, 462, -1, 272, -1, 1, 260, -1,
1128     1, 261, -1, -1, 269, -1, 131, 268, -1, 131,
1129     173, 268, -1, 131, 174, 268, -1, 131, 175, 268,
1130     -1, 131, 176, 268, -1, 131, 177, 268, -1, -1,
1131     271, -1, 131, 270, -1, 131, 14, 270, -1, 131,
1132     15, 270, -1, 131, 16, 270, -1, 119, 262, 273,
1133     261, 260, -1, 273, 274, -1, 274, -1, 275, -1,
1134     276, -1, 1, 260, -1, 118, 263, 153, 260, -1,
1135     148, 263, 153, 260, -1, 181, 262, 278, 261, 260,
1136     -1, 278, 279, -1, 279, -1, 286, -1, 291, -1,
1137     294, -1, 288, -1, 289, -1, 290, -1, 293, -1,
1138     285, -1, 292, -1, 287, -1, 284, -1, 280, -1,
1139     1, 260, -1, -1, 168, 281, 263, 282, 260, -1,
1140     282, 264, 283, -1, 283, -1, 169, -1, 170, -1,
1141     167, 263, 153, 260, -1, 165, 263, 153, 260, -1,
1142     120, 263, 153, 260, -1, 183, 263, 153, 260, -1,
1143     37, 263, 153, 260, -1, 123, 263, 153, 260, -1,
1144     122, 263, 153, 260, -1, 255, 263, 153, 260, -1,
1145     256, 263, 153, 260, -1, 227, 263, 131, 260, -1,
1146     84, 263, 197, 260, -1, 5, 262, 296, 261, 260,
1147     -1, 296, 297, -1, 297, -1, 298, -1, 300, -1,
1148     299, -1, 1, 260, -1, 120, 263, 153, 260, -1,
1149     47, 263, 153, 260, -1, 37, 263, 153, 260, -1,
1150     102, 262, 302, 261, 260, -1, 302, 303, -1, 303,
1151     -1, 304, -1, 305, -1, 314, -1, 315, -1, 306,
1152     -1, 308, -1, 310, -1, 311, -1, 313, -1, 309,
1153     -1, 312, -1, 307, -1, 1, 260, -1, 219, 263,
1154     153, 260, -1, 138, 263, 153, 260, -1, 62, 263,
1155     153, 260, -1, 55, 263, 153, 260, -1, 60, 263,
1156     153, 260, -1, 61, 263, 153, 260, -1, 58, 263,
1157     153, 260, -1, 57, 263, 153, 260, -1, 59, 263,
1158     153, 260, -1, 56, 263, 153, 260, -1, 103, 263,
1159     220, 260, -1, 103, 263, 222, 260, -1, 103, 263,
1160     226, 260, -1, 103, 263, 224, 260, -1, 103, 263,
1161     225, 260, -1, 103, 263, 223, 260, -1, 103, 263,
1162     221, 260, -1, 253, 263, 197, 260, -1, -1, 136,
1163     317, 318, 262, 319, 261, 260, -1, -1, 322, -1,
1164     319, 320, -1, 320, -1, 321, -1, 323, -1, 324,
1165     -1, 328, -1, 327, -1, 325, -1, 326, -1, 332,
1166     -1, 1, 260, -1, 120, 263, 153, 260, -1, 153,
1167     -1, 248, 263, 153, 260, -1, 147, 263, 153, 260,
1168     -1, 49, 263, 197, 260, -1, 166, 263, 153, 260,
1169     -1, 26, 263, 153, 260, -1, -1, 236, 329, 263,
1170     330, 260, -1, 330, 264, 331, -1, 331, -1, 204,
1171     -1, 207, -1, 208, -1, 210, -1, 211, -1, 214,
1172     -1, 233, -1, 228, -1, 230, -1, 237, -1, 234,
1173     -1, 213, -1, 229, -1, 232, -1, 215, -1, 240,
1174     -1, 205, -1, 206, -1, 218, -1, -1, 53, 333,
1175     263, 334, 260, -1, 334, 264, 335, -1, 335, -1,
1176     -1, 130, 336, 338, -1, -1, 337, 338, -1, 72,
1177     -1, 161, -1, 92, -1, 247, -1, 257, -1, 65,
1178     -1, 38, -1, 159, -1, 5, -1, 77, -1, 125,
1179     -1, 229, -1, 141, -1, 79, -1, 162, -1, 49,
1180     -1, -1, 26, 340, 341, 262, 342, 261, 260, -1,
1181     -1, 345, -1, 342, 343, -1, 343, -1, 344, -1,
1182     355, -1, 356, -1, 346, -1, 347, -1, 357, -1,
1183     348, -1, 349, -1, 350, -1, 351, -1, 352, -1,
1184     353, -1, 354, -1, 1, 260, -1, 120, 263, 153,
1185     260, -1, 153, -1, 150, 263, 269, 260, -1, 151,
1186     263, 269, 260, -1, 134, 263, 131, 260, -1, 30,
1187     263, 269, 260, -1, 112, 263, 131, 260, -1, 107,
1188     263, 131, 260, -1, 109, 263, 131, 260, -1, 108,
1189     263, 131, 260, -1, 178, 263, 271, 260, -1, 23,
1190     263, 131, 260, -1, 24, 263, 131, 260, -1, 133,
1191     263, 131, 260, -1, -1, 100, 359, 262, 364, 261,
1192     260, -1, -1, 53, 361, 263, 362, 260, -1, 362,
1193     264, 363, -1, 363, -1, 235, -1, 76, -1, 231,
1194     -1, 364, 365, -1, 365, -1, 366, -1, 360, -1,
1195     370, -1, 371, -1, 1, 260, -1, -1, 152, 263,
1196     368, 367, 260, -1, 368, 264, 369, -1, 369, -1,
1197     131, -1, 131, 202, 131, -1, 89, 263, 153, 260,
1198     -1, 83, 263, 153, 260, -1, -1, 73, 373, 262,
1199     374, 261, 260, -1, 374, 375, -1, 375, -1, 376,
1200     -1, 377, -1, 378, -1, 380, -1, 387, -1, 388,
1201     -1, 389, -1, 379, -1, 1, 260, -1, 248, 263,
1202     153, 260, -1, 147, 263, 153, 260, -1, 26, 263,
1203     153, 260, -1, 49, 263, 197, 260, -1, -1, 53,
1204     381, 263, 382, 260, -1, 382, 264, 383, -1, 383,
1205     -1, -1, 130, 384, 386, -1, -1, 385, 386, -1,
1206     191, -1, 50, -1, 93, -1, 74, -1, 20, -1,
1207     21, -1, 129, -1, 67, -1, 172, -1, 121, -1,
1208     190, 263, 153, 260, -1, 157, 263, 153, 260, -1,
1209     156, 263, 131, 260, -1, -1, 171, 391, 262, 392,
1210     261, 260, -1, 392, 393, -1, 393, -1, 394, -1,
1211     395, -1, 396, -1, 1, 260, -1, 155, 263, 153,
1212     260, -1, 22, 263, 153, 260, -1, 124, 263, 153,
1213     260, -1, -1, 185, 398, 262, 399, 261, 260, -1,
1214     399, 400, -1, 400, -1, 401, -1, 402, -1, 403,
1215     -1, 1, 260, -1, 120, 263, 153, 260, -1, 248,
1216     263, 153, 260, -1, -1, 187, 404, 263, 405, 260,
1217     -1, 405, 264, 406, -1, 406, -1, 92, -1, 244,
1218     -1, 247, -1, 257, -1, 245, -1, 239, -1, 171,
1219     -1, 246, -1, 238, -1, 218, -1, 203, -1, -1,
1220     186, 408, 262, 409, 261, 260, -1, 409, 410, -1,
1221     410, -1, 411, -1, 412, -1, 1, 260, -1, 120,
1222     263, 153, 260, -1, -1, 187, 413, 263, 414, 260,
1223     -1, 414, 264, 415, -1, 415, -1, 92, -1, 244,
1224     -1, 247, -1, 257, -1, 245, -1, 239, -1, 171,
1225     -1, 246, -1, 238, -1, 218, -1, 203, -1, -1,
1226     29, 417, 418, 262, 419, 261, 260, -1, -1, 422,
1227     -1, 419, 420, -1, 420, -1, 421, -1, 423, -1,
1228     424, -1, 425, -1, 426, -1, 428, -1, 427, -1,
1229     429, -1, 438, -1, 439, -1, 440, -1, 437, -1,
1230     436, -1, 441, -1, 1, 260, -1, 120, 263, 153,
1231     260, -1, 153, -1, 83, 263, 153, 260, -1, 255,
1232     263, 153, 260, -1, 179, 263, 153, 260, -1, 3,
1233     263, 153, 260, -1, 152, 263, 131, 260, -1, 6,
1234     263, 216, 260, -1, 6, 263, 217, 260, -1, -1,
1235     53, 430, 263, 431, 260, -1, 431, 264, 432, -1,
1236     432, -1, -1, 130, 433, 435, -1, -1, 434, 435,
1237     -1, 27, -1, 31, -1, 10, -1, 12, -1, 242,
1238     -1, 166, 263, 153, 260, -1, 49, 263, 197, 260,
1239     -1, 85, 263, 153, 260, -1, 98, 263, 153, 260,
1240     -1, 26, 263, 153, 260, -1, 25, 263, 153, 260,
1241     -1, -1, 90, 443, 262, 448, 261, 260, -1, -1,
1242     187, 445, 263, 446, 260, -1, 446, 264, 447, -1,
1243     447, -1, 158, -1, 448, 449, -1, 449, -1, 450,
1244     -1, 451, -1, 444, -1, 1, -1, 248, 263, 153,
1245     260, -1, 155, 263, 153, 260, -1, -1, 36, 453,
1246     262, 454, 261, 260, -1, 454, 455, -1, 455, -1,
1247     456, -1, 457, -1, 1, -1, 89, 263, 153, 260,
1248     -1, 155, 263, 153, 260, -1, 51, 262, 459, 261,
1249     260, -1, 459, 460, -1, 460, -1, 461, -1, 1,
1250     -1, 89, 263, 153, 260, -1, -1, 63, 463, 262,
1251     468, 261, 260, -1, -1, 187, 465, 263, 466, 260,
1252     -1, 466, 264, 467, -1, 467, -1, 158, -1, 468,
1253     469, -1, 469, -1, 470, -1, 471, -1, 464, -1,
1254     1, -1, 120, 263, 153, 260, -1, 155, 263, 153,
1255     260, -1, 64, 262, 473, 261, 260, -1, 473, 474,
1256     -1, 474, -1, 483, -1, 484, -1, 486, -1, 487,
1257     -1, 488, -1, 489, -1, 490, -1, 491, -1, 492,
1258     -1, 493, -1, 482, -1, 495, -1, 496, -1, 497,
1259     -1, 498, -1, 514, -1, 500, -1, 502, -1, 504,
1260     -1, 503, -1, 507, -1, 501, -1, 508, -1, 509,
1261     -1, 510, -1, 511, -1, 513, -1, 512, -1, 528,
1262     -1, 515, -1, 519, -1, 520, -1, 524, -1, 505,
1263     -1, 506, -1, 534, -1, 532, -1, 533, -1, 516,
1264     -1, 485, -1, 517, -1, 518, -1, 535, -1, 523,
1265     -1, 494, -1, 521, -1, 522, -1, 478, -1, 481,
1266     -1, 476, -1, 477, -1, 479, -1, 480, -1, 499,
1267     -1, 475, -1, 1, -1, 114, 263, 131, 260, -1,
1268     70, 263, 131, 260, -1, 71, 263, 131, 260, -1,
1269     12, 263, 197, 260, -1, 254, 263, 197, 260, -1,
1270     160, 263, 269, 260, -1, 184, 263, 197, 260, -1,
1271     91, 263, 269, 260, -1, 82, 263, 197, 260, -1,
1272     87, 263, 197, 260, -1, 43, 263, 197, 260, -1,
1273     52, 263, 197, 260, -1, 8, 263, 197, 260, -1,
1274     111, 263, 269, 260, -1, 110, 263, 131, 260, -1,
1275     104, 263, 131, 260, -1, 9, 263, 269, 260, -1,
1276     201, 263, 269, 260, -1, 200, 263, 269, 260, -1,
1277     75, 263, 131, 260, -1, 95, 263, 197, 260, -1,
1278     94, 263, 153, 260, -1, 88, 263, 197, 260, -1,
1279     259, 263, 197, 260, -1, 192, 263, 197, 260, -1,
1280     195, 263, 197, 260, -1, 196, 263, 197, 260, -1,
1281     194, 263, 197, 260, -1, 194, 263, 198, 260, -1,
1282     193, 263, 197, 260, -1, 193, 263, 198, 260, -1,
1283     145, 263, 269, 260, -1, 19, 263, 269, 260, -1,
1284     137, 263, 197, 260, -1, 146, 263, 269, 260, -1,
1285     188, 263, 197, 260, -1, 128, 263, 197, 260, -1,
1286     243, 263, 197, 260, -1, 140, 263, 197, 260, -1,
1287     115, 263, 153, 260, -1, 86, 263, 269, 260, -1,
1288     44, 263, 131, 260, -1, 113, 263, 131, 260, -1,
1289     182, 263, 153, 260, -1, 32, 263, 153, 260, -1,
1290     28, 263, 131, 260, -1, 249, 263, 197, 260, -1,
1291     46, 263, 153, 260, -1, 149, 263, 197, 260, -1,
1292     39, 263, 197, 260, -1, 241, 263, 269, 260, -1,
1293     -1, 142, 525, 263, 526, 260, -1, 526, 264, 527,
1294     -1, 527, -1, 204, -1, 207, -1, 208, -1, 210,
1295     -1, 211, -1, 214, -1, 233, -1, 228, -1, 230,
1296     -1, 237, -1, 234, -1, 213, -1, 229, -1, 232,
1297     -1, 215, -1, 240, -1, 205, -1, 206, -1, 218,
1298     -1, -1, 139, 529, 263, 530, 260, -1, 530, 264,
1299     531, -1, 531, -1, 204, -1, 207, -1, 208, -1,
1300     210, -1, 211, -1, 214, -1, 233, -1, 228, -1,
1301     230, -1, 237, -1, 234, -1, 213, -1, 229, -1,
1302     232, -1, 215, -1, 240, -1, 205, -1, 206, -1,
1303     218, -1, 116, 263, 131, 260, -1, 117, 263, 131,
1304     260, -1, 33, 263, 131, 260, -1, 209, 263, 271,
1305     260, -1, -1, 66, 537, 262, 538, 261, 260, -1,
1306     538, 539, -1, 539, -1, 540, -1, 541, -1, 542,
1307     -1, 546, -1, 547, -1, 548, -1, 1, -1, 48,
1308     263, 197, 260, -1, 45, 263, 269, 260, -1, -1,
1309     102, 543, 263, 544, 260, -1, 544, 264, 545, -1,
1310     545, -1, 199, -1, 11, -1, 248, 263, 153, 260,
1311     -1, 120, 263, 153, 260, -1, -1, 4, 549, 263,
1312     550, 260, -1, 550, 264, 551, -1, 551, -1, 199,
1313     -1, 11, -1, 22, 262, 553, 261, 260, -1, 553,
1314     554, -1, 554, -1, 557, -1, 558, -1, 559, -1,
1315     560, -1, 565, -1, 561, -1, 562, -1, 563, -1,
1316     564, -1, 566, -1, 567, -1, 568, -1, 556, -1,
1317     569, -1, 570, -1, 571, -1, 572, -1, 555, -1,
1318     1, -1, 40, 263, 197, 260, -1, 163, 263, 197,
1319     260, -1, 42, 263, 197, 260, -1, 250, 263, 197,
1320     260, -1, 251, 263, 197, 260, -1, 252, 263, 197,
1321     260, -1, 96, 263, 269, 260, -1, 97, 263, 269,
1322     260, -1, 106, 263, 131, 260, -1, 154, 263, 197,
1323     260, -1, 105, 263, 131, 260, -1, 35, 263, 131,
1324     260, -1, 34, 263, 131, 260, -1, 126, 263, 197,
1325     260, -1, 127, 263, 197, 260, -1, 13, 263, 197,
1326     260, -1, 143, 263, 131, 260, -1, 144, 263, 269,
1327     260, -1, 180, 262, 574, 261, 260, -1, 574, 575,
1328     -1, 575, -1, 576, -1, 577, -1, 579, -1, 581,
1329     -1, 580, -1, 578, -1, 582, -1, 1, -1, 54,
1330     263, 197, 260, -1, 81, 263, 197, 260, -1, 78,
1331     263, 153, 260, -1, 99, 263, 269, 260, -1, 76,
1332     263, 197, 260, -1, 41, 263, 197, 260, -1, 80,
1333     263, 197, 260, -1
1334 michael 913 };
1335    
1336     /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
1337     static const yytype_uint16 yyrline[] =
1338     {
1339 michael 1123 0, 394, 394, 395, 398, 399, 400, 401, 402, 403,
1340     404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
1341     414, 415, 416, 417, 418, 419, 423, 423, 424, 428,
1342     432, 436, 440, 444, 450, 450, 451, 452, 453, 454,
1343     461, 464, 464, 465, 465, 465, 467, 473, 480, 482,
1344     482, 483, 483, 484, 484, 485, 485, 486, 487, 487,
1345     488, 488, 489, 490, 494, 493, 512, 512, 513, 519,
1346     527, 561, 621, 636, 651, 660, 674, 683, 711, 741,
1347     764, 773, 775, 775, 776, 776, 777, 777, 779, 788,
1348     797, 810, 812, 813, 815, 815, 816, 817, 817, 818,
1349     818, 819, 819, 820, 820, 821, 822, 824, 828, 832,
1350     839, 846, 853, 860, 867, 874, 881, 888, 892, 896,
1351     900, 904, 908, 912, 918, 928, 927, 1021, 1021, 1022,
1352     1022, 1023, 1023, 1023, 1024, 1024, 1024, 1025, 1025, 1025,
1353     1027, 1039, 1051, 1085, 1097, 1108, 1150, 1160, 1159, 1165,
1354     1165, 1166, 1170, 1174, 1178, 1182, 1186, 1190, 1194, 1198,
1355     1202, 1206, 1210, 1214, 1218, 1222, 1226, 1230, 1234, 1238,
1356     1245, 1244, 1248, 1248, 1249, 1249, 1250, 1250, 1252, 1259,
1357     1266, 1273, 1280, 1287, 1294, 1301, 1308, 1315, 1322, 1329,
1358     1336, 1343, 1350, 1357, 1371, 1370, 1420, 1420, 1422, 1422,
1359     1423, 1424, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431,
1360     1432, 1433, 1434, 1435, 1437, 1446, 1455, 1461, 1467, 1473,
1361     1479, 1485, 1491, 1497, 1503, 1509, 1515, 1521, 1531, 1530,
1362     1547, 1546, 1551, 1551, 1552, 1556, 1560, 1568, 1568, 1569,
1363     1569, 1569, 1569, 1569, 1571, 1571, 1573, 1573, 1575, 1589,
1364     1609, 1618, 1631, 1630, 1699, 1699, 1700, 1700, 1700, 1700,
1365     1701, 1701, 1701, 1702, 1702, 1704, 1741, 1754, 1763, 1775,
1366     1774, 1778, 1778, 1779, 1779, 1780, 1780, 1782, 1789, 1796,
1367     1803, 1810, 1817, 1824, 1831, 1838, 1845, 1855, 1874, 1884,
1368     1898, 1897, 1913, 1913, 1914, 1914, 1914, 1914, 1916, 1925,
1369     1940, 1954, 1953, 1969, 1969, 1970, 1970, 1970, 1970, 1972,
1370     1981, 2004, 2003, 2009, 2009, 2010, 2014, 2018, 2022, 2026,
1371     2030, 2034, 2038, 2042, 2046, 2050, 2060, 2059, 2076, 2076,
1372     2077, 2077, 2077, 2079, 2086, 2085, 2091, 2091, 2092, 2096,
1373     2100, 2104, 2108, 2112, 2116, 2120, 2124, 2128, 2132, 2142,
1374     2141, 2287, 2287, 2288, 2288, 2289, 2289, 2289, 2290, 2290,
1375     2291, 2291, 2292, 2292, 2292, 2293, 2293, 2294, 2294, 2295,
1376     2297, 2309, 2321, 2330, 2356, 2374, 2392, 2398, 2402, 2411,
1377     2410, 2414, 2414, 2415, 2415, 2416, 2416, 2418, 2429, 2436,
1378     2443, 2450, 2460, 2501, 2512, 2525, 2538, 2547, 2583, 2582,
1379     2646, 2645, 2649, 2649, 2650, 2656, 2656, 2657, 2657, 2657,
1380     2657, 2659, 2678, 2688, 2687, 2710, 2710, 2711, 2711, 2711,
1381     2713, 2719, 2728, 2730, 2730, 2731, 2731, 2733, 2752, 2751,
1382     2799, 2798, 2802, 2802, 2803, 2809, 2809, 2810, 2810, 2810,
1383     2810, 2812, 2818, 2827, 2830, 2830, 2831, 2831, 2832, 2832,
1384     2833, 2833, 2834, 2834, 2835, 2835, 2836, 2836, 2837, 2837,
1385     2838, 2838, 2839, 2839, 2840, 2840, 2841, 2841, 2842, 2842,
1386     2843, 2843, 2844, 2844, 2845, 2845, 2846, 2846, 2847, 2847,
1387     2848, 2848, 2849, 2849, 2850, 2850, 2851, 2852, 2852, 2853,
1388     2853, 2854, 2855, 2855, 2856, 2856, 2857, 2857, 2858, 2858,
1389     2859, 2860, 2863, 2868, 2873, 2878, 2883, 2888, 2893, 2898,
1390     2903, 2908, 2913, 2918, 2923, 2928, 2933, 2938, 2943, 2948,
1391     2953, 2959, 2970, 2975, 2984, 2989, 2994, 2999, 3004, 3009,
1392     3012, 3017, 3020, 3025, 3030, 3035, 3040, 3045, 3050, 3055,
1393     3060, 3065, 3076, 3081, 3086, 3091, 3100, 3132, 3150, 3155,
1394     3164, 3169, 3174, 3180, 3179, 3184, 3184, 3185, 3188, 3191,
1395     3194, 3197, 3200, 3203, 3206, 3209, 3212, 3215, 3218, 3221,
1396     3224, 3227, 3230, 3233, 3236, 3239, 3245, 3244, 3249, 3249,
1397     3250, 3253, 3256, 3259, 3262, 3265, 3268, 3271, 3274, 3277,
1398     3280, 3283, 3286, 3289, 3292, 3295, 3298, 3301, 3304, 3309,
1399     3314, 3319, 3324, 3334, 3333, 3357, 3357, 3358, 3359, 3360,
1400     3361, 3362, 3363, 3364, 3366, 3372, 3379, 3378, 3383, 3383,
1401     3384, 3388, 3394, 3428, 3438, 3437, 3487, 3487, 3488, 3492,
1402     3501, 3504, 3504, 3505, 3505, 3506, 3506, 3507, 3507, 3508,
1403     3508, 3509, 3509, 3510, 3511, 3511, 3512, 3512, 3513, 3513,
1404     3514, 3514, 3516, 3521, 3526, 3531, 3536, 3541, 3546, 3551,
1405     3556, 3561, 3566, 3571, 3576, 3581, 3586, 3591, 3596, 3601,
1406     3609, 3612, 3612, 3613, 3613, 3614, 3615, 3616, 3616, 3617,
1407     3618, 3620, 3626, 3632, 3641, 3655, 3661, 3667
1408 michael 913 };
1409     #endif
1410    
1411     #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1412     /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1413     First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1414     static const char *const yytname[] =
1415     {
1416     "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ACTION", "ADMIN",
1417     "AFTYPE", "T_ALLOW", "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME",
1418     "AUTOCONN", "T_BLOCK", "BURST_AWAY", "BURST_TOPICWHO", "BYTES", "KBYTES",
1419     "MBYTES", "GBYTES", "TBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CAN_IDLE",
1420     "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CIPHER_PREFERENCE",
1421     "CLASS", "COMPRESSED", "COMPRESSION_LEVEL", "CONNECT", "CONNECTFREQ",
1422     "CRYPTLINK", "DEFAULT_CIPHER_PREFERENCE", "DEFAULT_FLOODCOUNT",
1423     "DEFAULT_SPLIT_SERVER_COUNT", "DEFAULT_SPLIT_USER_COUNT", "DENY",
1424     "DESCRIPTION", "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1425     "DISABLE_HIDDEN", "DISABLE_LOCAL_CHANNELS", "DISABLE_REMOTE_COMMANDS",
1426 michael 1072 "DOTS_IN_IDENT", "DURATION", "EGDPOOL_PATH", "EMAIL", "ENABLE",
1427 michael 1118 "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE",
1428 michael 1072 "IRCD_FLAGS", "FLATTEN_LINKS", "FFAILED_OPERLOG", "FKILLLOG",
1429 michael 913 "FKLINELOG", "FGLINELOG", "FIOERRLOG", "FOPERLOG", "FOPERSPYLOG",
1430     "FUSERLOG", "GECOS", "GENERAL", "GLINE", "GLINES", "GLINE_EXEMPT",
1431     "GLINE_LOG", "GLINE_TIME", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1432     "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1433     "HIDDEN_ADMIN", "HIDDEN_NAME", "HIDDEN_OPER", "HIDE_SERVER_IPS",
1434     "HIDE_SERVERS", "HIDE_SPOOF_IPS", "HOST", "HUB", "HUB_MASK", "IDLETIME",
1435     "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "IP", "KILL",
1436     "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KLINE_REASON",
1437     "KLINE_WITH_REASON", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK",
1438     "LINKS_DELAY", "LISTEN", "T_LOG", "LOGGING", "LOG_LEVEL", "MAX_ACCEPT",
1439     "MAX_BANS", "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1440     "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1441     "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1442     "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1443     "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
1444     "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
1445     "NOT", "NUMBER", "NUMBER_PER_IDENT", "NUMBER_PER_CIDR", "NUMBER_PER_IP",
1446     "NUMBER_PER_IP_GLOBAL", "OPERATOR", "OPERS_BYPASS_CALLERID", "OPER_LOG",
1447     "OPER_ONLY_UMODES", "OPER_PASS_RESV", "OPER_SPY_T", "OPER_UMODES",
1448     "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME", "PACE_WAIT", "PACE_WAIT_SIMPLE",
1449     "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME", "PING_WARNING", "PORT",
1450     "QSTRING", "QUIET_ON_BAN", "REASON", "REDIRPORT", "REDIRSERV", "REGEX_T",
1451     "REHASH", "TREJECT_HOLD_TIME", "REMOTE", "REMOTEBAN",
1452     "RESTRICT_CHANNELS", "RESTRICTED", "RSA_PRIVATE_KEY_FILE",
1453 michael 967 "RSA_PUBLIC_KEY_FILE", "SSL_CERTIFICATE_FILE", "T_SSL_CONNECTION_METHOD",
1454     "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT", "SECONDS", "MINUTES",
1455     "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD", "SERVERHIDE",
1456     "SERVERINFO", "SERVLINK_PATH", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
1457     "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SILENT", "SPOOF",
1458     "SPOOF_NOTICE", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1459     "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL",
1460     "TMASKED", "T_REJECT", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS",
1461     "T_ALL", "T_BOTS", "T_SOFTCALLERID", "T_CALLERID", "T_CCONN",
1462     "T_CCONN_FULL", "T_CLIENT_FLOOD", "T_DEAF", "T_DEBUG", "T_DRONE",
1463     "T_EXTERNAL", "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS",
1464     "T_LOGPATH", "T_L_CRIT", "T_L_DEBUG", "T_L_ERROR", "T_L_INFO",
1465     "T_L_NOTICE", "T_L_TRACE", "T_L_WARN", "T_MAX_CLIENTS", "T_NCHANGE",
1466     "T_OPERWALL", "T_REJ", "T_SERVER", "T_SERVNOTICE", "T_SKILL", "T_SPY",
1467     "T_SSL", "T_UMODES", "T_UNAUTH", "T_UNRESV", "T_UNXLINE", "T_WALLOP",
1468     "THROTTLE_TIME", "TOPICBURST", "TRUE_NO_OPER_FLOOD", "TKLINE", "TXLINE",
1469     "TRESV", "UNKLINE", "USER", "USE_EGD", "USE_EXCEPT", "USE_INVEX",
1470     "USE_KNOCK", "USE_LOGGING", "USE_WHOIS_ACTUALLY", "VHOST", "VHOST6",
1471     "XLINE", "WARN", "WARN_NO_NLINE", "';'", "'}'", "'{'", "'='", "','",
1472     "$accept", "conf", "conf_item", "timespec_", "timespec", "sizespec_",
1473     "sizespec", "modules_entry", "modules_items", "modules_item",
1474     "modules_module", "modules_path", "serverinfo_entry", "serverinfo_items",
1475     "serverinfo_item", "serverinfo_ssl_connection_method", "$@1",
1476     "method_types", "method_type_item", "serverinfo_ssl_certificate_file",
1477 michael 913 "serverinfo_rsa_private_key_file", "serverinfo_name", "serverinfo_sid",
1478     "serverinfo_description", "serverinfo_network_name",
1479     "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1480     "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1481     "admin_item", "admin_name", "admin_email", "admin_description",
1482     "logging_entry", "logging_items", "logging_item", "logging_path",
1483     "logging_oper_log", "logging_fuserlog", "logging_ffailed_operlog",
1484     "logging_foperlog", "logging_foperspylog", "logging_fglinelog",
1485     "logging_fklinelog", "logging_ioerrlog", "logging_killlog",
1486 michael 967 "logging_log_level", "logging_use_logging", "oper_entry", "$@2",
1487 michael 913 "oper_name_b", "oper_items", "oper_item", "oper_name", "oper_name_t",
1488     "oper_user", "oper_password", "oper_encrypted",
1489 michael 967 "oper_rsa_public_key_file", "oper_class", "oper_umodes", "$@3",
1490 michael 1076 "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@4",
1491     "oper_flags_items", "oper_flags_item", "$@5", "$@6",
1492     "oper_flags_item_atom", "class_entry", "$@7", "class_name_b",
1493     "class_items", "class_item", "class_name", "class_name_t",
1494     "class_ping_time", "class_ping_warning", "class_number_per_ip",
1495     "class_connectfreq", "class_max_number", "class_max_global",
1496     "class_max_local", "class_max_ident", "class_sendq",
1497 michael 913 "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1498 michael 967 "class_number_per_cidr", "listen_entry", "$@8", "listen_flags", "$@9",
1499 michael 913 "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1500 michael 967 "listen_port", "$@10", "port_items", "port_item", "listen_address",
1501     "listen_host", "auth_entry", "$@11", "auth_items", "auth_item",
1502 michael 1076 "auth_user", "auth_passwd", "auth_class", "auth_encrypted", "auth_flags",
1503     "$@12", "auth_flags_items", "auth_flags_item", "$@13", "$@14",
1504     "auth_flags_item_atom", "auth_spoof", "auth_redir_serv",
1505     "auth_redir_port", "resv_entry", "$@15", "resv_items", "resv_item",
1506     "resv_creason", "resv_channel", "resv_nick", "shared_entry", "$@16",
1507     "shared_items", "shared_item", "shared_name", "shared_user",
1508     "shared_type", "$@17", "shared_types", "shared_type_item",
1509     "cluster_entry", "$@18", "cluster_items", "cluster_item", "cluster_name",
1510     "cluster_type", "$@19", "cluster_types", "cluster_type_item",
1511     "connect_entry", "$@20", "connect_name_b", "connect_items",
1512     "connect_item", "connect_name", "connect_name_t", "connect_host",
1513     "connect_vhost", "connect_send_password", "connect_accept_password",
1514 michael 1118 "connect_port", "connect_aftype", "connect_flags", "$@21",
1515     "connect_flags_items", "connect_flags_item", "$@22", "$@23",
1516 michael 1076 "connect_flags_item_atom", "connect_rsa_public_key_file",
1517     "connect_encrypted", "connect_hub_mask", "connect_leaf_mask",
1518     "connect_class", "connect_cipher_preference", "kill_entry", "$@24",
1519     "kill_type", "$@25", "kill_type_items", "kill_type_item", "kill_items",
1520     "kill_item", "kill_user", "kill_reason", "deny_entry", "$@26",
1521     "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1522     "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@27",
1523     "gecos_flags", "$@28", "gecos_flags_items", "gecos_flags_item",
1524     "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1525     "general_entry", "general_items", "general_item", "general_max_watch",
1526     "general_gline_min_cidr", "general_gline_min_cidr6",
1527     "general_burst_away", "general_use_whois_actually",
1528     "general_reject_hold_time", "general_tkline_expire_notices",
1529     "general_kill_chase_time_limit", "general_hide_spoof_ips",
1530     "general_ignore_bogus_ts", "general_disable_remote_commands",
1531     "general_failed_oper_notice", "general_anti_nick_flood",
1532     "general_max_nick_time", "general_max_nick_changes",
1533     "general_max_accept", "general_anti_spam_exit_message_time",
1534     "general_ts_warn_delta", "general_ts_max_delta",
1535     "general_havent_read_conf", "general_kline_with_reason",
1536     "general_kline_reason", "general_invisible_on_connect",
1537     "general_warn_no_nline", "general_stats_e_disabled",
1538     "general_stats_o_oper_only", "general_stats_P_oper_only",
1539     "general_stats_k_oper_only", "general_stats_i_oper_only",
1540     "general_pace_wait", "general_caller_id_wait",
1541     "general_opers_bypass_callerid", "general_pace_wait_simple",
1542     "general_short_motd", "general_no_oper_flood",
1543     "general_true_no_oper_flood", "general_oper_pass_resv",
1544     "general_message_locale", "general_idletime", "general_dots_in_ident",
1545     "general_max_targets", "general_servlink_path",
1546 michael 913 "general_default_cipher_preference", "general_compression_level",
1547     "general_use_egd", "general_egdpool_path", "general_ping_cookie",
1548     "general_disable_auth", "general_throttle_time", "general_oper_umodes",
1549 michael 967 "$@29", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1550     "$@30", "umode_items", "umode_item", "general_min_nonwildcard",
1551 michael 913 "general_min_nonwildcard_simple", "general_default_floodcount",
1552 michael 1072 "general_client_flood", "gline_entry", "$@31", "gline_items",
1553     "gline_item", "gline_enable", "gline_duration", "gline_logging", "$@32",
1554     "gline_logging_types", "gline_logging_type_item", "gline_user",
1555     "gline_server", "gline_action", "$@33", "gdeny_types", "gdeny_type_item",
1556     "channel_entry", "channel_items", "channel_item",
1557     "channel_disable_fake_channels", "channel_restrict_channels",
1558     "channel_disable_local_channels", "channel_use_except",
1559     "channel_use_invex", "channel_use_knock", "channel_knock_delay",
1560     "channel_knock_delay_channel", "channel_max_chans_per_user",
1561     "channel_quiet_on_ban", "channel_max_bans",
1562 michael 913 "channel_default_split_user_count", "channel_default_split_server_count",
1563     "channel_no_create_on_split", "channel_no_join_on_split",
1564     "channel_burst_topicwho", "channel_jflood_count", "channel_jflood_time",
1565     "serverhide_entry", "serverhide_items", "serverhide_item",
1566     "serverhide_flatten_links", "serverhide_hide_servers",
1567     "serverhide_hidden_name", "serverhide_links_delay", "serverhide_hidden",
1568     "serverhide_disable_hidden", "serverhide_hide_server_ips", 0
1569     };
1570     #endif
1571    
1572     # ifdef YYPRINT
1573     /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1574     token YYLEX-NUM. */
1575     static const yytype_uint16 yytoknum[] =
1576     {
1577     0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1578     265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1579     275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1580     285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1581     295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1582     305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1583     315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1584     325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1585     335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1586     345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1587     355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1588     365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1589     375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1590     385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1591     395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1592     405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1593     415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1594     425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1595     435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1596     445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1597     455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1598     465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1599     475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1600     485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1601     495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
1602 michael 967 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
1603 michael 1118 59, 125, 123, 61, 44
1604 michael 913 };
1605     # endif
1606    
1607     /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1608     static const yytype_uint16 yyr1[] =
1609     {
1610 michael 1118 0, 265, 266, 266, 267, 267, 267, 267, 267, 267,
1611     267, 267, 267, 267, 267, 267, 267, 267, 267, 267,
1612     267, 267, 267, 267, 267, 267, 268, 268, 269, 269,
1613     269, 269, 269, 269, 270, 270, 271, 271, 271, 271,
1614     272, 273, 273, 274, 274, 274, 275, 276, 277, 278,
1615     278, 279, 279, 279, 279, 279, 279, 279, 279, 279,
1616     279, 279, 279, 279, 281, 280, 282, 282, 283, 283,
1617     284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
1618     294, 295, 296, 296, 297, 297, 297, 297, 298, 299,
1619     300, 301, 302, 302, 303, 303, 303, 303, 303, 303,
1620     303, 303, 303, 303, 303, 303, 303, 304, 305, 306,
1621     307, 308, 309, 310, 311, 312, 313, 314, 314, 314,
1622     314, 314, 314, 314, 315, 317, 316, 318, 318, 319,
1623     319, 320, 320, 320, 320, 320, 320, 320, 320, 320,
1624     321, 322, 323, 324, 325, 326, 327, 329, 328, 330,
1625     330, 331, 331, 331, 331, 331, 331, 331, 331, 331,
1626     331, 331, 331, 331, 331, 331, 331, 331, 331, 331,
1627     333, 332, 334, 334, 336, 335, 337, 335, 338, 338,
1628     338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
1629     338, 338, 338, 338, 340, 339, 341, 341, 342, 342,
1630     343, 343, 343, 343, 343, 343, 343, 343, 343, 343,
1631     343, 343, 343, 343, 344, 345, 346, 347, 348, 349,
1632     350, 351, 352, 353, 354, 355, 356, 357, 359, 358,
1633     361, 360, 362, 362, 363, 363, 363, 364, 364, 365,
1634     365, 365, 365, 365, 367, 366, 368, 368, 369, 369,
1635     370, 371, 373, 372, 374, 374, 375, 375, 375, 375,
1636     375, 375, 375, 375, 375, 376, 377, 378, 379, 381,
1637     380, 382, 382, 384, 383, 385, 383, 386, 386, 386,
1638     386, 386, 386, 386, 386, 386, 386, 387, 388, 389,
1639     391, 390, 392, 392, 393, 393, 393, 393, 394, 395,
1640     396, 398, 397, 399, 399, 400, 400, 400, 400, 401,
1641     402, 404, 403, 405, 405, 406, 406, 406, 406, 406,
1642     406, 406, 406, 406, 406, 406, 408, 407, 409, 409,
1643     410, 410, 410, 411, 413, 412, 414, 414, 415, 415,
1644     415, 415, 415, 415, 415, 415, 415, 415, 415, 417,
1645     416, 418, 418, 419, 419, 420, 420, 420, 420, 420,
1646     420, 420, 420, 420, 420, 420, 420, 420, 420, 420,
1647     421, 422, 423, 424, 425, 426, 427, 428, 428, 430,
1648     429, 431, 431, 433, 432, 434, 432, 435, 435, 435,
1649     435, 435, 436, 437, 438, 439, 440, 441, 443, 442,
1650     445, 444, 446, 446, 447, 448, 448, 449, 449, 449,
1651     449, 450, 451, 453, 452, 454, 454, 455, 455, 455,
1652     456, 457, 458, 459, 459, 460, 460, 461, 463, 462,
1653     465, 464, 466, 466, 467, 468, 468, 469, 469, 469,
1654     469, 470, 471, 472, 473, 473, 474, 474, 474, 474,
1655     474, 474, 474, 474, 474, 474, 474, 474, 474, 474,
1656     474, 474, 474, 474, 474, 474, 474, 474, 474, 474,
1657     474, 474, 474, 474, 474, 474, 474, 474, 474, 474,
1658     474, 474, 474, 474, 474, 474, 474, 474, 474, 474,
1659     474, 474, 474, 474, 474, 474, 474, 474, 474, 474,
1660     474, 474, 475, 476, 477, 478, 479, 480, 481, 482,
1661 michael 1076 483, 484, 485, 486, 487, 488, 489, 490, 491, 492,
1662     493, 494, 495, 496, 497, 498, 499, 500, 501, 502,
1663 michael 1118 502, 503, 503, 504, 505, 506, 507, 508, 509, 510,
1664 michael 1076 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
1665 michael 1118 521, 522, 523, 525, 524, 526, 526, 527, 527, 527,
1666     527, 527, 527, 527, 527, 527, 527, 527, 527, 527,
1667     527, 527, 527, 527, 527, 527, 529, 528, 530, 530,
1668     531, 531, 531, 531, 531, 531, 531, 531, 531, 531,
1669     531, 531, 531, 531, 531, 531, 531, 531, 531, 532,
1670     533, 534, 535, 537, 536, 538, 538, 539, 539, 539,
1671     539, 539, 539, 539, 540, 541, 543, 542, 544, 544,
1672     545, 545, 546, 547, 549, 548, 550, 550, 551, 551,
1673     552, 553, 553, 554, 554, 554, 554, 554, 554, 554,
1674     554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
1675     554, 554, 555, 556, 557, 558, 559, 560, 561, 562,
1676 michael 1076 563, 564, 565, 566, 567, 568, 569, 570, 571, 572,
1677 michael 1118 573, 574, 574, 575, 575, 575, 575, 575, 575, 575,
1678     575, 576, 577, 578, 579, 580, 581, 582
1679 michael 913 };
1680    
1681     /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1682     static const yytype_uint8 yyr2[] =
1683     {
1684     0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
1685     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1686     1, 1, 1, 1, 2, 2, 0, 1, 2, 3,
1687     3, 3, 3, 3, 0, 1, 2, 3, 3, 3,
1688     5, 2, 1, 1, 1, 2, 4, 4, 5, 2,
1689     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1690 michael 967 1, 1, 1, 2, 0, 5, 3, 1, 1, 1,
1691 michael 913 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1692 michael 967 4, 5, 2, 1, 1, 1, 1, 2, 4, 4,
1693     4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
1694     1, 1, 1, 1, 1, 1, 2, 4, 4, 4,
1695     4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1696     4, 4, 4, 4, 4, 0, 7, 0, 1, 2,
1697 michael 1076 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
1698     4, 1, 4, 4, 4, 4, 4, 0, 5, 3,
1699 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1700     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1701 michael 1076 0, 5, 3, 1, 0, 3, 0, 2, 1, 1,
1702     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1703     1, 1, 1, 1, 0, 7, 0, 1, 2, 1,
1704     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1705 michael 967 1, 1, 1, 2, 4, 1, 4, 4, 4, 4,
1706 michael 1076 4, 4, 4, 4, 4, 4, 4, 4, 0, 6,
1707     0, 5, 3, 1, 1, 1, 1, 2, 1, 1,
1708     1, 1, 1, 2, 0, 5, 3, 1, 1, 3,
1709     4, 4, 0, 6, 2, 1, 1, 1, 1, 1,
1710     1, 1, 1, 1, 2, 4, 4, 4, 4, 0,
1711     5, 3, 1, 0, 3, 0, 2, 1, 1, 1,
1712     1, 1, 1, 1, 1, 1, 1, 4, 4, 4,
1713     0, 6, 2, 1, 1, 1, 1, 2, 4, 4,
1714     4, 0, 6, 2, 1, 1, 1, 1, 2, 4,
1715 michael 967 4, 0, 5, 3, 1, 1, 1, 1, 1, 1,
1716 michael 1076 1, 1, 1, 1, 1, 1, 0, 6, 2, 1,
1717     1, 1, 2, 4, 0, 5, 3, 1, 1, 1,
1718     1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1719     7, 0, 1, 2, 1, 1, 1, 1, 1, 1,
1720 michael 1118 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
1721     4, 1, 4, 4, 4, 4, 4, 4, 4, 0,
1722     5, 3, 1, 0, 3, 0, 2, 1, 1, 1,
1723     1, 1, 4, 4, 4, 4, 4, 4, 0, 6,
1724     0, 5, 3, 1, 1, 2, 1, 1, 1, 1,
1725     1, 4, 4, 0, 6, 2, 1, 1, 1, 1,
1726     4, 4, 5, 2, 1, 1, 1, 4, 0, 6,
1727     0, 5, 3, 1, 1, 2, 1, 1, 1, 1,
1728     1, 4, 4, 5, 2, 1, 1, 1, 1, 1,
1729 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1730     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 1118 1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
1735 michael 913 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1736     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 michael 1118 4, 4, 4, 0, 5, 3, 1, 1, 1, 1,
1740 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1741 michael 1118 1, 1, 1, 1, 1, 1, 0, 5, 3, 1,
1742 michael 913 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1743 michael 1118 1, 1, 1, 1, 1, 1, 1, 1, 1, 4,
1744     4, 4, 4, 0, 6, 2, 1, 1, 1, 1,
1745     1, 1, 1, 1, 4, 4, 0, 5, 3, 1,
1746     1, 1, 4, 4, 0, 5, 3, 1, 1, 1,
1747     5, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1748 michael 967 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1749 michael 1118 1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
1750 michael 967 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1751 michael 1118 5, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1752     1, 4, 4, 4, 4, 4, 4, 4
1753 michael 913 };
1754    
1755 michael 1133 /* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
1756     Performed when YYTABLE doesn't specify something else to do. Zero
1757 michael 913 means the default is an error. */
1758     static const yytype_uint16 yydefact[] =
1759     {
1760 michael 1118 2, 0, 1, 0, 0, 0, 194, 349, 413, 0,
1761     428, 0, 603, 252, 398, 228, 0, 0, 125, 290,
1762 michael 1076 0, 0, 301, 326, 3, 23, 11, 4, 5, 6,
1763 michael 913 8, 9, 10, 13, 14, 15, 16, 17, 18, 19,
1764 michael 1076 22, 20, 21, 7, 12, 24, 25, 0, 0, 196,
1765     351, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1766 michael 967 0, 127, 0, 0, 0, 0, 0, 0, 0, 0,
1767 michael 1118 0, 0, 83, 84, 86, 85, 651, 0, 0, 0,
1768 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1769 michael 1118 0, 0, 0, 0, 0, 0, 632, 650, 645, 633,
1770     634, 635, 636, 638, 639, 640, 641, 637, 642, 643,
1771     644, 646, 647, 648, 649, 215, 0, 197, 371, 0,
1772     352, 0, 426, 0, 0, 424, 425, 0, 501, 0,
1773 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1774     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1775     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1776 michael 1118 0, 576, 0, 553, 0, 0, 0, 0, 0, 0,
1777 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1778 michael 1118 0, 0, 0, 0, 0, 445, 500, 495, 496, 493,
1779     497, 498, 494, 456, 446, 447, 485, 448, 449, 450,
1780     451, 452, 453, 454, 455, 490, 457, 458, 459, 460,
1781     499, 462, 467, 463, 465, 464, 479, 480, 466, 468,
1782     469, 470, 471, 473, 472, 461, 475, 484, 486, 487,
1783     476, 477, 491, 492, 489, 478, 474, 482, 483, 481,
1784     488, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1785 michael 1072 0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
1786     94, 95, 98, 105, 99, 103, 100, 101, 104, 102,
1787 michael 1076 96, 97, 0, 0, 0, 0, 42, 43, 44, 141,
1788 michael 1118 0, 128, 0, 680, 0, 0, 0, 0, 0, 0,
1789     0, 0, 672, 673, 674, 678, 675, 677, 676, 679,
1790 michael 1072 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,
1791     0, 0, 0, 0, 50, 62, 61, 58, 51, 60,
1792     54, 55, 56, 52, 59, 57, 53, 0, 0, 87,
1793     0, 0, 0, 0, 82, 0, 0, 0, 0, 0,
1794 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1795 michael 1118 0, 0, 0, 0, 631, 0, 0, 419, 0, 0,
1796     0, 416, 417, 418, 0, 0, 423, 440, 0, 0,
1797     430, 439, 0, 436, 437, 438, 0, 0, 0, 0,
1798 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1799     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1800     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1801     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1802     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1803 michael 1118 0, 0, 444, 613, 624, 0, 0, 616, 0, 0,
1804     0, 606, 607, 608, 609, 610, 611, 612, 0, 0,
1805 michael 1076 0, 269, 0, 0, 0, 0, 0, 0, 255, 256,
1806 michael 1118 257, 258, 263, 259, 260, 261, 262, 410, 0, 400,
1807     0, 409, 0, 406, 407, 408, 0, 230, 0, 0,
1808 michael 1076 0, 240, 0, 238, 239, 241, 242, 106, 0, 0,
1809 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1810 michael 1076 0, 92, 45, 0, 0, 0, 41, 0, 0, 0,
1811     0, 0, 0, 293, 294, 295, 296, 0, 0, 0,
1812 michael 1118 0, 0, 0, 0, 0, 671, 63, 0, 0, 0,
1813 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1814 michael 1076 49, 0, 0, 311, 0, 0, 304, 305, 306, 307,
1815     0, 0, 334, 0, 329, 330, 331, 0, 0, 0,
1816     81, 0, 0, 0, 0, 0, 26, 0, 0, 0,
1817 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1818 michael 1118 630, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1819 michael 1076 0, 0, 0, 0, 0, 0, 199, 200, 203, 204,
1820     206, 207, 208, 209, 210, 211, 212, 201, 202, 205,
1821 michael 1118 0, 0, 0, 0, 0, 0, 379, 0, 0, 0,
1822     0, 0, 0, 0, 0, 0, 354, 355, 356, 357,
1823     358, 359, 361, 360, 362, 367, 366, 363, 364, 365,
1824     368, 0, 0, 0, 415, 0, 422, 0, 0, 0,
1825     0, 435, 0, 0, 0, 0, 0, 0, 0, 0,
1826 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1827     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 michael 1118 0, 0, 0, 34, 0, 0, 0, 0, 0, 0,
1831     443, 0, 0, 0, 0, 0, 0, 0, 605, 264,
1832     0, 0, 0, 0, 0, 0, 0, 0, 0, 254,
1833     0, 0, 0, 0, 405, 243, 0, 0, 0, 0,
1834     0, 237, 0, 0, 0, 0, 0, 0, 0, 0,
1835 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1836 michael 1118 91, 0, 0, 40, 0, 0, 0, 170, 0, 0,
1837     0, 147, 0, 0, 130, 131, 132, 133, 136, 137,
1838     135, 134, 138, 297, 0, 0, 0, 0, 292, 0,
1839     0, 0, 0, 0, 0, 0, 670, 0, 0, 0,
1840     0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
1841     308, 0, 0, 0, 0, 303, 332, 0, 0, 0,
1842     328, 90, 89, 88, 667, 664, 663, 652, 654, 26,
1843     26, 26, 26, 26, 28, 27, 658, 659, 662, 660,
1844     665, 666, 668, 669, 661, 653, 655, 656, 657, 213,
1845 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1846 michael 1118 0, 0, 0, 0, 198, 369, 0, 0, 0, 0,
1847 michael 913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1848 michael 1118 0, 353, 0, 0, 414, 427, 0, 0, 0, 429,
1849     514, 518, 505, 534, 547, 546, 601, 551, 512, 543,
1850     549, 513, 503, 504, 521, 510, 542, 511, 524, 509,
1851     523, 522, 517, 516, 515, 544, 502, 541, 599, 600,
1852     538, 535, 580, 596, 597, 581, 582, 583, 584, 591,
1853     585, 594, 598, 587, 592, 588, 593, 586, 590, 589,
1854     595, 0, 579, 540, 557, 573, 574, 558, 559, 560,
1855     561, 568, 562, 571, 575, 564, 569, 565, 570, 563,
1856     567, 566, 572, 0, 556, 533, 536, 550, 507, 545,
1857     508, 537, 526, 531, 532, 529, 530, 527, 528, 520,
1858     519, 34, 34, 34, 36, 35, 602, 552, 539, 548,
1859     506, 525, 0, 0, 0, 0, 0, 0, 604, 0,
1860     0, 275, 0, 0, 0, 0, 0, 253, 0, 0,
1861     0, 399, 0, 0, 0, 248, 244, 247, 229, 110,
1862     116, 114, 113, 115, 111, 112, 109, 117, 123, 118,
1863     122, 120, 121, 119, 108, 107, 124, 46, 47, 139,
1864     0, 0, 0, 0, 0, 0, 0, 0, 0, 129,
1865     0, 0, 0, 291, 686, 681, 685, 683, 687, 682,
1866     684, 74, 80, 72, 76, 75, 71, 70, 68, 69,
1867     0, 67, 73, 79, 77, 78, 0, 0, 0, 302,
1868     0, 0, 327, 29, 30, 31, 32, 33, 0, 0,
1869     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1870     0, 195, 0, 0, 0, 0, 0, 0, 385, 0,
1871     0, 0, 0, 0, 0, 0, 0, 350, 420, 421,
1872     441, 442, 434, 0, 433, 577, 0, 554, 0, 37,
1873     38, 39, 629, 628, 0, 627, 615, 614, 621, 620,
1874     0, 619, 623, 622, 267, 268, 273, 0, 272, 0,
1875     266, 289, 288, 287, 265, 412, 404, 0, 403, 411,
1876     235, 236, 234, 0, 233, 251, 250, 0, 0, 0,
1877     0, 0, 176, 0, 0, 0, 0, 0, 126, 299,
1878     300, 298, 65, 0, 309, 315, 321, 325, 324, 323,
1879     320, 316, 319, 322, 317, 318, 0, 314, 310, 333,
1880     338, 344, 348, 347, 346, 343, 339, 342, 345, 340,
1881     341, 0, 337, 225, 226, 219, 221, 223, 222, 220,
1882     214, 227, 218, 216, 217, 224, 375, 377, 378, 397,
1883     396, 393, 383, 0, 382, 0, 372, 394, 395, 370,
1884     376, 392, 374, 373, 431, 0, 578, 555, 625, 0,
1885     617, 0, 0, 270, 275, 281, 282, 278, 284, 280,
1886     279, 286, 283, 285, 277, 276, 401, 0, 231, 0,
1887     249, 246, 245, 146, 144, 174, 0, 173, 0, 140,
1888     143, 145, 151, 167, 168, 152, 153, 154, 155, 162,
1889     156, 165, 169, 158, 163, 159, 164, 157, 161, 160,
1890     166, 0, 150, 142, 66, 312, 0, 335, 0, 0,
1891     380, 385, 389, 390, 387, 388, 391, 386, 432, 626,
1892     618, 274, 271, 402, 232, 0, 171, 176, 186, 184,
1893     193, 183, 178, 187, 191, 180, 188, 190, 185, 179,
1894     192, 189, 181, 182, 177, 148, 0, 313, 336, 384,
1895     381, 175, 172, 149
1896 michael 913 };
1897    
1898     /* YYDEFGOTO[NTERM-NUM]. */
1899     static const yytype_int16 yydefgoto[] =
1900     {
1901 michael 1118 -1, 1, 24, 834, 835, 984, 985, 25, 275, 276,
1902     277, 278, 26, 313, 314, 315, 534, 1070, 1071, 316,
1903 michael 1072 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
1904     27, 71, 72, 73, 74, 75, 28, 258, 259, 260,
1905     261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
1906 michael 1118 271, 29, 61, 280, 773, 774, 775, 281, 776, 777,
1907     778, 779, 780, 781, 1046, 1301, 1302, 782, 1042, 1276,
1908     1277, 1325, 1278, 1344, 30, 49, 116, 595, 596, 597,
1909 michael 1076 117, 598, 599, 600, 601, 602, 603, 604, 605, 606,
1910 michael 1118 607, 608, 609, 31, 58, 481, 736, 1163, 1164, 482,
1911     483, 484, 1169, 1016, 1017, 485, 486, 32, 56, 457,
1912     458, 459, 460, 461, 462, 463, 722, 1147, 1148, 1252,
1913     1149, 1265, 464, 465, 466, 33, 62, 512, 513, 514,
1914     515, 516, 34, 65, 545, 546, 547, 548, 549, 812,
1915     1196, 1197, 35, 66, 553, 554, 555, 556, 818, 1211,
1916     1212, 36, 50, 119, 625, 626, 627, 120, 628, 629,
1917     630, 631, 632, 633, 634, 871, 1233, 1234, 1309, 1235,
1918     1317, 635, 636, 637, 638, 639, 640, 37, 57, 471,
1919     731, 1157, 1158, 472, 473, 474, 475, 38, 51, 360,
1920     361, 362, 363, 39, 124, 125, 126, 40, 53, 371,
1921     649, 1123, 1124, 372, 373, 374, 375, 41, 184, 185,
1922     186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
1923     196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
1924     206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
1925     216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
1926     226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
1927     410, 963, 964, 236, 408, 941, 942, 237, 238, 239,
1928     240, 42, 55, 440, 441, 442, 443, 444, 714, 1140,
1929     1141, 445, 446, 447, 711, 1134, 1135, 43, 95, 96,
1930     97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1931     107, 108, 109, 110, 111, 112, 113, 114, 44, 291,
1932     292, 293, 294, 295, 296, 297, 298, 299
1933 michael 913 };
1934    
1935     /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1936     STATE-NUM. */
1937 michael 1118 #define YYPACT_NINF -949
1938 michael 913 static const yytype_int16 yypact[] =
1939     {
1940 michael 1118 -949, 670, -949, -256, -248, -245, -949, -949, -949, -212,
1941     -949, -205, -949, -949, -949, -949, -189, -183, -949, -949,
1942     -154, -152, -949, -949, -949, -949, -949, -949, -949, -949,
1943     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
1944     -949, -949, -949, -949, -949, -949, -949, 22, 642, -127,
1945     -31, -132, 5, -125, 415, -119, -98, -89, -86, 578,
1946     14, -8, -75, 664, 313, -74, -61, -45, -46, -37,
1947     -23, 31, -949, -949, -949, -949, -949, -22, 15, 30,
1948     33, 41, 42, 47, 48, 50, 61, 62, 70, 78,
1949     79, 80, 86, 90, 93, 94, -949, -949, -949, -949,
1950     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
1951     -949, -949, -949, -949, -949, -949, -44, -949, -949, 89,
1952     -949, 20, -949, 99, 2, -949, -949, 140, -949, 100,
1953     104, 106, 111, 113, 115, 122, 123, 126, 127, 128,
1954     129, 131, 133, 135, 136, 137, 145, 147, 148, 151,
1955     155, 156, 157, 159, 163, 165, 167, 169, 174, 175,
1956     177, -949, 178, -949, 186, 187, 188, 193, 194, 197,
1957     199, 200, 205, 206, 209, 210, 211, 212, 213, 214,
1958     219, 220, 225, 228, 10, -949, -949, -949, -949, -949,
1959     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
1960     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
1961     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
1962     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
1963     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
1964     -949, 364, 308, 92, 318, 17, 229, 230, 231, 232,
1965     236, 237, 241, 242, 244, 245, 248, 250, 226, -949,
1966     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
1967     -949, -949, 63, 251, 252, 60, -949, -949, -949, -949,
1968     182, -949, 24, -949, 253, 254, 255, 260, 270, 271,
1969     272, 192, -949, -949, -949, -949, -949, -949, -949, -949,
1970     72, 273, 274, 275, 276, 279, 281, 282, -949, 285,
1971     286, 287, 288, 132, -949, -949, -949, -949, -949, -949,
1972     -949, -949, -949, -949, -949, -949, -949, 183, 102, -949,
1973     222, 293, 336, 299, -949, 198, 431, 432, 368, 369,
1974     436, 436, 440, 441, 376, 379, 446, 436, 381, 390,
1975     391, 392, 393, 332, -949, 726, 521, -949, 330, 331,
1976     76, -949, -949, -949, 442, 338, -949, -949, 333, 337,
1977     -949, -949, 57, -949, -949, -949, 404, 436, 408, 436,
1978     482, 461, 486, 423, 424, 491, 470, 429, 496, 497,
1979     498, 434, 436, 445, 447, 436, 493, 450, 517, 518,
1980     436, 522, 523, 499, 526, 528, 463, 464, 400, 469,
1981     405, 436, 436, 475, 436, 514, 488, 489, 492, -131,
1982     -110, 494, 501, 436, 436, 548, 436, 504, 505, 506,
1983     510, 428, -949, -949, -949, 420, 427, -949, 430, 448,
1984     112, -949, -949, -949, -949, -949, -949, -949, 435, 454,
1985     457, -949, 459, 462, 465, 466, 467, 118, -949, -949,
1986     -949, -949, -949, -949, -949, -949, -949, -949, 468, -949,
1987     472, -949, 74, -949, -949, -949, 449, -949, 474, 483,
1988     490, -949, 29, -949, -949, -949, -949, -949, 555, 557,
1989     560, 571, 573, 579, 599, 601, 360, 602, 604, 561,
1990     502, -949, -949, 608, 611, 507, -949, 305, 511, 503,
1991     512, 515, 152, -949, -949, -949, -949, 568, 577, 580,
1992     626, 583, 584, 436, 524, -949, -949, 634, 586, 637,
1993     638, 639, 640, 641, 532, 646, 672, 648, 651, 547,
1994     -949, 551, 549, -949, 550, 69, -949, -949, -949, -949,
1995     558, 556, -949, 75, -949, -949, -949, 562, 563, 564,
1996     -949, 565, 566, 569, 572, 576, 207, 582, 587, 588,
1997     589, 592, 593, 594, 597, 598, 603, 607, 609, 610,
1998     -949, 615, 574, 581, 605, 616, 617, 618, 619, 620,
1999     622, 623, 624, 625, 628, 116, -949, -949, -949, -949,
2000     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2001     629, 632, 645, 649, 650, 652, -949, 653, 654, 655,
2002     656, 660, 665, 667, 668, 160, -949, -949, -949, -949,
2003     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2004     -949, 675, 686, 678, -949, 681, -949, 687, 690, 682,
2005     688, -949, 689, 691, 693, 694, 695, 696, 700, 704,
2006     705, 707, 708, 715, 718, 722, 723, 725, 727, 728,
2007     730, 731, 732, 733, 737, 741, 742, 744, 745, 747,
2008     748, 749, 750, 751, 692, 752, 729, 753, 754, 755,
2009     756, 757, 758, 759, 760, 761, 762, 763, 764, 765,
2010     767, 768, 769, 49, 770, 771, 772, 773, 774, 775,
2011     -949, 683, 436, 712, 776, 709, 711, 777, -949, -949,
2012     797, 714, 778, 799, 783, 833, 836, 873, 780, -949,
2013     883, 779, 885, 784, -949, -949, 782, 890, 893, 796,
2014     787, -949, 788, 789, 790, 791, 792, 793, 794, 795,
2015     798, 800, 801, 802, 803, 804, 805, 806, 807, 808,
2016     -949, 809, 810, -949, 811, 812, 813, -949, 814, 815,
2017     816, -949, 817, 181, -949, -949, -949, -949, -949, -949,
2018     -949, -949, -949, -949, 903, 904, 906, 821, -949, 822,
2019     823, 824, 825, 826, 827, 828, -949, 829, 830, 831,
2020     832, 834, 835, 837, -80, 838, 839, 840, 841, -949,
2021     -949, 919, 842, 920, 843, -949, -949, 921, 844, 846,
2022     -949, -949, -949, -949, -949, -949, -949, -949, -949, 436,
2023     436, 436, 436, 436, -949, -949, -949, -949, -949, -949,
2024     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2025     962, 965, 436, 971, 973, 977, 978, 957, 980, 981,
2026     436, 436, 548, 853, -949, -949, 961, -117, 963, 964,
2027     918, 855, 966, 967, 968, 969, 992, 972, 974, 975,
2028     864, -949, 866, 869, -949, -949, 870, 871, 662, -949,
2029     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2030     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2031     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2032     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2033     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2034     -949, -244, -949, -949, -949, -949, -949, -949, -949, -949,
2035     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2036     -949, -949, -949, -236, -949, -949, -949, -949, -949, -949,
2037     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2038     -949, 548, 548, 548, -949, -949, -949, -949, -949, -949,
2039     -949, -949, -3, 872, 874, -2, 875, 876, -949, 877,
2040     878, 1003, 879, 880, 881, 882, 884, -949, 886, 703,
2041     887, -949, -63, 888, 889, 676, 891, -949, -949, -949,
2042     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2043     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2044     990, 948, 894, 997, 998, 999, 895, 1000, 896, -949,
2045     899, 900, 901, -949, -949, -949, -949, -949, -949, -949,
2046     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2047     -224, -949, -949, -949, -949, -949, 902, 570, 905, -949,
2048     907, 627, -949, -949, -949, -949, -949, -949, 908, 909,
2049     910, 911, 912, 913, 914, 915, 916, 917, 922, 923,
2050     924, -949, 925, 926, 927, 928, 929, 930, 1024, 931,
2051     932, 933, 934, 935, 936, 937, 938, -949, -949, -949,
2052     -949, -949, -949, -219, -949, -949, 692, -949, 729, -949,
2053     -949, -949, -949, -949, -216, -949, -949, -949, -949, -949,
2054     -213, -949, -949, -949, -949, -949, -949, -158, -949, 630,
2055     -949, -949, -949, -949, -949, -949, -949, -149, -949, -949,
2056     -949, -949, -949, -129, -949, -949, -949, 1032, 796, 939,
2057     940, 941, 1034, 942, 943, 944, 766, 945, -949, -949,
2058     -949, -949, -949, -80, -949, -949, -949, -949, -949, -949,
2059     -949, -949, -949, -949, -949, -949, -106, -949, -949, -949,
2060     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2061     -949, -25, -949, -949, -949, -949, -949, -949, -949, -949,
2062     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2063     -949, -949, -949, 38, -949, 0, -949, -949, -949, -949,
2064     -949, -949, -949, -949, -949, 662, -949, -949, -949, -3,
2065     -949, -2, 630, -949, 1003, -949, -949, -949, -949, -949,
2066     -949, -949, -949, -949, -949, -949, -949, 703, -949, -63,
2067     -949, -949, -949, -949, -949, -949, 56, -949, 553, -949,
2068     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2069     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2070     -949, 88, -949, -949, -949, -949, 570, -949, 627, 0,
2071     -949, 1024, -949, -949, -949, -949, -949, -949, -949, -949,
2072     -949, -949, -949, -949, -949, 553, -949, 1034, -949, -949,
2073     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2074     -949, -949, -949, -949, -949, -949, 766, -949, -949, -949,
2075     -949, -949, -949, -949
2076 michael 913 };
2077    
2078     /* YYPGOTO[NTERM-NUM]. */
2079     static const yytype_int16 yypgoto[] =
2080     {
2081 michael 1118 -949, -949, -949, -427, -340, -948, -423, -949, -949, 946,
2082     -949, -949, -949, -949, 865, -949, -949, -949, -293, -949,
2083     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2084     -949, -949, 1095, -949, -949, -949, -949, -949, 643, -949,
2085     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2086     -949, -949, -949, -949, -949, 406, -949, -949, -949, -949,
2087     -949, -949, -949, -949, -949, -949, -166, -949, -949, -949,
2088     -146, -949, -949, -118, -949, -949, -949, -949, 613, -949,
2089     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2090     -949, -949, -949, -949, -949, -949, -949, -949, -60, -949,
2091     724, -949, -949, -949, 43, -949, -949, -949, -949, -949,
2092     781, -949, -949, -949, -949, -949, -949, -949, -42, -949,
2093     -949, -39, -949, -949, -949, -949, -949, -949, 698, -949,
2094     -949, -949, -949, -949, -949, 669, -949, -949, -949, -949,
2095     -949, -91, -949, -949, -949, 663, -949, -949, -949, -949,
2096     -90, -949, -949, -949, -949, 595, -949, -949, -949, -949,
2097     -949, -949, -949, -949, -949, -949, -949, -94, -949, -949,
2098     -87, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2099     -949, -949, -48, -949, 785, -949, -949, -949, -949, -949,
2100     863, -949, -949, -949, -949, 1100, -949, -949, -949, -949,
2101     -949, -949, -20, -949, 854, -949, -949, -949, -949, 1043,
2102     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2103     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2104     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2105     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2106     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2107     -949, -949, 101, -949, -949, -949, 105, -949, -949, -949,
2108     -949, -949, -949, -949, 818, -949, -949, -949, -949, -949,
2109     -21, -949, -949, -949, -949, -949, -17, -949, -949, 1133,
2110     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2111     -949, -949, -949, -949, -949, -949, -949, -949, -949, -949,
2112     949, -949, -949, -949, -949, -949, -949, -949
2113 michael 913 };
2114    
2115     /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
2116     positive, shift that token. If negative, reduce the rule which
2117 michael 1133 number is the opposite. If YYTABLE_NINF, syntax error. */
2118 michael 913 #define YYTABLE_NINF -1
2119     static const yytype_uint16 yytable[] =
2120     {
2121 michael 1118 567, 568, 704, 122, 45, 46, 122, 574, 1132, 1138,
2122     1312, 128, 1313, 1160, 47, 272, 1125, 48, 129, 130,
2123     1126, 357, 131, 67, 1127, 508, 115, 1314, 1128, 132,
2124     476, 1315, 67, 1129, 1130, 1131, 1182, 653, 133, 655,
2125     1183, 1244, 134, 135, 1248, 1245, 509, 1250, 1249, 136,
2126     52, 1251, 668, 137, 138, 671, 139, 54, 367, 68,
2127     676, 272, 140, 981, 982, 983, 695, 696, 68, 69,
2128     541, 687, 688, 59, 690, 467, 550, 357, 69, 60,
2129     141, 142, 477, 701, 702, 143, 705, 697, 698, 1068,
2130     1069, 123, 144, 467, 123, 76, 145, 146, 147, 1103,
2131     1104, 148, 1253, 550, 149, 150, 1254, 77, 63, 358,
2132     64, 1266, 478, 433, 151, 1267, 434, 581, 479, 448,
2133     152, 153, 118, 154, 155, 156, 157, 158, 78, 79,
2134     121, 1268, 273, 300, 80, 1269, 81, 127, 159, 582,
2135     583, 367, 70, 241, 449, 279, 584, 160, 510, 161,
2136     162, 70, 163, 508, 1305, 164, 165, 435, 1306, 166,
2137     436, 610, 274, 611, 242, 358, 612, 450, 1161, 301,
2138     167, 451, 1162, 243, 509, 359, 244, 368, 273, 511,
2139     703, 480, 764, 795, 541, 613, 614, 282, 327, 542,
2140     82, 83, 168, 283, 169, 551, 1133, 1139, 170, 84,
2141     85, 328, 171, 172, 173, 174, 175, 765, 274, 615,
2142     176, 177, 369, 616, 437, 329, 302, 330, 355, 178,
2143     86, 87, 551, 585, 586, 587, 331, 245, 588, 468,
2144     766, 359, 438, 284, 767, 1307, 589, 88, 89, 1308,
2145     332, 335, 1316, 617, 370, 618, 285, 468, 90, 590,
2146     591, 179, 303, 180, 304, 305, 543, 91, 619, 181,
2147     368, 469, 552, 365, 182, 452, 592, 593, 286, 183,
2148     287, 431, 288, 289, 453, 454, 510, 487, 336, 469,
2149     620, 246, 247, 248, 249, 250, 251, 252, 253, 552,
2150     740, 290, 333, 337, 594, 369, 338, 306, 1310, 307,
2151     308, 768, 1311, 542, 339, 340, 764, 511, 455, 448,
2152     341, 342, 621, 343, 300, 309, 1326, 544, 650, 476,
2153     1327, 505, 470, 502, 344, 345, 622, 370, 769, 254,
2154     814, 765, 526, 346, 449, 733, 819, 643, 566, 623,
2155     470, 347, 348, 349, 92, 93, 94, 770, 1345, 350,
2156     301, 356, 1346, 351, 766, 353, 352, 450, 767, 310,
2157     439, 451, 364, 376, 255, 433, 456, 377, 434, 378,
2158     543, 477, 993, 717, 379, 557, 380, 863, 381, 728,
2159     829, 830, 831, 832, 833, 382, 383, 311, 312, 384,
2160     385, 386, 387, 539, 388, 561, 389, 302, 390, 391,
2161     392, 478, 1083, 1084, 1085, 1086, 1087, 479, 393, 435,
2162     394, 395, 436, 787, 396, 624, 128, 771, 397, 398,
2163     399, 880, 400, 129, 130, 768, 401, 131, 402, 772,
2164     403, 544, 404, 303, 132, 304, 305, 405, 406, 1100,
2165     407, 409, 1048, 133, 507, 256, 558, 134, 135, 411,
2166     412, 413, 769, 524, 136, 452, 414, 415, 137, 138,
2167     416, 139, 417, 418, 453, 454, 437, 140, 419, 420,
2168     480, 770, 421, 422, 423, 424, 425, 426, 306, 257,
2169     307, 308, 427, 428, 438, 141, 142, 500, 429, 559,
2170     143, 430, 488, 489, 490, 491, 309, 144, 455, 492,
2171     493, 145, 146, 147, 494, 495, 148, 496, 497, 149,
2172     150, 498, 1090, 499, 503, 504, 517, 518, 519, 151,
2173     1098, 1099, 610, 520, 611, 152, 153, 612, 154, 155,
2174     156, 157, 158, 521, 522, 523, 527, 528, 529, 530,
2175     310, 771, 531, 159, 532, 533, 613, 614, 535, 536,
2176     537, 538, 160, 772, 161, 162, 456, 163, 1328, 560,
2177     164, 165, 562, 563, 166, 564, 565, 566, 311, 312,
2178     615, 569, 570, 571, 616, 167, 572, 573, 575, 245,
2179     750, 751, 752, 753, 754, 755, 756, 576, 577, 578,
2180     579, 1329, 580, 641, 642, 645, 647, 168, 646, 169,
2181     648, 652, 1330, 170, 617, 654, 618, 171, 172, 173,
2182     174, 175, 439, 656, 657, 176, 177, 658, 1331, 619,
2183     659, 660, 661, 662, 178, 1332, 663, 664, 665, 666,
2184     1333, 667, 1334, 246, 247, 248, 249, 250, 251, 252,
2185     253, 620, 669, 76, 670, 1335, 672, 673, 674, 675,
2186     1255, 1256, 679, 677, 678, 77, 179, 680, 180, 681,
2187     682, 683, 1185, 684, 181, 283, 685, 691, 686, 182,
2188     2, 3, 689, 621, 183, 4, 78, 79, 1336, 703,
2189     1257, 254, 80, 712, 81, 692, 693, 622, 710, 694,
2190     713, 699, 5, 715, 1337, 719, 6, 1258, 700, 7,
2191     623, 706, 707, 708, 1259, 284, 8, 709, 742, 735,
2192     743, 716, 1338, 744, 1339, 1340, 255, 720, 285, 1200,
2193     721, 9, 723, 1260, 745, 724, 746, 581, 725, 726,
2194     727, 730, 747, 10, 11, 732, 12, 737, 82, 83,
2195     286, 1186, 287, 13, 288, 289, 738, 84, 85, 582,
2196     583, 1261, 748, 739, 749, 757, 584, 758, 759, 1262,
2197     14, 761, 760, 290, 762, 789, 784, 763, 86, 87,
2198     15, 783, 16, 1187, 790, 785, 624, 791, 786, 792,
2199     793, 794, 1341, 798, 796, 88, 89, 797, 1188, 17,
2200     799, 800, 801, 802, 803, 804, 90, 256, 1201, 805,
2201     1342, 807, 1263, 806, 808, 91, 18, 809, 1189, 1190,
2202     1343, 810, 811, 813, 1191, 1192, 1193, 1194, 816, 817,
2203     1122, 1264, 821, 822, 823, 824, 825, 1195, 882, 826,
2204     1202, 257, 827, 585, 586, 587, 828, 850, 588, 883,
2205     886, 19, 836, 887, 851, 1203, 589, 837, 838, 839,
2206     20, 21, 840, 841, 842, 22, 23, 843, 844, 590,
2207     591, 1156, 996, 845, 997, 1204, 1205, 846, 852, 847,
2208     848, 1206, 1207, 1208, 1209, 849, 592, 593, 1167, 853,
2209     854, 855, 856, 857, 1210, 858, 859, 860, 861, 865,
2210     1304, 862, 92, 93, 94, 866, 922, 923, 924, 925,
2211     926, 501, 927, 928, 594, 929, 930, 931, 867, 994,
2212     932, 1000, 868, 869, 1003, 870, 872, 873, 874, 875,
2213     933, 934, 935, 876, 936, 937, 938, 1015, 877, 939,
2214     878, 879, 940, 944, 945, 946, 947, 948, 884, 949,
2215     950, 885, 951, 952, 953, 888, 992, 954, 889, 890,
2216     999, 891, 1002, 892, 893, 894, 895, 955, 956, 957,
2217     896, 958, 959, 960, 897, 898, 961, 899, 900, 962,
2218     1282, 1283, 1284, 1285, 1286, 901, 1287, 1288, 902, 1289,
2219     1290, 1291, 903, 904, 1292, 905, 1004, 906, 907, 1005,
2220     908, 909, 910, 911, 1293, 1294, 1295, 912, 1296, 1297,
2221     1298, 913, 914, 1299, 915, 916, 1300, 917, 918, 919,
2222     920, 921, 943, 965, 966, 967, 968, 969, 970, 971,
2223     972, 973, 974, 975, 976, 977, 1006, 978, 979, 980,
2224     986, 987, 988, 989, 990, 991, 1008, 998, 1010, 995,
2225     1007, 1001, 1009, 1013, 1011, 1012, 1014, 1018, 1019, 1020,
2226     1021, 1022, 1023, 1024, 1025, 1026, 1050, 1051, 1027, 1052,
2227     1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037,
2228     1038, 1039, 1076, 1078, 1080, 1040, 1041, 1043, 1044, 1045,
2229     1047, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061,
2230     1062, 1063, 1064, 1088, 1065, 1066, 1089, 1067, 1072, 1073,
2231     1074, 1075, 1091, 1079, 1092, 1077, 1082, 1081, 1093, 1094,
2232     1095, 1096, 1097, 1101, 1102, 1107, 1105, 1106, 1108, 1109,
2233     1110, 1111, 1112, 1113, 1117, 1114, 1118, 1115, 1116, 1119,
2234     1120, 1121, 1136, 1146, 1137, 1142, 1143, 1144, 1145, 1150,
2235     1151, 1152, 1153, 1170, 1154, 1171, 1155, 1159, 1165, 1166,
2236     1173, 1174, 1175, 1177, 1232, 1168, 1178, 1172, 1176, 1179,
2237     1180, 1181, 1184, 1270, 1275, 1198, 334, 1199, 1213, 1214,
2238     1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 540, 1049,
2239     1353, 1352, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230,
2240     1231, 1236, 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1272,
2241     1273, 1274, 1279, 1280, 1281, 1303, 741, 1351, 864, 1324,
2242     788, 1271, 1322, 1321, 815, 1347, 820, 1350, 1348, 1323,
2243     881, 506, 1349, 644, 366, 1318, 651, 432, 354, 1247,
2244     1320, 1246, 1319, 0, 0, 0, 0, 0, 729, 0,
2245     525, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2246     0, 0, 0, 0, 0, 0, 0, 734, 718
2247 michael 913 };
2248    
2249 michael 1133 #define yypact_value_is_default(yystate) \
2250     ((yystate) == (-949))
2251    
2252     #define yytable_value_is_error(yytable_value) \
2253     YYID (0)
2254    
2255 michael 913 static const yytype_int16 yycheck[] =
2256     {
2257 michael 1118 340, 341, 425, 1, 260, 261, 1, 347, 11, 11,
2258     10, 1, 12, 76, 262, 1, 260, 262, 8, 9,
2259     264, 1, 12, 1, 260, 1, 153, 27, 264, 19,
2260     1, 31, 1, 981, 982, 983, 260, 377, 28, 379,
2261     264, 260, 32, 33, 260, 264, 22, 260, 264, 39,
2262     262, 264, 392, 43, 44, 395, 46, 262, 1, 37,
2263     400, 1, 52, 14, 15, 16, 197, 198, 37, 47,
2264     1, 411, 412, 262, 414, 1, 1, 1, 47, 262,
2265     70, 71, 53, 423, 424, 75, 426, 197, 198, 169,
2266     170, 89, 82, 1, 89, 1, 86, 87, 88, 216,
2267     217, 91, 260, 1, 94, 95, 264, 13, 262, 89,
2268     262, 260, 83, 1, 104, 264, 4, 1, 89, 1,
2269     110, 111, 153, 113, 114, 115, 116, 117, 34, 35,
2270     262, 260, 118, 1, 40, 264, 42, 262, 128, 23,
2271     24, 1, 120, 262, 26, 153, 30, 137, 124, 139,
2272     140, 120, 142, 1, 260, 145, 146, 45, 264, 149,
2273     48, 1, 148, 3, 262, 89, 6, 49, 231, 37,
2274     160, 53, 235, 262, 22, 155, 262, 120, 118, 155,
2275     131, 152, 1, 523, 1, 25, 26, 262, 262, 120,
2276     96, 97, 182, 1, 184, 120, 199, 199, 188, 105,
2277     106, 262, 192, 193, 194, 195, 196, 26, 148, 49,
2278     200, 201, 155, 53, 102, 260, 84, 263, 262, 209,
2279     126, 127, 120, 107, 108, 109, 263, 1, 112, 155,
2280     49, 155, 120, 41, 53, 260, 120, 143, 144, 264,
2281     263, 263, 242, 83, 187, 85, 54, 155, 154, 133,
2282     134, 241, 120, 243, 122, 123, 187, 163, 98, 249,
2283     120, 187, 187, 261, 254, 147, 150, 151, 76, 259,
2284     78, 261, 80, 81, 156, 157, 124, 260, 263, 187,
2285     120, 55, 56, 57, 58, 59, 60, 61, 62, 187,
2286     261, 99, 261, 263, 178, 155, 263, 165, 260, 167,
2287     168, 120, 264, 120, 263, 263, 1, 155, 190, 1,
2288     263, 263, 152, 263, 1, 183, 260, 248, 261, 1,
2289     264, 261, 248, 260, 263, 263, 166, 187, 147, 103,
2290     261, 26, 260, 263, 26, 261, 261, 261, 131, 179,
2291     248, 263, 263, 263, 250, 251, 252, 166, 260, 263,
2292     37, 262, 264, 263, 49, 261, 263, 49, 53, 227,
2293     248, 53, 263, 263, 138, 1, 248, 263, 4, 263,
2294     187, 53, 712, 261, 263, 153, 263, 261, 263, 261,
2295     173, 174, 175, 176, 177, 263, 263, 255, 256, 263,
2296     263, 263, 263, 261, 263, 197, 263, 84, 263, 263,
2297     263, 83, 829, 830, 831, 832, 833, 89, 263, 45,
2298     263, 263, 48, 261, 263, 255, 1, 236, 263, 263,
2299     263, 261, 263, 8, 9, 120, 263, 12, 263, 248,
2300     263, 248, 263, 120, 19, 122, 123, 263, 263, 862,
2301     263, 263, 261, 28, 262, 219, 153, 32, 33, 263,
2302     263, 263, 147, 261, 39, 147, 263, 263, 43, 44,
2303     263, 46, 263, 263, 156, 157, 102, 52, 263, 263,
2304     152, 166, 263, 263, 263, 263, 263, 263, 165, 253,
2305     167, 168, 263, 263, 120, 70, 71, 261, 263, 153,
2306     75, 263, 263, 263, 263, 263, 183, 82, 190, 263,
2307     263, 86, 87, 88, 263, 263, 91, 263, 263, 94,
2308     95, 263, 852, 263, 263, 263, 263, 263, 263, 104,
2309     860, 861, 1, 263, 3, 110, 111, 6, 113, 114,
2310     115, 116, 117, 263, 263, 263, 263, 263, 263, 263,
2311     227, 236, 263, 128, 263, 263, 25, 26, 263, 263,
2312     263, 263, 137, 248, 139, 140, 248, 142, 5, 260,
2313     145, 146, 131, 131, 149, 197, 197, 131, 255, 256,
2314     49, 131, 131, 197, 53, 160, 197, 131, 197, 1,
2315     220, 221, 222, 223, 224, 225, 226, 197, 197, 197,
2316     197, 38, 260, 263, 263, 153, 263, 182, 260, 184,
2317     263, 197, 49, 188, 83, 197, 85, 192, 193, 194,
2318     195, 196, 248, 131, 153, 200, 201, 131, 65, 98,
2319     197, 197, 131, 153, 209, 72, 197, 131, 131, 131,
2320     77, 197, 79, 55, 56, 57, 58, 59, 60, 61,
2321     62, 120, 197, 1, 197, 92, 153, 197, 131, 131,
2322     20, 21, 153, 131, 131, 13, 241, 131, 243, 131,
2323     197, 197, 92, 263, 249, 1, 197, 153, 263, 254,
2324     0, 1, 197, 152, 259, 5, 34, 35, 125, 131,
2325     50, 103, 40, 263, 42, 197, 197, 166, 260, 197,
2326     263, 197, 22, 263, 141, 260, 26, 67, 197, 29,
2327     179, 197, 197, 197, 74, 41, 36, 197, 153, 260,
2328     153, 263, 159, 153, 161, 162, 138, 263, 54, 92,
2329     263, 51, 263, 93, 153, 263, 153, 1, 263, 263,
2330     263, 263, 153, 63, 64, 263, 66, 263, 96, 97,
2331     76, 171, 78, 73, 80, 81, 263, 105, 106, 23,
2332     24, 121, 153, 263, 153, 153, 30, 153, 197, 129,
2333     90, 153, 260, 99, 153, 197, 263, 260, 126, 127,
2334     100, 260, 102, 203, 197, 263, 255, 197, 263, 153,
2335     197, 197, 229, 197, 260, 143, 144, 153, 218, 119,
2336     153, 153, 153, 153, 153, 263, 154, 219, 171, 153,
2337     247, 153, 172, 131, 153, 163, 136, 260, 238, 239,
2338     257, 260, 263, 263, 244, 245, 246, 247, 260, 263,
2339     158, 191, 260, 260, 260, 260, 260, 257, 153, 260,
2340     203, 253, 260, 107, 108, 109, 260, 263, 112, 153,
2341     153, 171, 260, 153, 263, 218, 120, 260, 260, 260,
2342     180, 181, 260, 260, 260, 185, 186, 260, 260, 133,
2343     134, 158, 153, 260, 153, 238, 239, 260, 263, 260,
2344     260, 244, 245, 246, 247, 260, 150, 151, 202, 263,
2345     263, 263, 263, 263, 257, 263, 263, 263, 263, 260,
2346     1183, 263, 250, 251, 252, 263, 204, 205, 206, 207,
2347     208, 258, 210, 211, 178, 213, 214, 215, 263, 197,
2348     218, 197, 263, 263, 131, 263, 263, 263, 263, 263,
2349     228, 229, 230, 263, 232, 233, 234, 131, 263, 237,
2350     263, 263, 240, 204, 205, 206, 207, 208, 260, 210,
2351     211, 260, 213, 214, 215, 263, 263, 218, 260, 260,
2352     153, 260, 153, 260, 260, 260, 260, 228, 229, 230,
2353     260, 232, 233, 234, 260, 260, 237, 260, 260, 240,
2354     204, 205, 206, 207, 208, 260, 210, 211, 260, 213,
2355     214, 215, 260, 260, 218, 260, 153, 260, 260, 153,
2356     260, 260, 260, 260, 228, 229, 230, 260, 232, 233,
2357     234, 260, 260, 237, 260, 260, 240, 260, 260, 260,
2358     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2359     260, 260, 260, 260, 260, 260, 153, 260, 260, 260,
2360     260, 260, 260, 260, 260, 260, 153, 260, 153, 263,
2361     260, 263, 263, 153, 260, 263, 153, 260, 260, 260,
2362     260, 260, 260, 260, 260, 260, 153, 153, 260, 153,
2363     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2364     260, 260, 153, 153, 153, 263, 263, 263, 263, 263,
2365     263, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2366     260, 260, 260, 131, 260, 260, 131, 260, 260, 260,
2367     260, 260, 131, 260, 131, 263, 260, 263, 131, 131,
2368     153, 131, 131, 260, 153, 197, 153, 153, 263, 153,
2369     153, 153, 153, 131, 260, 153, 260, 153, 153, 260,
2370     260, 260, 260, 130, 260, 260, 260, 260, 260, 260,
2371     260, 260, 260, 153, 260, 197, 260, 260, 260, 260,
2372     153, 153, 153, 153, 130, 264, 260, 263, 263, 260,
2373     260, 260, 260, 131, 130, 260, 71, 260, 260, 260,
2374     260, 260, 260, 260, 260, 260, 260, 260, 313, 773,
2375     1346, 1327, 260, 260, 260, 260, 260, 260, 260, 260,
2376     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2377     260, 260, 260, 260, 260, 260, 482, 1325, 595, 1269,
2378     512, 1168, 1254, 1252, 545, 1306, 553, 1311, 1308, 1267,
2379     625, 275, 1309, 360, 124, 1245, 372, 184, 95, 1128,
2380     1251, 1126, 1249, -1, -1, -1, -1, -1, 457, -1,
2381     291, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2382     -1, -1, -1, -1, -1, -1, -1, 472, 440
2383 michael 913 };
2384    
2385     /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2386     symbol of state STATE-NUM. */
2387     static const yytype_uint16 yystos[] =
2388     {
2389 michael 1118 0, 266, 0, 1, 5, 22, 26, 29, 36, 51,
2390     63, 64, 66, 73, 90, 100, 102, 119, 136, 171,
2391     180, 181, 185, 186, 267, 272, 277, 295, 301, 316,
2392     339, 358, 372, 390, 397, 407, 416, 442, 452, 458,
2393     462, 472, 536, 552, 573, 260, 261, 262, 262, 340,
2394     417, 453, 262, 463, 262, 537, 373, 443, 359, 262,
2395     262, 317, 391, 262, 262, 398, 408, 1, 37, 47,
2396     120, 296, 297, 298, 299, 300, 1, 13, 34, 35,
2397     40, 42, 96, 97, 105, 106, 126, 127, 143, 144,
2398     154, 163, 250, 251, 252, 553, 554, 555, 556, 557,
2399     558, 559, 560, 561, 562, 563, 564, 565, 566, 567,
2400     568, 569, 570, 571, 572, 153, 341, 345, 153, 418,
2401     422, 262, 1, 89, 459, 460, 461, 262, 1, 8,
2402 michael 1072 9, 12, 19, 28, 32, 33, 39, 43, 44, 46,
2403 michael 1118 52, 70, 71, 75, 82, 86, 87, 88, 91, 94,
2404     95, 104, 110, 111, 113, 114, 115, 116, 117, 128,
2405     137, 139, 140, 142, 145, 146, 149, 160, 182, 184,
2406     188, 192, 193, 194, 195, 196, 200, 201, 209, 241,
2407     243, 249, 254, 259, 473, 474, 475, 476, 477, 478,
2408     479, 480, 481, 482, 483, 484, 485, 486, 487, 488,
2409     489, 490, 491, 492, 493, 494, 495, 496, 497, 498,
2410     499, 500, 501, 502, 503, 504, 505, 506, 507, 508,
2411     509, 510, 511, 512, 513, 514, 515, 516, 517, 518,
2412     519, 520, 521, 522, 523, 524, 528, 532, 533, 534,
2413     535, 262, 262, 262, 262, 1, 55, 56, 57, 58,
2414     59, 60, 61, 62, 103, 138, 219, 253, 302, 303,
2415     304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
2416     314, 315, 1, 118, 148, 273, 274, 275, 276, 153,
2417     318, 322, 262, 1, 41, 54, 76, 78, 80, 81,
2418     99, 574, 575, 576, 577, 578, 579, 580, 581, 582,
2419     1, 37, 84, 120, 122, 123, 165, 167, 168, 183,
2420     227, 255, 256, 278, 279, 280, 284, 285, 286, 287,
2421     288, 289, 290, 291, 292, 293, 294, 262, 262, 260,
2422     263, 263, 263, 261, 297, 263, 263, 263, 263, 263,
2423     263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
2424     263, 263, 263, 261, 554, 262, 262, 1, 89, 155,
2425     454, 455, 456, 457, 263, 261, 460, 1, 120, 155,
2426     187, 464, 468, 469, 470, 471, 263, 263, 263, 263,
2427     263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
2428     263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
2429     263, 263, 263, 263, 263, 263, 263, 263, 529, 263,
2430     525, 263, 263, 263, 263, 263, 263, 263, 263, 263,
2431     263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
2432     263, 261, 474, 1, 4, 45, 48, 102, 120, 248,
2433     538, 539, 540, 541, 542, 546, 547, 548, 1, 26,
2434     49, 53, 147, 156, 157, 190, 248, 374, 375, 376,
2435     377, 378, 379, 380, 387, 388, 389, 1, 155, 187,
2436     248, 444, 448, 449, 450, 451, 1, 53, 83, 89,
2437     152, 360, 364, 365, 366, 370, 371, 260, 263, 263,
2438     263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
2439     261, 303, 260, 263, 263, 261, 274, 262, 1, 22,
2440     124, 155, 392, 393, 394, 395, 396, 263, 263, 263,
2441     263, 263, 263, 263, 261, 575, 260, 263, 263, 263,
2442     263, 263, 263, 263, 281, 263, 263, 263, 263, 261,
2443     279, 1, 120, 187, 248, 399, 400, 401, 402, 403,
2444     1, 120, 187, 409, 410, 411, 412, 153, 153, 153,
2445     260, 197, 131, 131, 197, 197, 131, 269, 269, 131,
2446     131, 197, 197, 131, 269, 197, 197, 197, 197, 197,
2447     260, 1, 23, 24, 30, 107, 108, 109, 112, 120,
2448     133, 134, 150, 151, 178, 342, 343, 344, 346, 347,
2449     348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
2450     1, 3, 6, 25, 26, 49, 53, 83, 85, 98,
2451     120, 152, 166, 179, 255, 419, 420, 421, 423, 424,
2452     425, 426, 427, 428, 429, 436, 437, 438, 439, 440,
2453     441, 263, 263, 261, 455, 153, 260, 263, 263, 465,
2454     261, 469, 197, 269, 197, 269, 131, 153, 131, 197,
2455     197, 131, 153, 197, 131, 131, 131, 197, 269, 197,
2456     197, 269, 153, 197, 131, 131, 269, 131, 131, 153,
2457     131, 131, 197, 197, 263, 197, 263, 269, 269, 197,
2458     269, 153, 197, 197, 197, 197, 198, 197, 198, 197,
2459     197, 269, 269, 131, 271, 269, 197, 197, 197, 197,
2460     260, 549, 263, 263, 543, 263, 263, 261, 539, 260,
2461     263, 263, 381, 263, 263, 263, 263, 263, 261, 375,
2462     263, 445, 263, 261, 449, 260, 361, 263, 263, 263,
2463     261, 365, 153, 153, 153, 153, 153, 153, 153, 153,
2464     220, 221, 222, 223, 224, 225, 226, 153, 153, 197,
2465     260, 153, 153, 260, 1, 26, 49, 53, 120, 147,
2466     166, 236, 248, 319, 320, 321, 323, 324, 325, 326,
2467     327, 328, 332, 260, 263, 263, 263, 261, 393, 197,
2468     197, 197, 153, 197, 197, 269, 260, 153, 197, 153,
2469     153, 153, 153, 153, 263, 153, 131, 153, 153, 260,
2470     260, 263, 404, 263, 261, 400, 260, 263, 413, 261,
2471     410, 260, 260, 260, 260, 260, 260, 260, 260, 173,
2472     174, 175, 176, 177, 268, 269, 260, 260, 260, 260,
2473     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2474     263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
2475     263, 263, 263, 261, 343, 260, 263, 263, 263, 263,
2476     263, 430, 263, 263, 263, 263, 263, 263, 263, 263,
2477     261, 420, 153, 153, 260, 260, 153, 153, 263, 260,
2478     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2479     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2480     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2481     260, 260, 204, 205, 206, 207, 208, 210, 211, 213,
2482     214, 215, 218, 228, 229, 230, 232, 233, 234, 237,
2483     240, 530, 531, 260, 204, 205, 206, 207, 208, 210,
2484     211, 213, 214, 215, 218, 228, 229, 230, 232, 233,
2485     234, 237, 240, 526, 527, 260, 260, 260, 260, 260,
2486     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2487     260, 14, 15, 16, 270, 271, 260, 260, 260, 260,
2488     260, 260, 263, 269, 197, 263, 153, 153, 260, 153,
2489     197, 263, 153, 131, 153, 153, 153, 260, 153, 263,
2490     153, 260, 263, 153, 153, 131, 368, 369, 260, 260,
2491     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2492     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2493     263, 263, 333, 263, 263, 263, 329, 263, 261, 320,
2494     153, 153, 153, 260, 260, 260, 260, 260, 260, 260,
2495     260, 260, 260, 260, 260, 260, 260, 260, 169, 170,
2496     282, 283, 260, 260, 260, 260, 153, 263, 153, 260,
2497     153, 263, 260, 268, 268, 268, 268, 268, 131, 131,
2498     269, 131, 131, 131, 131, 153, 131, 131, 269, 269,
2499     271, 260, 153, 216, 217, 153, 153, 197, 263, 153,
2500     153, 153, 153, 131, 153, 153, 153, 260, 260, 260,
2501     260, 260, 158, 466, 467, 260, 264, 260, 264, 270,
2502     270, 270, 11, 199, 550, 551, 260, 260, 11, 199,
2503     544, 545, 260, 260, 260, 260, 130, 382, 383, 385,
2504     260, 260, 260, 260, 260, 260, 158, 446, 447, 260,
2505     76, 231, 235, 362, 363, 260, 260, 202, 264, 367,
2506     153, 197, 263, 153, 153, 153, 263, 153, 260, 260,
2507     260, 260, 260, 264, 260, 92, 171, 203, 218, 238,
2508     239, 244, 245, 246, 247, 257, 405, 406, 260, 260,
2509     92, 171, 203, 218, 238, 239, 244, 245, 246, 247,
2510     257, 414, 415, 260, 260, 260, 260, 260, 260, 260,
2511     260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2512     260, 260, 130, 431, 432, 434, 260, 260, 260, 260,
2513     260, 260, 260, 260, 260, 264, 531, 527, 260, 264,
2514     260, 264, 384, 260, 264, 20, 21, 50, 67, 74,
2515     93, 121, 129, 172, 191, 386, 260, 264, 260, 264,
2516     131, 369, 260, 260, 260, 130, 334, 335, 337, 260,
2517     260, 260, 204, 205, 206, 207, 208, 210, 211, 213,
2518     214, 215, 218, 228, 229, 230, 232, 233, 234, 237,
2519     240, 330, 331, 260, 283, 260, 264, 260, 264, 433,
2520     260, 264, 10, 12, 27, 31, 242, 435, 467, 551,
2521     545, 386, 383, 447, 363, 336, 260, 264, 5, 38,
2522     49, 65, 72, 77, 79, 92, 125, 141, 159, 161,
2523     162, 229, 247, 257, 338, 260, 264, 406, 415, 435,
2524     432, 338, 335, 331
2525 michael 913 };
2526    
2527     #define yyerrok (yyerrstatus = 0)
2528     #define yyclearin (yychar = YYEMPTY)
2529     #define YYEMPTY (-2)
2530     #define YYEOF 0
2531    
2532     #define YYACCEPT goto yyacceptlab
2533     #define YYABORT goto yyabortlab
2534     #define YYERROR goto yyerrorlab
2535    
2536    
2537     /* Like YYERROR except do call yyerror. This remains here temporarily
2538     to ease the transition to the new meaning of YYERROR, for GCC.
2539 michael 1089 Once GCC version 2 has supplanted version 1, this can go. However,
2540     YYFAIL appears to be in use. Nevertheless, it is formally deprecated
2541     in Bison 2.4.2's NEWS entry, where a plan to phase it out is
2542     discussed. */
2543 michael 913
2544     #define YYFAIL goto yyerrlab
2545 michael 1089 #if defined YYFAIL
2546     /* This is here to suppress warnings from the GCC cpp's
2547     -Wunused-macros. Normally we don't worry about that warning, but
2548     some users do, and we want to make it easy for users to remove
2549     YYFAIL uses, which will produce warnings from Bison 2.5. */
2550     #endif
2551 michael 913
2552     #define YYRECOVERING() (!!yyerrstatus)
2553    
2554     #define YYBACKUP(Token, Value) \
2555     do \
2556     if (yychar == YYEMPTY && yylen == 1) \
2557     { \
2558     yychar = (Token); \
2559     yylval = (Value); \
2560     YYPOPSTACK (1); \
2561     goto yybackup; \
2562     } \
2563     else \
2564     { \
2565     yyerror (YY_("syntax error: cannot back up")); \
2566     YYERROR; \
2567     } \
2568     while (YYID (0))
2569    
2570    
2571     #define YYTERROR 1
2572     #define YYERRCODE 256
2573    
2574    
2575     /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2576     If N is 0, then set CURRENT to the empty location which ends
2577     the previous symbol: RHS[0] (always defined). */
2578    
2579     #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2580     #ifndef YYLLOC_DEFAULT
2581     # define YYLLOC_DEFAULT(Current, Rhs, N) \
2582     do \
2583     if (YYID (N)) \
2584     { \
2585     (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2586     (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2587     (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2588     (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2589     } \
2590     else \
2591     { \
2592     (Current).first_line = (Current).last_line = \
2593     YYRHSLOC (Rhs, 0).last_line; \
2594     (Current).first_column = (Current).last_column = \
2595     YYRHSLOC (Rhs, 0).last_column; \
2596     } \
2597     while (YYID (0))
2598     #endif
2599    
2600    
2601 michael 1133 /* This macro is provided for backward compatibility. */
2602 michael 913
2603     #ifndef YY_LOCATION_PRINT
2604 michael 1133 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2605 michael 913 #endif
2606    
2607    
2608     /* YYLEX -- calling `yylex' with the right arguments. */
2609    
2610     #ifdef YYLEX_PARAM
2611     # define YYLEX yylex (YYLEX_PARAM)
2612     #else
2613     # define YYLEX yylex ()
2614     #endif
2615    
2616     /* Enable debugging if requested. */
2617     #if YYDEBUG
2618    
2619     # ifndef YYFPRINTF
2620     # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2621     # define YYFPRINTF fprintf
2622     # endif
2623    
2624     # define YYDPRINTF(Args) \
2625     do { \
2626     if (yydebug) \
2627     YYFPRINTF Args; \
2628     } while (YYID (0))
2629    
2630     # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2631     do { \
2632     if (yydebug) \
2633     { \
2634     YYFPRINTF (stderr, "%s ", Title); \
2635     yy_symbol_print (stderr, \
2636     Type, Value); \
2637     YYFPRINTF (stderr, "\n"); \
2638     } \
2639     } while (YYID (0))
2640    
2641    
2642     /*--------------------------------.
2643     | Print this symbol on YYOUTPUT. |
2644     `--------------------------------*/
2645    
2646     /*ARGSUSED*/
2647     #if (defined __STDC__ || defined __C99__FUNC__ \
2648     || defined __cplusplus || defined _MSC_VER)
2649     static void
2650     yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2651     #else
2652     static void
2653     yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2654     FILE *yyoutput;
2655     int yytype;
2656     YYSTYPE const * const yyvaluep;
2657     #endif
2658     {
2659     if (!yyvaluep)
2660     return;
2661     # ifdef YYPRINT
2662     if (yytype < YYNTOKENS)
2663     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2664     # else
2665     YYUSE (yyoutput);
2666     # endif
2667     switch (yytype)
2668     {
2669     default:
2670     break;
2671     }
2672     }
2673    
2674    
2675     /*--------------------------------.
2676     | Print this symbol on YYOUTPUT. |
2677     `--------------------------------*/
2678    
2679     #if (defined __STDC__ || defined __C99__FUNC__ \
2680     || defined __cplusplus || defined _MSC_VER)
2681     static void
2682     yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2683     #else
2684     static void
2685     yy_symbol_print (yyoutput, yytype, yyvaluep)
2686     FILE *yyoutput;
2687     int yytype;
2688     YYSTYPE const * const yyvaluep;
2689     #endif
2690     {
2691     if (yytype < YYNTOKENS)
2692     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2693     else
2694     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2695    
2696     yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2697     YYFPRINTF (yyoutput, ")");
2698     }
2699    
2700     /*------------------------------------------------------------------.
2701     | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2702     | TOP (included). |
2703     `------------------------------------------------------------------*/
2704    
2705     #if (defined __STDC__ || defined __C99__FUNC__ \
2706     || defined __cplusplus || defined _MSC_VER)
2707     static void
2708 michael 967 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2709 michael 913 #else
2710     static void
2711 michael 967 yy_stack_print (yybottom, yytop)
2712     yytype_int16 *yybottom;
2713     yytype_int16 *yytop;
2714 michael 913 #endif
2715     {
2716     YYFPRINTF (stderr, "Stack now");
2717 michael 967 for (; yybottom <= yytop; yybottom++)
2718     {
2719     int yybot = *yybottom;
2720     YYFPRINTF (stderr, " %d", yybot);
2721     }
2722 michael 913 YYFPRINTF (stderr, "\n");
2723     }
2724    
2725     # define YY_STACK_PRINT(Bottom, Top) \
2726     do { \
2727     if (yydebug) \
2728     yy_stack_print ((Bottom), (Top)); \
2729     } while (YYID (0))
2730    
2731    
2732     /*------------------------------------------------.
2733     | Report that the YYRULE is going to be reduced. |
2734     `------------------------------------------------*/
2735    
2736     #if (defined __STDC__ || defined __C99__FUNC__ \
2737     || defined __cplusplus || defined _MSC_VER)
2738     static void
2739     yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2740     #else
2741     static void
2742     yy_reduce_print (yyvsp, yyrule)
2743     YYSTYPE *yyvsp;
2744     int yyrule;
2745     #endif
2746     {
2747     int yynrhs = yyr2[yyrule];
2748     int yyi;
2749     unsigned long int yylno = yyrline[yyrule];
2750     YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2751     yyrule - 1, yylno);
2752     /* The symbols being reduced. */
2753     for (yyi = 0; yyi < yynrhs; yyi++)
2754     {
2755 michael 967 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2756 michael 913 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2757     &(yyvsp[(yyi + 1) - (yynrhs)])
2758     );
2759 michael 967 YYFPRINTF (stderr, "\n");
2760 michael 913 }
2761     }
2762    
2763     # define YY_REDUCE_PRINT(Rule) \
2764     do { \
2765     if (yydebug) \
2766     yy_reduce_print (yyvsp, Rule); \
2767     } while (YYID (0))
2768    
2769     /* Nonzero means print parse trace. It is left uninitialized so that
2770     multiple parsers can coexist. */
2771     int yydebug;
2772     #else /* !YYDEBUG */
2773     # define YYDPRINTF(Args)
2774     # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2775     # define YY_STACK_PRINT(Bottom, Top)
2776     # define YY_REDUCE_PRINT(Rule)
2777     #endif /* !YYDEBUG */
2778    
2779    
2780     /* YYINITDEPTH -- initial size of the parser's stacks. */
2781     #ifndef YYINITDEPTH
2782     # define YYINITDEPTH 200
2783     #endif
2784    
2785     /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2786     if the built-in stack extension method is used).
2787    
2788     Do not make this value too large; the results are undefined if
2789     YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2790     evaluated with infinite-precision integer arithmetic. */
2791    
2792     #ifndef YYMAXDEPTH
2793     # define YYMAXDEPTH 10000
2794     #endif
2795    
2796    
2797     #if YYERROR_VERBOSE
2798    
2799     # ifndef yystrlen
2800     # if defined __GLIBC__ && defined _STRING_H
2801     # define yystrlen strlen
2802     # else
2803     /* Return the length of YYSTR. */
2804     #if (defined __STDC__ || defined __C99__FUNC__ \
2805     || defined __cplusplus || defined _MSC_VER)
2806     static YYSIZE_T
2807     yystrlen (const char *yystr)
2808     #else
2809     static YYSIZE_T
2810     yystrlen (yystr)
2811     const char *yystr;
2812     #endif
2813     {
2814     YYSIZE_T yylen;
2815     for (yylen = 0; yystr[yylen]; yylen++)
2816     continue;
2817     return yylen;
2818     }
2819     # endif
2820     # endif
2821    
2822     # ifndef yystpcpy
2823     # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2824     # define yystpcpy stpcpy
2825     # else
2826     /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2827     YYDEST. */
2828     #if (defined __STDC__ || defined __C99__FUNC__ \
2829     || defined __cplusplus || defined _MSC_VER)
2830     static char *
2831     yystpcpy (char *yydest, const char *yysrc)
2832     #else
2833     static char *
2834     yystpcpy (yydest, yysrc)
2835     char *yydest;
2836     const char *yysrc;
2837     #endif
2838     {
2839     char *yyd = yydest;
2840     const char *yys = yysrc;
2841    
2842     while ((*yyd++ = *yys++) != '\0')
2843     continue;
2844    
2845     return yyd - 1;
2846     }
2847     # endif
2848     # endif
2849    
2850     # ifndef yytnamerr
2851     /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2852     quotes and backslashes, so that it's suitable for yyerror. The
2853     heuristic is that double-quoting is unnecessary unless the string
2854     contains an apostrophe, a comma, or backslash (other than
2855     backslash-backslash). YYSTR is taken from yytname. If YYRES is
2856     null, do not copy; instead, return the length of what the result
2857     would have been. */
2858     static YYSIZE_T
2859     yytnamerr (char *yyres, const char *yystr)
2860     {
2861     if (*yystr == '"')
2862     {
2863     YYSIZE_T yyn = 0;
2864     char const *yyp = yystr;
2865    
2866     for (;;)
2867     switch (*++yyp)
2868     {
2869     case '\'':
2870     case ',':
2871     goto do_not_strip_quotes;
2872    
2873     case '\\':
2874     if (*++yyp != '\\')
2875     goto do_not_strip_quotes;
2876     /* Fall through. */
2877     default:
2878     if (yyres)
2879     yyres[yyn] = *yyp;
2880     yyn++;
2881     break;
2882    
2883     case '"':
2884     if (yyres)
2885     yyres[yyn] = '\0';
2886     return yyn;
2887     }
2888     do_not_strip_quotes: ;
2889     }
2890    
2891     if (! yyres)
2892     return yystrlen (yystr);
2893    
2894     return yystpcpy (yyres, yystr) - yyres;
2895     }
2896     # endif
2897    
2898 michael 1133 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2899     about the unexpected token YYTOKEN for the state stack whose top is
2900     YYSSP.
2901    
2902     Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2903     not large enough to hold the message. In that case, also set
2904     *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2905     required number of bytes is too large to store. */
2906     static int
2907     yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2908     yytype_int16 *yyssp, int yytoken)
2909 michael 913 {
2910 michael 1133 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytoken]);
2911     YYSIZE_T yysize = yysize0;
2912     YYSIZE_T yysize1;
2913     enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2914     /* Internationalized format string. */
2915     const char *yyformat = 0;
2916     /* Arguments of yyformat. */
2917     char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2918     /* Number of reported tokens (one for the "unexpected", one per
2919     "expected"). */
2920     int yycount = 0;
2921 michael 913
2922 michael 1133 /* There are many possibilities here to consider:
2923     - Assume YYFAIL is not used. It's too flawed to consider. See
2924     <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
2925     for details. YYERROR is fine as it does not invoke this
2926     function.
2927     - If this state is a consistent state with a default action, then
2928     the only way this function was invoked is if the default action
2929     is an error action. In that case, don't check for expected
2930     tokens because there are none.
2931     - The only way there can be no lookahead present (in yychar) is if
2932     this state is a consistent state with a default action. Thus,
2933     detecting the absence of a lookahead is sufficient to determine
2934     that there is no unexpected or expected token to report. In that
2935     case, just report a simple "syntax error".
2936     - Don't assume there isn't a lookahead just because this state is a
2937     consistent state with a default action. There might have been a
2938     previous inconsistent state, consistent state with a non-default
2939     action, or user semantic action that manipulated yychar.
2940     - Of course, the expected token list depends on states to have
2941     correct lookahead information, and it depends on the parser not
2942     to perform extra reductions after fetching a lookahead from the
2943     scanner and before detecting a syntax error. Thus, state merging
2944     (from LALR or IELR) and default reductions corrupt the expected
2945     token list. However, the list is correct for canonical LR with
2946     one exception: it will still contain any token that will not be
2947     accepted due to an error action in a later state.
2948     */
2949     if (yytoken != YYEMPTY)
2950 michael 913 {
2951 michael 1133 int yyn = yypact[*yyssp];
2952     yyarg[yycount++] = yytname[yytoken];
2953     if (!yypact_value_is_default (yyn))
2954     {
2955     /* Start YYX at -YYN if negative to avoid negative indexes in
2956     YYCHECK. In other words, skip the first -YYN actions for
2957     this state because they are default actions. */
2958     int yyxbegin = yyn < 0 ? -yyn : 0;
2959     /* Stay within bounds of both yycheck and yytname. */
2960     int yychecklim = YYLAST - yyn + 1;
2961     int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2962     int yyx;
2963 michael 913
2964 michael 1133 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2965     if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2966     && !yytable_value_is_error (yytable[yyx + yyn]))
2967     {
2968     if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2969     {
2970     yycount = 1;
2971     yysize = yysize0;
2972     break;
2973     }
2974     yyarg[yycount++] = yytname[yyx];
2975     yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2976     if (! (yysize <= yysize1
2977     && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2978     return 2;
2979     yysize = yysize1;
2980     }
2981     }
2982     }
2983 michael 913
2984 michael 1133 switch (yycount)
2985     {
2986     # define YYCASE_(N, S) \
2987     case N: \
2988     yyformat = S; \
2989     break
2990     YYCASE_(0, YY_("syntax error"));
2991     YYCASE_(1, YY_("syntax error, unexpected %s"));
2992     YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2993     YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2994     YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2995     YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2996     # undef YYCASE_
2997     }
2998 michael 913
2999 michael 1133 yysize1 = yysize + yystrlen (yyformat);
3000     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
3001     return 2;
3002     yysize = yysize1;
3003 michael 913
3004 michael 1133 if (*yymsg_alloc < yysize)
3005     {
3006     *yymsg_alloc = 2 * yysize;
3007     if (! (yysize <= *yymsg_alloc
3008     && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
3009     *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
3010     return 1;
3011     }
3012 michael 913
3013 michael 1133 /* Avoid sprintf, as that infringes on the user's name space.
3014     Don't have undefined behavior even if the translation
3015     produced a string with the wrong number of "%s"s. */
3016     {
3017     char *yyp = *yymsg;
3018     int yyi = 0;
3019     while ((*yyp = *yyformat) != '\0')
3020     if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
3021     {
3022     yyp += yytnamerr (yyp, yyarg[yyi++]);
3023     yyformat += 2;
3024     }
3025     else
3026     {
3027     yyp++;
3028     yyformat++;
3029     }
3030     }
3031     return 0;
3032 michael 913 }
3033     #endif /* YYERROR_VERBOSE */
3034    
3035     /*-----------------------------------------------.
3036     | Release the memory associated to this symbol. |
3037     `-----------------------------------------------*/
3038    
3039     /*ARGSUSED*/
3040     #if (defined __STDC__ || defined __C99__FUNC__ \
3041     || defined __cplusplus || defined _MSC_VER)
3042     static void
3043     yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3044     #else
3045     static void
3046     yydestruct (yymsg, yytype, yyvaluep)
3047     const char *yymsg;
3048     int yytype;
3049     YYSTYPE *yyvaluep;
3050     #endif
3051     {
3052     YYUSE (yyvaluep);
3053    
3054     if (!yymsg)
3055     yymsg = "Deleting";
3056     YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
3057    
3058     switch (yytype)
3059     {
3060    
3061     default:
3062     break;
3063     }
3064     }
3065    
3066 michael 1133
3067 michael 913 /* Prevent warnings from -Wmissing-prototypes. */
3068     #ifdef YYPARSE_PARAM
3069     #if defined __STDC__ || defined __cplusplus
3070     int yyparse (void *YYPARSE_PARAM);
3071     #else
3072     int yyparse ();
3073     #endif
3074     #else /* ! YYPARSE_PARAM */
3075     #if defined __STDC__ || defined __cplusplus
3076     int yyparse (void);
3077     #else
3078     int yyparse ();
3079     #endif
3080     #endif /* ! YYPARSE_PARAM */
3081    
3082    
3083 michael 967 /* The lookahead symbol. */
3084 michael 913 int yychar;
3085    
3086 michael 967 /* The semantic value of the lookahead symbol. */
3087 michael 913 YYSTYPE yylval;
3088    
3089     /* Number of syntax errors so far. */
3090     int yynerrs;
3091    
3092    
3093 michael 1133 /*----------.
3094     | yyparse. |
3095     `----------*/
3096 michael 913
3097     #ifdef YYPARSE_PARAM
3098     #if (defined __STDC__ || defined __C99__FUNC__ \
3099     || defined __cplusplus || defined _MSC_VER)
3100     int
3101     yyparse (void *YYPARSE_PARAM)
3102     #else
3103     int
3104     yyparse (YYPARSE_PARAM)
3105     void *YYPARSE_PARAM;
3106     #endif
3107     #else /* ! YYPARSE_PARAM */
3108     #if (defined __STDC__ || defined __C99__FUNC__ \
3109     || defined __cplusplus || defined _MSC_VER)
3110     int
3111     yyparse (void)
3112     #else
3113     int
3114     yyparse ()
3115    
3116     #endif
3117     #endif
3118     {
3119 michael 967 int yystate;
3120     /* Number of tokens to shift before error messages enabled. */
3121     int yyerrstatus;
3122 michael 913
3123 michael 967 /* The stacks and their tools:
3124     `yyss': related to states.
3125     `yyvs': related to semantic values.
3126 michael 913
3127 michael 967 Refer to the stacks thru separate pointers, to allow yyoverflow
3128     to reallocate them elsewhere. */
3129 michael 913
3130 michael 967 /* The state stack. */
3131     yytype_int16 yyssa[YYINITDEPTH];
3132     yytype_int16 *yyss;
3133     yytype_int16 *yyssp;
3134 michael 913
3135 michael 967 /* The semantic value stack. */
3136     YYSTYPE yyvsa[YYINITDEPTH];
3137     YYSTYPE *yyvs;
3138     YYSTYPE *yyvsp;
3139 michael 913
3140 michael 967 YYSIZE_T yystacksize;
3141 michael 913
3142 michael 967 int yyn;
3143     int yyresult;
3144     /* Lookahead token as an internal (translated) token number. */
3145     int yytoken;
3146 michael 913 /* The variables used to return semantic value and location from the
3147     action routines. */
3148     YYSTYPE yyval;
3149    
3150 michael 967 #if YYERROR_VERBOSE
3151     /* Buffer for error messages, and its allocated size. */
3152     char yymsgbuf[128];
3153     char *yymsg = yymsgbuf;
3154     YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
3155     #endif
3156 michael 913
3157 michael 967 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
3158    
3159 michael 913 /* The number of symbols on the RHS of the reduced rule.
3160     Keep to zero when no symbol should be popped. */
3161     int yylen = 0;
3162    
3163 michael 967 yytoken = 0;
3164     yyss = yyssa;
3165     yyvs = yyvsa;
3166     yystacksize = YYINITDEPTH;
3167    
3168 michael 913 YYDPRINTF ((stderr, "Starting parse\n"));
3169    
3170     yystate = 0;
3171     yyerrstatus = 0;
3172     yynerrs = 0;
3173 michael 967 yychar = YYEMPTY; /* Cause a token to be read. */
3174 michael 913
3175     /* Initialize stack pointers.
3176     Waste one element of value and location stack
3177     so that they stay on the same level as the state stack.
3178     The wasted elements are never initialized. */
3179     yyssp = yyss;
3180     yyvsp = yyvs;
3181    
3182     goto yysetstate;
3183    
3184     /*------------------------------------------------------------.
3185     | yynewstate -- Push a new state, which is found in yystate. |
3186     `------------------------------------------------------------*/
3187     yynewstate:
3188     /* In all cases, when you get here, the value and location stacks
3189     have just been pushed. So pushing a state here evens the stacks. */
3190     yyssp++;
3191    
3192     yysetstate:
3193     *yyssp = yystate;
3194    
3195     if (yyss + yystacksize - 1 <= yyssp)
3196     {
3197     /* Get the current used size of the three stacks, in elements. */
3198     YYSIZE_T yysize = yyssp - yyss + 1;
3199    
3200     #ifdef yyoverflow
3201     {
3202     /* Give user a chance to reallocate the stack. Use copies of
3203     these so that the &'s don't force the real ones into
3204     memory. */
3205     YYSTYPE *yyvs1 = yyvs;
3206     yytype_int16 *yyss1 = yyss;
3207    
3208     /* Each stack pointer address is followed by the size of the
3209     data in use in that stack, in bytes. This used to be a
3210     conditional around just the two extra args, but that might
3211     be undefined if yyoverflow is a macro. */
3212     yyoverflow (YY_("memory exhausted"),
3213     &yyss1, yysize * sizeof (*yyssp),
3214     &yyvs1, yysize * sizeof (*yyvsp),
3215     &yystacksize);
3216    
3217     yyss = yyss1;
3218     yyvs = yyvs1;
3219     }
3220     #else /* no yyoverflow */
3221     # ifndef YYSTACK_RELOCATE
3222     goto yyexhaustedlab;
3223     # else
3224     /* Extend the stack our own way. */
3225     if (YYMAXDEPTH <= yystacksize)
3226     goto yyexhaustedlab;
3227     yystacksize *= 2;
3228     if (YYMAXDEPTH < yystacksize)
3229     yystacksize = YYMAXDEPTH;
3230    
3231     {
3232     yytype_int16 *yyss1 = yyss;
3233     union yyalloc *yyptr =
3234     (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
3235     if (! yyptr)
3236     goto yyexhaustedlab;
3237 michael 967 YYSTACK_RELOCATE (yyss_alloc, yyss);
3238     YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3239 michael 913 # undef YYSTACK_RELOCATE
3240     if (yyss1 != yyssa)
3241     YYSTACK_FREE (yyss1);
3242     }
3243     # endif
3244     #endif /* no yyoverflow */
3245    
3246     yyssp = yyss + yysize - 1;
3247     yyvsp = yyvs + yysize - 1;
3248    
3249     YYDPRINTF ((stderr, "Stack size increased to %lu\n",
3250     (unsigned long int) yystacksize));
3251    
3252     if (yyss + yystacksize - 1 <= yyssp)
3253     YYABORT;
3254     }
3255    
3256     YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3257    
3258 michael 967 if (yystate == YYFINAL)
3259     YYACCEPT;
3260    
3261 michael 913 goto yybackup;
3262    
3263     /*-----------.
3264     | yybackup. |
3265     `-----------*/
3266     yybackup:
3267    
3268     /* Do appropriate processing given the current state. Read a
3269 michael 967 lookahead token if we need one and don't already have one. */
3270 michael 913
3271 michael 967 /* First try to decide what to do without reference to lookahead token. */
3272 michael 913 yyn = yypact[yystate];
3273 michael 1133 if (yypact_value_is_default (yyn))
3274 michael 913 goto yydefault;
3275    
3276 michael 967 /* Not known => get a lookahead token if don't already have one. */
3277 michael 913
3278 michael 967 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
3279 michael 913 if (yychar == YYEMPTY)
3280     {
3281     YYDPRINTF ((stderr, "Reading a token: "));
3282     yychar = YYLEX;
3283     }
3284    
3285     if (yychar <= YYEOF)
3286     {
3287     yychar = yytoken = YYEOF;
3288     YYDPRINTF ((stderr, "Now at end of input.\n"));
3289     }
3290     else
3291     {
3292     yytoken = YYTRANSLATE (yychar);
3293     YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3294     }
3295    
3296     /* If the proper action on seeing token YYTOKEN is to reduce or to
3297     detect an error, take that action. */
3298     yyn += yytoken;
3299     if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3300     goto yydefault;
3301     yyn = yytable[yyn];
3302     if (yyn <= 0)
3303     {
3304 michael 1133 if (yytable_value_is_error (yyn))
3305     goto yyerrlab;
3306 michael 913 yyn = -yyn;
3307     goto yyreduce;
3308     }
3309    
3310     /* Count tokens shifted since error; after three, turn off error
3311     status. */
3312     if (yyerrstatus)
3313     yyerrstatus--;
3314    
3315 michael 967 /* Shift the lookahead token. */
3316 michael 913 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3317    
3318 michael 967 /* Discard the shifted token. */
3319     yychar = YYEMPTY;
3320 michael 913
3321     yystate = yyn;
3322     *++yyvsp = yylval;
3323    
3324     goto yynewstate;
3325    
3326    
3327     /*-----------------------------------------------------------.
3328     | yydefault -- do the default action for the current state. |
3329     `-----------------------------------------------------------*/
3330     yydefault:
3331     yyn = yydefact[yystate];
3332     if (yyn == 0)
3333     goto yyerrlab;
3334     goto yyreduce;
3335    
3336    
3337     /*-----------------------------.
3338     | yyreduce -- Do a reduction. |
3339     `-----------------------------*/
3340     yyreduce:
3341     /* yyn is the number of a rule to reduce with. */
3342     yylen = yyr2[yyn];
3343    
3344     /* If YYLEN is nonzero, implement the default value of the action:
3345     `$$ = $1'.
3346    
3347     Otherwise, the following line sets YYVAL to garbage.
3348     This behavior is undocumented and Bison
3349     users should not rely upon it. Assigning to YYVAL
3350     unconditionally makes the parser a bit smaller, and it avoids a
3351     GCC warning that YYVAL may be used uninitialized. */
3352     yyval = yyvsp[1-yylen];
3353    
3354    
3355     YY_REDUCE_PRINT (yyn);
3356     switch (yyn)
3357     {
3358     case 26:
3359 michael 967
3360 michael 1133 /* Line 1806 of yacc.c */
3361 michael 1123 #line 423 "ircd_parser.y"
3362 michael 913 { (yyval.number) = 0; }
3363     break;
3364    
3365     case 28:
3366 michael 967
3367 michael 1133 /* Line 1806 of yacc.c */
3368 michael 1123 #line 425 "ircd_parser.y"
3369 michael 913 {
3370     (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3371     }
3372     break;
3373    
3374     case 29:
3375 michael 967
3376 michael 1133 /* Line 1806 of yacc.c */
3377 michael 1123 #line 429 "ircd_parser.y"
3378 michael 913 {
3379     (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3380     }
3381     break;
3382    
3383     case 30:
3384 michael 967
3385 michael 1133 /* Line 1806 of yacc.c */
3386 michael 1123 #line 433 "ircd_parser.y"
3387 michael 913 {
3388     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3389     }
3390     break;
3391    
3392     case 31:
3393 michael 967
3394 michael 1133 /* Line 1806 of yacc.c */
3395 michael 1123 #line 437 "ircd_parser.y"
3396 michael 913 {
3397     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3398     }
3399     break;
3400    
3401     case 32:
3402 michael 967
3403 michael 1133 /* Line 1806 of yacc.c */
3404 michael 1123 #line 441 "ircd_parser.y"
3405 michael 913 {
3406     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3407     }
3408     break;
3409    
3410     case 33:
3411 michael 967
3412 michael 1133 /* Line 1806 of yacc.c */
3413 michael 1123 #line 445 "ircd_parser.y"
3414 michael 913 {
3415     (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3416     }
3417     break;
3418    
3419     case 34:
3420 michael 967
3421 michael 1133 /* Line 1806 of yacc.c */
3422 michael 1123 #line 450 "ircd_parser.y"
3423 michael 913 { (yyval.number) = 0; }
3424     break;
3425    
3426     case 36:
3427 michael 967
3428 michael 1133 /* Line 1806 of yacc.c */
3429 michael 1123 #line 451 "ircd_parser.y"
3430 michael 913 { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
3431     break;
3432    
3433     case 37:
3434 michael 967
3435 michael 1133 /* Line 1806 of yacc.c */
3436 michael 1123 #line 452 "ircd_parser.y"
3437 michael 913 { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
3438     break;
3439    
3440     case 38:
3441 michael 967
3442 michael 1133 /* Line 1806 of yacc.c */
3443 michael 1123 #line 453 "ircd_parser.y"
3444 michael 913 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
3445     break;
3446    
3447     case 39:
3448 michael 967
3449 michael 1133 /* Line 1806 of yacc.c */
3450 michael 1123 #line 454 "ircd_parser.y"
3451 michael 913 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
3452     break;
3453    
3454     case 46:
3455 michael 967
3456 michael 1133 /* Line 1806 of yacc.c */
3457 michael 1123 #line 468 "ircd_parser.y"
3458 michael 913 {
3459 michael 967 if (conf_parser_ctx.pass == 2)
3460 michael 978 add_conf_module(libio_basename(yylval.string));
3461 michael 913 }
3462     break;
3463    
3464     case 47:
3465 michael 967
3466 michael 1133 /* Line 1806 of yacc.c */
3467 michael 1123 #line 474 "ircd_parser.y"
3468 michael 913 {
3469 michael 967 if (conf_parser_ctx.pass == 2)
3470 michael 913 mod_add_path(yylval.string);
3471     }
3472     break;
3473    
3474 michael 967 case 64:
3475    
3476 michael 1133 /* Line 1806 of yacc.c */
3477 michael 1123 #line 494 "ircd_parser.y"
3478 michael 913 {
3479 michael 1024 #ifdef HAVE_LIBCRYPTO
3480 michael 967 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3481     ServerInfo.tls_version = 0;
3482 michael 1024 #endif
3483 michael 967 }
3484     break;
3485    
3486     case 65:
3487    
3488 michael 1133 /* Line 1806 of yacc.c */
3489 michael 1123 #line 500 "ircd_parser.y"
3490 michael 967 {
3491 michael 1024 #ifdef HAVE_LIBCRYPTO
3492 michael 967 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3493     {
3494     if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_SSLV3))
3495     SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3496     if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_TLSV1))
3497     SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3498     }
3499 michael 1024 #endif
3500 michael 967 }
3501     break;
3502    
3503     case 68:
3504    
3505 michael 1133 /* Line 1806 of yacc.c */
3506 michael 1123 #line 514 "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_SSLV3;
3511 michael 1024 #endif
3512 michael 967 }
3513     break;
3514    
3515     case 69:
3516    
3517 michael 1133 /* Line 1806 of yacc.c */
3518 michael 1123 #line 520 "ircd_parser.y"
3519 michael 967 {
3520 michael 1024 #ifdef HAVE_LIBCRYPTO
3521 michael 967 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3522     ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_TLSV1;
3523 michael 1024 #endif
3524 michael 967 }
3525     break;
3526    
3527     case 70:
3528    
3529 michael 1133 /* Line 1806 of yacc.c */
3530 michael 1123 #line 528 "ircd_parser.y"
3531 michael 967 {
3532 michael 913 #ifdef HAVE_LIBCRYPTO
3533 michael 967 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3534 michael 913 {
3535     if (!ServerInfo.rsa_private_key_file)
3536     {
3537     yyerror("No rsa_private_key_file specified, SSL disabled");
3538     break;
3539     }
3540    
3541 michael 967 if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3542     SSL_FILETYPE_PEM) <= 0)
3543 michael 913 {
3544     yyerror(ERR_lib_error_string(ERR_get_error()));
3545     break;
3546     }
3547    
3548 michael 967 if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3549     SSL_FILETYPE_PEM) <= 0)
3550 michael 913 {
3551     yyerror(ERR_lib_error_string(ERR_get_error()));
3552     break;
3553     }
3554    
3555 michael 967 if (!SSL_CTX_check_private_key(ServerInfo.server_ctx))
3556 michael 913 {
3557 michael 967 yyerror(ERR_lib_error_string(ERR_get_error()));
3558 michael 913 break;
3559     }
3560     }
3561     #endif
3562     }
3563     break;
3564    
3565 michael 967 case 71:
3566    
3567 michael 1133 /* Line 1806 of yacc.c */
3568 michael 1123 #line 562 "ircd_parser.y"
3569 michael 913 {
3570     #ifdef HAVE_LIBCRYPTO
3571 michael 967 if (conf_parser_ctx.pass == 1)
3572 michael 913 {
3573     BIO *file;
3574    
3575     if (ServerInfo.rsa_private_key)
3576     {
3577     RSA_free(ServerInfo.rsa_private_key);
3578     ServerInfo.rsa_private_key = NULL;
3579     }
3580    
3581     if (ServerInfo.rsa_private_key_file)
3582     {
3583     MyFree(ServerInfo.rsa_private_key_file);
3584     ServerInfo.rsa_private_key_file = NULL;
3585     }
3586    
3587     DupString(ServerInfo.rsa_private_key_file, yylval.string);
3588    
3589     if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3590     {
3591     yyerror("File open failed, ignoring");
3592     break;
3593     }
3594    
3595     ServerInfo.rsa_private_key = (RSA *)PEM_read_bio_RSAPrivateKey(file, NULL,
3596     0, NULL);
3597    
3598     BIO_set_close(file, BIO_CLOSE);
3599     BIO_free(file);
3600    
3601     if (ServerInfo.rsa_private_key == NULL)
3602     {
3603     yyerror("Couldn't extract key, ignoring");
3604     break;
3605     }
3606    
3607     if (!RSA_check_key(ServerInfo.rsa_private_key))
3608     {
3609     RSA_free(ServerInfo.rsa_private_key);
3610     ServerInfo.rsa_private_key = NULL;
3611    
3612     yyerror("Invalid key, ignoring");
3613     break;
3614     }
3615    
3616     /* require 2048 bit (256 byte) key */
3617     if (RSA_size(ServerInfo.rsa_private_key) != 256)
3618     {
3619     RSA_free(ServerInfo.rsa_private_key);
3620     ServerInfo.rsa_private_key = NULL;
3621    
3622     yyerror("Not a 2048 bit key, ignoring");
3623     }
3624     }
3625     #endif
3626     }
3627     break;
3628    
3629 michael 967 case 72:
3630    
3631 michael 1133 /* Line 1806 of yacc.c */
3632 michael 1123 #line 622 "ircd_parser.y"
3633 michael 913 {
3634     /* this isn't rehashable */
3635 michael 1117 if (conf_parser_ctx.pass == 2 && !ServerInfo.name)
3636 michael 913 {
3637 michael 1117 if (valid_servname(yylval.string))
3638     DupString(ServerInfo.name, yylval.string);
3639     else
3640 michael 913 {
3641 michael 1117 ilog(L_ERROR, "Ignoring serverinfo::name -- invalid name. Aborting.");
3642     exit(0);
3643 michael 913 }
3644     }
3645     }
3646     break;
3647    
3648 michael 967 case 73:
3649    
3650 michael 1133 /* Line 1806 of yacc.c */
3651 michael 1123 #line 637 "ircd_parser.y"
3652 michael 913 {
3653     /* this isn't rehashable */
3654 michael 967 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3655 michael 913 {
3656     if (valid_sid(yylval.string))
3657     DupString(ServerInfo.sid, yylval.string);
3658     else
3659     {
3660 michael 1117 ilog(L_ERROR, "Ignoring serverinfo::sid -- invalid SID. Aborting.");
3661 michael 913 exit(0);
3662     }
3663     }
3664     }
3665     break;
3666    
3667 michael 967 case 74:
3668    
3669 michael 1133 /* Line 1806 of yacc.c */
3670 michael 1123 #line 652 "ircd_parser.y"
3671 michael 913 {
3672 michael 967 if (conf_parser_ctx.pass == 2)
3673 michael 913 {
3674     MyFree(ServerInfo.description);
3675     DupString(ServerInfo.description,yylval.string);
3676     }
3677     }
3678     break;
3679    
3680 michael 967 case 75:
3681    
3682 michael 1133 /* Line 1806 of yacc.c */
3683 michael 1123 #line 661 "ircd_parser.y"
3684 michael 913 {
3685 michael 967 if (conf_parser_ctx.pass == 2)
3686 michael 913 {
3687     char *p;
3688    
3689     if ((p = strchr(yylval.string, ' ')) != NULL)
3690     p = '\0';
3691    
3692     MyFree(ServerInfo.network_name);
3693     DupString(ServerInfo.network_name, yylval.string);
3694     }
3695     }
3696     break;
3697    
3698 michael 967 case 76:
3699    
3700 michael 1133 /* Line 1806 of yacc.c */
3701 michael 1123 #line 675 "ircd_parser.y"
3702 michael 913 {
3703 michael 967 if (conf_parser_ctx.pass == 2)
3704 michael 913 {
3705     MyFree(ServerInfo.network_desc);
3706     DupString(ServerInfo.network_desc, yylval.string);
3707     }
3708     }
3709     break;
3710    
3711 michael 967 case 77:
3712    
3713 michael 1133 /* Line 1806 of yacc.c */
3714 michael 1123 #line 684 "ircd_parser.y"
3715 michael 913 {
3716 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3717 michael 913 {
3718     struct addrinfo hints, *res;
3719    
3720     memset(&hints, 0, sizeof(hints));
3721    
3722     hints.ai_family = AF_UNSPEC;
3723     hints.ai_socktype = SOCK_STREAM;
3724     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3725    
3726 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3727 michael 913 ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
3728     else
3729     {
3730     assert(res != NULL);
3731    
3732     memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3733     ServerInfo.ip.ss.ss_family = res->ai_family;
3734     ServerInfo.ip.ss_len = res->ai_addrlen;
3735 michael 1123 freeaddrinfo(res);
3736 michael 913
3737     ServerInfo.specific_ipv4_vhost = 1;
3738     }
3739     }
3740     }
3741     break;
3742    
3743 michael 967 case 78:
3744    
3745 michael 1133 /* Line 1806 of yacc.c */
3746 michael 1123 #line 712 "ircd_parser.y"
3747 michael 913 {
3748     #ifdef IPV6
3749 michael 967 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3750 michael 913 {
3751     struct addrinfo hints, *res;
3752    
3753     memset(&hints, 0, sizeof(hints));
3754    
3755     hints.ai_family = AF_UNSPEC;
3756     hints.ai_socktype = SOCK_STREAM;
3757     hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3758    
3759 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3760 michael 913 ilog(L_ERROR, "Invalid netmask for server vhost6(%s)", yylval.string);
3761     else
3762     {
3763     assert(res != NULL);
3764    
3765     memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3766     ServerInfo.ip6.ss.ss_family = res->ai_family;
3767     ServerInfo.ip6.ss_len = res->ai_addrlen;
3768 michael 1123 freeaddrinfo(res);
3769 michael 913
3770     ServerInfo.specific_ipv6_vhost = 1;
3771     }
3772     }
3773     #endif
3774     }
3775     break;
3776    
3777 michael 967 case 79:
3778    
3779 michael 1133 /* Line 1806 of yacc.c */
3780 michael 1123 #line 742 "ircd_parser.y"
3781 michael 913 {
3782 michael 967 if (conf_parser_ctx.pass == 2)
3783 michael 913 {
3784     recalc_fdlimit(NULL);
3785    
3786     if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3787     {
3788     char buf[IRCD_BUFSIZE];
3789     ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3790     yyerror(buf);
3791     }
3792     else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3793     {
3794     char buf[IRCD_BUFSIZE];
3795     ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3796     yyerror(buf);
3797     }
3798     else
3799     ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3800     }
3801     }
3802     break;
3803    
3804 michael 967 case 80:
3805    
3806 michael 1133 /* Line 1806 of yacc.c */
3807 michael 1123 #line 765 "ircd_parser.y"
3808 michael 913 {
3809 michael 967 if (conf_parser_ctx.pass == 2)
3810 michael 1119 ServerInfo.hub = yylval.number;
3811 michael 913 }
3812     break;
3813    
3814 michael 967 case 88:
3815    
3816 michael 1133 /* Line 1806 of yacc.c */
3817 michael 1123 #line 780 "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 1133 /* Line 1806 of yacc.c */
3830 michael 1123 #line 789 "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 1133 /* Line 1806 of yacc.c */
3843 michael 1123 #line 798 "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 1133 /* Line 1806 of yacc.c */
3856 michael 1123 #line 825 "ircd_parser.y"
3857 michael 913 {
3858     }
3859     break;
3860    
3861 michael 967 case 108:
3862    
3863 michael 1133 /* Line 1806 of yacc.c */
3864 michael 1123 #line 829 "ircd_parser.y"
3865 michael 913 {
3866     }
3867     break;
3868    
3869 michael 967 case 109:
3870    
3871 michael 1133 /* Line 1806 of yacc.c */
3872 michael 1123 #line 833 "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 1133 /* Line 1806 of yacc.c */
3883 michael 1123 #line 840 "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 1133 /* Line 1806 of yacc.c */
3894 michael 1123 #line 847 "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 1133 /* Line 1806 of yacc.c */
3905 michael 1123 #line 854 "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 1133 /* Line 1806 of yacc.c */
3916 michael 1123 #line 861 "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 1133 /* Line 1806 of yacc.c */
3927 michael 1123 #line 868 "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 1133 /* Line 1806 of yacc.c */
3938 michael 1123 #line 875 "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 1133 /* Line 1806 of yacc.c */
3949 michael 1123 #line 882 "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 1133 /* Line 1806 of yacc.c */
3960 michael 1123 #line 889 "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 1133 /* Line 1806 of yacc.c */
3970 michael 1123 #line 893 "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 1133 /* Line 1806 of yacc.c */
3980 michael 1123 #line 897 "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 1133 /* Line 1806 of yacc.c */
3990 michael 1123 #line 901 "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 1133 /* Line 1806 of yacc.c */
4000 michael 1123 #line 905 "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 1133 /* Line 1806 of yacc.c */
4010 michael 1123 #line 909 "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 1133 /* Line 1806 of yacc.c */
4020 michael 1123 #line 913 "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 1133 /* Line 1806 of yacc.c */
4030 michael 1123 #line 919 "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 1133 /* Line 1806 of yacc.c */
4040 michael 1123 #line 928 "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 1133 /* Line 1806 of yacc.c */
4059 michael 1123 #line 941 "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 1133 /* Line 1806 of yacc.c */
4144 michael 1123 #line 1028 "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 1133 /* Line 1806 of yacc.c */
4160 michael 1123 #line 1040 "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 1133 /* Line 1806 of yacc.c */
4176 michael 1123 #line 1052 "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 1133 /* Line 1806 of yacc.c */
4214 michael 1123 #line 1086 "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 1133 /* Line 1806 of yacc.c */
4230 michael 1123 #line 1098 "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 1133 /* Line 1806 of yacc.c */
4245 michael 1123 #line 1109 "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 1133 /* Line 1806 of yacc.c */
4291 michael 1123 #line 1151 "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 1133 /* Line 1806 of yacc.c */
4304 michael 1123 #line 1160 "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 1133 /* Line 1806 of yacc.c */
4314 michael 1123 #line 1167 "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 1133 /* Line 1806 of yacc.c */
4324 michael 1123 #line 1171 "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 1133 /* Line 1806 of yacc.c */
4334 michael 1123 #line 1175 "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 1133 /* Line 1806 of yacc.c */
4344 michael 1123 #line 1179 "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 1133 /* Line 1806 of yacc.c */
4354 michael 1123 #line 1183 "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 1133 /* Line 1806 of yacc.c */
4364 michael 1123 #line 1187 "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 1133 /* Line 1806 of yacc.c */
4374 michael 1123 #line 1191 "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 1133 /* Line 1806 of yacc.c */
4384 michael 1123 #line 1195 "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 1133 /* Line 1806 of yacc.c */
4394 michael 1123 #line 1199 "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 1133 /* Line 1806 of yacc.c */
4404 michael 1123 #line 1203 "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 1133 /* Line 1806 of yacc.c */
4414 michael 1123 #line 1207 "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 1133 /* Line 1806 of yacc.c */
4424 michael 1123 #line 1211 "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 1133 /* Line 1806 of yacc.c */
4434 michael 1123 #line 1215 "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 1133 /* Line 1806 of yacc.c */
4444 michael 1123 #line 1219 "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 1133 /* Line 1806 of yacc.c */
4454 michael 1123 #line 1223 "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 1133 /* Line 1806 of yacc.c */
4464 michael 1123 #line 1227 "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 1133 /* Line 1806 of yacc.c */
4474 michael 1123 #line 1231 "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 1133 /* Line 1806 of yacc.c */
4484 michael 1123 #line 1235 "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 1133 /* Line 1806 of yacc.c */
4494 michael 1123 #line 1239 "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 1133 /* Line 1806 of yacc.c */
4504 michael 1123 #line 1245 "ircd_parser.y"
4505 michael 913 {
4506     }
4507     break;
4508    
4509 michael 1076 case 174:
4510 michael 967
4511 michael 1133 /* Line 1806 of yacc.c */
4512 michael 1123 #line 1249 "ircd_parser.y"
4513 michael 913 { not_atom = 1; }
4514     break;
4515    
4516 michael 1076 case 176:
4517 michael 967
4518 michael 1133 /* Line 1806 of yacc.c */
4519 michael 1123 #line 1250 "ircd_parser.y"
4520 michael 913 { not_atom = 0; }
4521     break;
4522    
4523 michael 1076 case 178:
4524 michael 967
4525 michael 1133 /* Line 1806 of yacc.c */
4526 michael 1123 #line 1253 "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 1133 /* Line 1806 of yacc.c */
4539 michael 1123 #line 1260 "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 1133 /* Line 1806 of yacc.c */
4552 michael 1123 #line 1267 "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 1133 /* Line 1806 of yacc.c */
4565 michael 1123 #line 1274 "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 1133 /* Line 1806 of yacc.c */
4578 michael 1123 #line 1281 "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 1133 /* Line 1806 of yacc.c */
4591 michael 1123 #line 1288 "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 1133 /* Line 1806 of yacc.c */
4604 michael 1123 #line 1295 "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 1133 /* Line 1806 of yacc.c */
4617 michael 1123 #line 1302 "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 1133 /* Line 1806 of yacc.c */
4630 michael 1123 #line 1309 "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 1133 /* Line 1806 of yacc.c */
4643 michael 1123 #line 1316 "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 1133 /* Line 1806 of yacc.c */
4656 michael 1123 #line 1323 "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 1133 /* Line 1806 of yacc.c */
4669 michael 1123 #line 1330 "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 1133 /* Line 1806 of yacc.c */
4682 michael 1123 #line 1337 "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 1133 /* Line 1806 of yacc.c */
4695 michael 1123 #line 1344 "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 1133 /* Line 1806 of yacc.c */
4708 michael 1123 #line 1351 "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 1133 /* Line 1806 of yacc.c */
4721 michael 1123 #line 1358 "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 1133 /* Line 1806 of yacc.c */
4734 michael 1123 #line 1371 "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 1133 /* Line 1806 of yacc.c */
4747 michael 1123 #line 1378 "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 1133 /* Line 1806 of yacc.c */
4794 michael 1123 #line 1438 "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 1133 /* Line 1806 of yacc.c */
4807 michael 1123 #line 1447 "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 1133 /* Line 1806 of yacc.c */
4820 michael 1123 #line 1456 "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 1133 /* Line 1806 of yacc.c */
4830 michael 1123 #line 1462 "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 1133 /* Line 1806 of yacc.c */
4840 michael 1123 #line 1468 "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 1133 /* Line 1806 of yacc.c */
4850 michael 1123 #line 1474 "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 1133 /* Line 1806 of yacc.c */
4860 michael 1123 #line 1480 "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 1133 /* Line 1806 of yacc.c */
4870 michael 1123 #line 1486 "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 1133 /* Line 1806 of yacc.c */
4880 michael 1123 #line 1492 "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 1133 /* Line 1806 of yacc.c */
4890 michael 1123 #line 1498 "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 1133 /* Line 1806 of yacc.c */
4900 michael 1123 #line 1504 "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 1133 /* Line 1806 of yacc.c */
4910 michael 1123 #line 1510 "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 1133 /* Line 1806 of yacc.c */
4920 michael 1123 #line 1516 "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 1133 /* Line 1806 of yacc.c */
4930 michael 1123 #line 1522 "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 1133 /* Line 1806 of yacc.c */
4940 michael 1123 #line 1531 "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 1133 /* Line 1806 of yacc.c */
4953 michael 1123 #line 1538 "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 1133 /* Line 1806 of yacc.c */
4966 michael 1123 #line 1547 "ircd_parser.y"
4967 michael 913 {
4968     listener_flags = 0;
4969     }
4970     break;
4971    
4972 michael 1076 case 234:
4973 michael 967
4974 michael 1133 /* Line 1806 of yacc.c */
4975 michael 1123 #line 1553 "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 1133 /* Line 1806 of yacc.c */
4985 michael 1123 #line 1557 "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 1133 /* Line 1806 of yacc.c */
4995 michael 1123 #line 1561 "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 1133 /* Line 1806 of yacc.c */
5005 michael 1123 #line 1571 "ircd_parser.y"
5006 michael 913 { listener_flags = 0; }
5007     break;
5008    
5009 michael 1076 case 248:
5010 michael 967
5011 michael 1133 /* Line 1806 of yacc.c */
5012 michael 1123 #line 1576 "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 1133 /* Line 1806 of yacc.c */
5032 michael 1123 #line 1590 "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 1133 /* Line 1806 of yacc.c */
5056 michael 1123 #line 1610 "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 1133 /* Line 1806 of yacc.c */
5069 michael 1123 #line 1619 "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 1133 /* Line 1806 of yacc.c */
5082 michael 1123 #line 1631 "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 1133 /* Line 1806 of yacc.c */
5100 michael 1123 #line 1643 "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 1133 /* Line 1806 of yacc.c */
5161 michael 1123 #line 1705 "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 1133 /* Line 1806 of yacc.c */
5200 michael 1123 #line 1742 "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 1133 /* Line 1806 of yacc.c */
5217 michael 1123 #line 1755 "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 1133 /* Line 1806 of yacc.c */
5230 michael 1123 #line 1764 "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 1133 /* Line 1806 of yacc.c */
5245 michael 1123 #line 1775 "ircd_parser.y"
5246 michael 913 {
5247     }
5248     break;
5249    
5250 michael 1076 case 273:
5251 michael 967
5252 michael 1133 /* Line 1806 of yacc.c */
5253 michael 1123 #line 1779 "ircd_parser.y"
5254 michael 913 { not_atom = 1; }
5255     break;
5256    
5257 michael 1076 case 275:
5258 michael 967
5259 michael 1133 /* Line 1806 of yacc.c */
5260 michael 1123 #line 1780 "ircd_parser.y"
5261 michael 913 { not_atom = 0; }
5262     break;
5263    
5264 michael 1076 case 277:
5265 michael 967
5266 michael 1133 /* Line 1806 of yacc.c */
5267 michael 1123 #line 1783 "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 1133 /* Line 1806 of yacc.c */
5280 michael 1123 #line 1790 "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 1133 /* Line 1806 of yacc.c */
5293 michael 1123 #line 1797 "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 1133 /* Line 1806 of yacc.c */
5306 michael 1123 #line 1804 "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 1133 /* Line 1806 of yacc.c */
5319 michael 1123 #line 1811 "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 1133 /* Line 1806 of yacc.c */
5332 michael 1123 #line 1818 "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 1133 /* Line 1806 of yacc.c */
5345 michael 1123 #line 1825 "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 1133 /* Line 1806 of yacc.c */
5358 michael 1123 #line 1832 "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 1133 /* Line 1806 of yacc.c */
5371 michael 1123 #line 1839 "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 1133 /* Line 1806 of yacc.c */
5384 michael 1123 #line 1846 "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 1133 /* Line 1806 of yacc.c */
5397 michael 1123 #line 1856 "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 1133 /* Line 1806 of yacc.c */
5420 michael 1123 #line 1875 "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 1133 /* Line 1806 of yacc.c */
5434 michael 1123 #line 1885 "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 1133 /* Line 1806 of yacc.c */
5447 michael 1123 #line 1898 "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 1133 /* Line 1806 of yacc.c */
5460 michael 1123 #line 1905 "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 1133 /* Line 1806 of yacc.c */
5473 michael 1123 #line 1917 "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 1133 /* Line 1806 of yacc.c */
5486 michael 1123 #line 1926 "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 1133 /* Line 1806 of yacc.c */
5505 michael 1123 #line 1941 "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 1133 /* Line 1806 of yacc.c */
5519 michael 1123 #line 1954 "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 1133 /* Line 1806 of yacc.c */
5533 michael 1123 #line 1962 "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 1133 /* Line 1806 of yacc.c */
5545 michael 1123 #line 1973 "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 1133 /* Line 1806 of yacc.c */
5558 michael 1123 #line 1982 "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 1133 /* Line 1806 of yacc.c */
5584 michael 1123 #line 2004 "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 1133 /* Line 1806 of yacc.c */
5594 michael 1123 #line 2011 "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 1133 /* Line 1806 of yacc.c */
5604 michael 1123 #line 2015 "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 1133 /* Line 1806 of yacc.c */
5614 michael 1123 #line 2019 "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 1133 /* Line 1806 of yacc.c */
5624 michael 1123 #line 2023 "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 1133 /* Line 1806 of yacc.c */
5634 michael 1123 #line 2027 "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 1133 /* Line 1806 of yacc.c */
5644 michael 1123 #line 2031 "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 1133 /* Line 1806 of yacc.c */
5654 michael 1123 #line 2035 "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 1133 /* Line 1806 of yacc.c */
5664 michael 1123 #line 2039 "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 1133 /* Line 1806 of yacc.c */
5674 michael 1123 #line 2043 "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 1133 /* Line 1806 of yacc.c */
5684 michael 1123 #line 2047 "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 1133 /* Line 1806 of yacc.c */
5694 michael 1123 #line 2051 "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 1133 /* Line 1806 of yacc.c */
5704 michael 1123 #line 2060 "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 1133 /* Line 1806 of yacc.c */
5717 michael 1123 #line 2067 "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 1133 /* Line 1806 of yacc.c */
5731 michael 1123 #line 2080 "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 1133 /* Line 1806 of yacc.c */
5741 michael 1123 #line 2086 "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 1133 /* Line 1806 of yacc.c */
5751 michael 1123 #line 2093 "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 1133 /* Line 1806 of yacc.c */
5761 michael 1123 #line 2097 "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 1133 /* Line 1806 of yacc.c */
5771 michael 1123 #line 2101 "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 1133 /* Line 1806 of yacc.c */
5781 michael 1123 #line 2105 "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 1133 /* Line 1806 of yacc.c */
5791 michael 1123 #line 2109 "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 1133 /* Line 1806 of yacc.c */
5801 michael 1123 #line 2113 "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 1133 /* Line 1806 of yacc.c */
5811 michael 1123 #line 2117 "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 1133 /* Line 1806 of yacc.c */
5821 michael 1123 #line 2121 "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 1133 /* Line 1806 of yacc.c */
5831 michael 1123 #line 2125 "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 1133 /* Line 1806 of yacc.c */
5841 michael 1123 #line 2129 "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 1133 /* Line 1806 of yacc.c */
5851 michael 1123 #line 2133 "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 1133 /* Line 1806 of yacc.c */
5861 michael 1123 #line 2142 "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 1133 /* Line 1806 of yacc.c */
5885 michael 1123 #line 2160 "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 1118 case 370:
6015 michael 967
6016 michael 1133 /* Line 1806 of yacc.c */
6017 michael 1123 #line 2298 "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 1118 case 371:
6031 michael 967
6032 michael 1133 /* Line 1806 of yacc.c */
6033 michael 1123 #line 2310 "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 1118 case 372:
6047 michael 967
6048 michael 1133 /* Line 1806 of yacc.c */
6049 michael 1123 #line 2322 "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 1118 case 373:
6060 michael 967
6061 michael 1133 /* Line 1806 of yacc.c */
6062 michael 1123 #line 2331 "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 michael 1123 if (getaddrinfo(yylval.string, NULL, &hints, &res))
6075 michael 913 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 michael 1123 freeaddrinfo(res);
6084 michael 913 }
6085     }
6086     }
6087     break;
6088    
6089 michael 1118 case 374:
6090 michael 967
6091 michael 1133 /* Line 1806 of yacc.c */
6092 michael 1123 #line 2357 "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 1118 case 375:
6112 michael 967
6113 michael 1133 /* Line 1806 of yacc.c */
6114 michael 1123 #line 2375 "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 1118 case 376:
6134 michael 967
6135 michael 1133 /* Line 1806 of yacc.c */
6136 michael 1123 #line 2393 "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 1118 case 377:
6144 michael 967
6145 michael 1133 /* Line 1806 of yacc.c */
6146 michael 1123 #line 2399 "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 1118 case 378:
6154 michael 967
6155 michael 1133 /* Line 1806 of yacc.c */
6156 michael 1123 #line 2403 "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 1118 case 379:
6166 michael 967
6167 michael 1133 /* Line 1806 of yacc.c */
6168 michael 1123 #line 2411 "ircd_parser.y"
6169 michael 913 {
6170     }
6171     break;
6172    
6173 michael 1118 case 383:
6174 michael 967
6175 michael 1133 /* Line 1806 of yacc.c */
6176 michael 1123 #line 2415 "ircd_parser.y"
6177 michael 1118 { not_atom = 1; }
6178 michael 913 break;
6179    
6180 michael 1076 case 385:
6181 michael 967
6182 michael 1133 /* Line 1806 of yacc.c */
6183 michael 1123 #line 2416 "ircd_parser.y"
6184 michael 1118 { not_atom = 0; }
6185 michael 913 break;
6186    
6187 michael 1076 case 387:
6188 michael 967
6189 michael 1133 /* Line 1806 of yacc.c */
6190 michael 1123 #line 2419 "ircd_parser.y"
6191 michael 913 {
6192 michael 967 if (conf_parser_ctx.pass == 2)
6193 michael 913 #ifndef HAVE_LIBZ
6194     yyerror("Ignoring flags = compressed; -- no zlib support");
6195     #else
6196     {
6197     if (not_atom)ClearConfCompressed(yy_aconf);
6198     else SetConfCompressed(yy_aconf);
6199     }
6200     #endif
6201     }
6202     break;
6203    
6204 michael 1118 case 388:
6205 michael 967
6206 michael 1133 /* Line 1806 of yacc.c */
6207 michael 1123 #line 2430 "ircd_parser.y"
6208 michael 913 {
6209 michael 967 if (conf_parser_ctx.pass == 2)
6210 michael 913 {
6211     if (not_atom)ClearConfCryptLink(yy_aconf);
6212     else SetConfCryptLink(yy_aconf);
6213     }
6214     }
6215     break;
6216    
6217 michael 1118 case 389:
6218 michael 967
6219 michael 1133 /* Line 1806 of yacc.c */
6220 michael 1123 #line 2437 "ircd_parser.y"
6221 michael 913 {
6222 michael 967 if (conf_parser_ctx.pass == 2)
6223 michael 913 {
6224     if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6225     else SetConfAllowAutoConn(yy_aconf);
6226     }
6227     }
6228     break;
6229    
6230 michael 1118 case 390:
6231 michael 967
6232 michael 1133 /* Line 1806 of yacc.c */
6233 michael 1123 #line 2444 "ircd_parser.y"
6234 michael 913 {
6235 michael 967 if (conf_parser_ctx.pass == 2)
6236 michael 913 {
6237     if (not_atom)ClearConfAwayBurst(yy_aconf);
6238     else SetConfAwayBurst(yy_aconf);
6239     }
6240     }
6241     break;
6242    
6243 michael 1118 case 391:
6244 michael 967
6245 michael 1133 /* Line 1806 of yacc.c */
6246 michael 1123 #line 2451 "ircd_parser.y"
6247 michael 913 {
6248 michael 967 if (conf_parser_ctx.pass == 2)
6249 michael 913 {
6250     if (not_atom)ClearConfTopicBurst(yy_aconf);
6251     else SetConfTopicBurst(yy_aconf);
6252     }
6253     }
6254     break;
6255    
6256 michael 1118 case 392:
6257 michael 967
6258 michael 1133 /* Line 1806 of yacc.c */
6259 michael 1123 #line 2461 "ircd_parser.y"
6260 michael 913 {
6261     #ifdef HAVE_LIBCRYPTO
6262 michael 967 if (conf_parser_ctx.pass == 2)
6263 michael 913 {
6264     BIO *file;
6265    
6266     if (yy_aconf->rsa_public_key != NULL)
6267     {
6268     RSA_free(yy_aconf->rsa_public_key);
6269     yy_aconf->rsa_public_key = NULL;
6270     }
6271    
6272     if (yy_aconf->rsa_public_key_file != NULL)
6273     {
6274     MyFree(yy_aconf->rsa_public_key_file);
6275     yy_aconf->rsa_public_key_file = NULL;
6276     }
6277    
6278     DupString(yy_aconf->rsa_public_key_file, yylval.string);
6279    
6280     if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6281     {
6282     yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6283     break;
6284     }
6285    
6286     yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
6287    
6288     if (yy_aconf->rsa_public_key == NULL)
6289     {
6290     yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
6291     break;
6292     }
6293    
6294     BIO_set_close(file, BIO_CLOSE);
6295     BIO_free(file);
6296     }
6297     #endif /* HAVE_LIBCRYPTO */
6298     }
6299     break;
6300    
6301 michael 1118 case 393:
6302 michael 967
6303 michael 1133 /* Line 1806 of yacc.c */
6304 michael 1123 #line 2502 "ircd_parser.y"
6305 michael 913 {
6306 michael 967 if (conf_parser_ctx.pass == 2)
6307 michael 913 {
6308     if (yylval.number)
6309     yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6310     else
6311     yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6312     }
6313     }
6314     break;
6315    
6316 michael 1118 case 394:
6317 michael 967
6318 michael 1133 /* Line 1806 of yacc.c */
6319 michael 1123 #line 2513 "ircd_parser.y"
6320 michael 913 {
6321 michael 967 if (conf_parser_ctx.pass == 2)
6322 michael 913 {
6323     struct CollectItem *yy_tmp;
6324    
6325     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6326     DupString(yy_tmp->host, yylval.string);
6327     DupString(yy_tmp->user, "*");
6328     dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6329     }
6330     }
6331     break;
6332    
6333 michael 1118 case 395:
6334 michael 967
6335 michael 1133 /* Line 1806 of yacc.c */
6336 michael 1123 #line 2526 "ircd_parser.y"
6337 michael 913 {
6338 michael 967 if (conf_parser_ctx.pass == 2)
6339 michael 913 {
6340     struct CollectItem *yy_tmp;
6341    
6342     yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6343     DupString(yy_tmp->host, yylval.string);
6344     DupString(yy_tmp->user, "*");
6345     dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6346     }
6347     }
6348     break;
6349    
6350 michael 1118 case 396:
6351 michael 967
6352 michael 1133 /* Line 1806 of yacc.c */
6353 michael 1123 #line 2539 "ircd_parser.y"
6354 michael 913 {
6355 michael 967 if (conf_parser_ctx.pass == 2)
6356 michael 913 {
6357     MyFree(class_name);
6358     DupString(class_name, yylval.string);
6359     }
6360     }
6361     break;
6362    
6363 michael 1118 case 397:
6364 michael 967
6365 michael 1133 /* Line 1806 of yacc.c */
6366 michael 1123 #line 2548 "ircd_parser.y"
6367 michael 913 {
6368     #ifdef HAVE_LIBCRYPTO
6369 michael 967 if (conf_parser_ctx.pass == 2)
6370 michael 913 {
6371     struct EncCapability *ecap;
6372     const char *cipher_name;
6373     int found = 0;
6374    
6375     yy_aconf->cipher_preference = NULL;
6376     cipher_name = yylval.string;
6377    
6378     for (ecap = CipherTable; ecap->name; ecap++)
6379     {
6380     if ((irccmp(ecap->name, cipher_name) == 0) &&
6381     (ecap->cap & CAP_ENC_MASK))
6382     {
6383     yy_aconf->cipher_preference = ecap;
6384     found = 1;
6385     break;
6386     }
6387     }
6388    
6389     if (!found)
6390     yyerror("Invalid cipher");
6391     }
6392     #else
6393 michael 967 if (conf_parser_ctx.pass == 2)
6394 michael 913 yyerror("Ignoring cipher_preference -- no OpenSSL support");
6395     #endif
6396     }
6397     break;
6398    
6399 michael 1118 case 398:
6400 michael 967
6401 michael 1133 /* Line 1806 of yacc.c */
6402 michael 1123 #line 2583 "ircd_parser.y"
6403 michael 913 {
6404 michael 967 if (conf_parser_ctx.pass == 2)
6405 michael 913 {
6406     userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6407     regex_ban = 0;
6408     }
6409     }
6410     break;
6411    
6412 michael 1118 case 399:
6413 michael 967
6414 michael 1133 /* Line 1806 of yacc.c */
6415 michael 1123 #line 2590 "ircd_parser.y"
6416 michael 913 {
6417 michael 967 if (conf_parser_ctx.pass == 2)
6418 michael 913 {
6419     if (userbuf[0] && hostbuf[0])
6420     {
6421     if (regex_ban)
6422     {
6423 michael 1009 #ifdef HAVE_LIBPCRE
6424 michael 1011 void *exp_user = NULL;
6425     void *exp_host = NULL;
6426 michael 913 const char *errptr = NULL;
6427    
6428     if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6429     !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6430     {
6431     ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6432     errptr);
6433     break;
6434     }
6435    
6436 michael 1005 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6437 michael 913 yy_aconf->regexuser = exp_user;
6438     yy_aconf->regexhost = exp_host;
6439    
6440     DupString(yy_aconf->user, userbuf);
6441     DupString(yy_aconf->host, hostbuf);
6442    
6443     if (reasonbuf[0])
6444     DupString(yy_aconf->reason, reasonbuf);
6445     else
6446     DupString(yy_aconf->reason, "No reason");
6447 michael 1009 #else
6448     ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6449     break;
6450     #endif
6451 michael 913 }
6452     else
6453     {
6454 michael 1005 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6455 michael 913
6456     DupString(yy_aconf->user, userbuf);
6457     DupString(yy_aconf->host, hostbuf);
6458    
6459     if (reasonbuf[0])
6460     DupString(yy_aconf->reason, reasonbuf);
6461     else
6462     DupString(yy_aconf->reason, "No reason");
6463     add_conf_by_address(CONF_KILL, yy_aconf);
6464     }
6465     }
6466    
6467     yy_aconf = NULL;
6468     }
6469     }
6470     break;
6471    
6472 michael 1118 case 400:
6473 michael 967
6474 michael 1133 /* Line 1806 of yacc.c */
6475 michael 1123 #line 2646 "ircd_parser.y"
6476 michael 913 {
6477     }
6478     break;
6479    
6480 michael 1118 case 404:
6481 michael 967
6482 michael 1133 /* Line 1806 of yacc.c */
6483 michael 1123 #line 2651 "ircd_parser.y"
6484 michael 913 {
6485 michael 967 if (conf_parser_ctx.pass == 2)
6486 michael 913 regex_ban = 1;
6487     }
6488     break;
6489    
6490 michael 1118 case 411:
6491 michael 967
6492 michael 1133 /* Line 1806 of yacc.c */
6493 michael 1123 #line 2660 "ircd_parser.y"
6494 michael 913 {
6495 michael 967 if (conf_parser_ctx.pass == 2)
6496 michael 913 {
6497     struct split_nuh_item nuh;
6498    
6499     nuh.nuhmask = yylval.string;
6500     nuh.nickptr = NULL;
6501     nuh.userptr = userbuf;
6502     nuh.hostptr = hostbuf;
6503    
6504     nuh.nicksize = 0;
6505     nuh.usersize = sizeof(userbuf);
6506     nuh.hostsize = sizeof(hostbuf);
6507    
6508     split_nuh(&nuh);
6509     }
6510     }
6511     break;
6512    
6513 michael 1118 case 412:
6514 michael 967
6515 michael 1133 /* Line 1806 of yacc.c */
6516 michael 1123 #line 2679 "ircd_parser.y"
6517 michael 913 {
6518 michael 967 if (conf_parser_ctx.pass == 2)
6519 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6520     }
6521     break;
6522    
6523 michael 1118 case 413:
6524 michael 967
6525 michael 1133 /* Line 1806 of yacc.c */
6526 michael 1123 #line 2688 "ircd_parser.y"
6527 michael 913 {
6528 michael 967 if (conf_parser_ctx.pass == 2)
6529 michael 1005 hostbuf[0] = reasonbuf[0] = '\0';
6530 michael 913 }
6531     break;
6532    
6533 michael 1118 case 414:
6534 michael 967
6535 michael 1133 /* Line 1806 of yacc.c */
6536 michael 1123 #line 2692 "ircd_parser.y"
6537 michael 913 {
6538 michael 967 if (conf_parser_ctx.pass == 2)
6539 michael 913 {
6540 michael 1005 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
6541     {
6542     yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
6543     DupString(yy_aconf->host, hostbuf);
6544    
6545     if (reasonbuf[0])
6546     DupString(yy_aconf->reason, reasonbuf);
6547     else
6548     DupString(yy_aconf->reason, "No reason");
6549 michael 913 add_conf_by_address(CONF_DLINE, yy_aconf);
6550 michael 1005 yy_aconf = NULL;
6551     }
6552 michael 913 }
6553     }
6554     break;
6555    
6556 michael 1118 case 420:
6557 michael 967
6558 michael 1133 /* Line 1806 of yacc.c */
6559 michael 1123 #line 2714 "ircd_parser.y"
6560 michael 913 {
6561 michael 967 if (conf_parser_ctx.pass == 2)
6562 michael 1005 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
6563 michael 913 }
6564     break;
6565    
6566 michael 1118 case 421:
6567 michael 967
6568 michael 1133 /* Line 1806 of yacc.c */
6569 michael 1123 #line 2720 "ircd_parser.y"
6570 michael 913 {
6571 michael 967 if (conf_parser_ctx.pass == 2)
6572 michael 1005 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6573 michael 913 }
6574     break;
6575    
6576 michael 1118 case 427:
6577 michael 967
6578 michael 1133 /* Line 1806 of yacc.c */
6579 michael 1123 #line 2734 "ircd_parser.y"
6580 michael 913 {
6581 michael 967 if (conf_parser_ctx.pass == 2)
6582 michael 913 {
6583     if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
6584     {
6585 michael 1005 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
6586 michael 913 DupString(yy_aconf->host, yylval.string);
6587    
6588     add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
6589     yy_aconf = NULL;
6590     }
6591     }
6592     }
6593     break;
6594    
6595 michael 1118 case 428:
6596 michael 967
6597 michael 1133 /* Line 1806 of yacc.c */
6598 michael 1123 #line 2752 "ircd_parser.y"
6599 michael 913 {
6600 michael 967 if (conf_parser_ctx.pass == 2)
6601 michael 913 {
6602     regex_ban = 0;
6603     reasonbuf[0] = gecos_name[0] = '\0';
6604     }
6605     }
6606     break;
6607    
6608 michael 1118 case 429:
6609 michael 967
6610 michael 1133 /* Line 1806 of yacc.c */
6611 michael 1123 #line 2759 "ircd_parser.y"
6612 michael 913 {
6613 michael 967 if (conf_parser_ctx.pass == 2)
6614 michael 913 {
6615     if (gecos_name[0])
6616     {
6617     if (regex_ban)
6618     {
6619 michael 1009 #ifdef HAVE_LIBPCRE
6620 michael 1011 void *exp_p = NULL;
6621 michael 913 const char *errptr = NULL;
6622    
6623     if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
6624     {
6625     ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
6626     errptr);
6627     break;
6628     }
6629    
6630     yy_conf = make_conf_item(RXLINE_TYPE);
6631     yy_conf->regexpname = exp_p;
6632 michael 1009 #else
6633     ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
6634     break;
6635     #endif
6636 michael 913 }
6637     else
6638     yy_conf = make_conf_item(XLINE_TYPE);
6639    
6640     yy_match_item = map_to_conf(yy_conf);
6641     DupString(yy_conf->name, gecos_name);
6642    
6643     if (reasonbuf[0])
6644     DupString(yy_match_item->reason, reasonbuf);
6645     else
6646     DupString(yy_match_item->reason, "No reason");
6647     }
6648     }
6649     }
6650     break;
6651    
6652 michael 1118 case 430:
6653 michael 967
6654 michael 1133 /* Line 1806 of yacc.c */
6655 michael 1123 #line 2799 "ircd_parser.y"
6656 michael 913 {
6657     }
6658     break;
6659    
6660 michael 1118 case 434:
6661 michael 967
6662 michael 1133 /* Line 1806 of yacc.c */
6663 michael 1123 #line 2804 "ircd_parser.y"
6664 michael 913 {
6665 michael 967 if (conf_parser_ctx.pass == 2)
6666 michael 913 regex_ban = 1;
6667     }
6668     break;
6669    
6670 michael 1118 case 441:
6671 michael 967
6672 michael 1133 /* Line 1806 of yacc.c */
6673 michael 1123 #line 2813 "ircd_parser.y"
6674 michael 913 {
6675 michael 967 if (conf_parser_ctx.pass == 2)
6676 michael 913 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
6677     }
6678     break;
6679    
6680 michael 1118 case 442:
6681 michael 967
6682 michael 1133 /* Line 1806 of yacc.c */
6683 michael 1123 #line 2819 "ircd_parser.y"
6684 michael 913 {
6685 michael 967 if (conf_parser_ctx.pass == 2)
6686 michael 913 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
6687     }
6688     break;
6689    
6690 michael 1118 case 502:
6691    
6692 michael 1133 /* Line 1806 of yacc.c */
6693 michael 1123 #line 2864 "ircd_parser.y"
6694 michael 1118 {
6695     ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
6696     }
6697     break;
6698    
6699     case 503:
6700    
6701 michael 1133 /* Line 1806 of yacc.c */
6702 michael 1123 #line 2869 "ircd_parser.y"
6703 michael 1118 {
6704     ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
6705     }
6706     break;
6707    
6708 michael 1076 case 504:
6709 michael 967
6710 michael 1133 /* Line 1806 of yacc.c */
6711 michael 1123 #line 2874 "ircd_parser.y"
6712 michael 913 {
6713 michael 1118 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
6714 michael 913 }
6715     break;
6716    
6717 michael 1076 case 505:
6718 michael 967
6719 michael 1133 /* Line 1806 of yacc.c */
6720 michael 1123 #line 2879 "ircd_parser.y"
6721 michael 913 {
6722 michael 1118 ConfigFileEntry.burst_away = yylval.number;
6723 michael 913 }
6724     break;
6725    
6726 michael 1076 case 506:
6727 michael 967
6728 michael 1133 /* Line 1806 of yacc.c */
6729 michael 1123 #line 2884 "ircd_parser.y"
6730 michael 913 {
6731 michael 1118 ConfigFileEntry.use_whois_actually = yylval.number;
6732 michael 913 }
6733     break;
6734    
6735 michael 1076 case 507:
6736 michael 967
6737 michael 1133 /* Line 1806 of yacc.c */
6738 michael 1123 #line 2889 "ircd_parser.y"
6739 michael 913 {
6740 michael 1118 GlobalSetOptions.rejecttime = yylval.number;
6741 michael 913 }
6742     break;
6743    
6744 michael 1076 case 508:
6745 michael 967
6746 michael 1133 /* Line 1806 of yacc.c */
6747 michael 1123 #line 2894 "ircd_parser.y"
6748 michael 913 {
6749 michael 1118 ConfigFileEntry.tkline_expire_notices = yylval.number;
6750 michael 913 }
6751     break;
6752    
6753 michael 1076 case 509:
6754 michael 967
6755 michael 1133 /* Line 1806 of yacc.c */
6756 michael 1123 #line 2899 "ircd_parser.y"
6757 michael 913 {
6758 michael 1118 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
6759 michael 913 }
6760     break;
6761    
6762 michael 1076 case 510:
6763 michael 967
6764 michael 1133 /* Line 1806 of yacc.c */
6765 michael 1123 #line 2904 "ircd_parser.y"
6766 michael 913 {
6767 michael 1118 ConfigFileEntry.hide_spoof_ips = yylval.number;
6768 michael 913 }
6769     break;
6770    
6771 michael 1076 case 511:
6772 michael 967
6773 michael 1133 /* Line 1806 of yacc.c */
6774 michael 1123 #line 2909 "ircd_parser.y"
6775 michael 913 {
6776 michael 1118 ConfigFileEntry.ignore_bogus_ts = yylval.number;
6777 michael 913 }
6778     break;
6779    
6780 michael 1076 case 512:
6781 michael 967
6782 michael 1133 /* Line 1806 of yacc.c */
6783 michael 1123 #line 2914 "ircd_parser.y"
6784 michael 913 {
6785 michael 1118 ConfigFileEntry.disable_remote = yylval.number;
6786 michael 913 }
6787     break;
6788    
6789 michael 1076 case 513:
6790 michael 967
6791 michael 1133 /* Line 1806 of yacc.c */
6792 michael 1123 #line 2919 "ircd_parser.y"
6793 michael 913 {
6794 michael 1118 ConfigFileEntry.failed_oper_notice = yylval.number;
6795 michael 913 }
6796     break;
6797    
6798 michael 1076 case 514:
6799 michael 967
6800 michael 1133 /* Line 1806 of yacc.c */
6801 michael 1123 #line 2924 "ircd_parser.y"
6802 michael 913 {
6803 michael 1118 ConfigFileEntry.anti_nick_flood = yylval.number;
6804 michael 913 }
6805     break;
6806    
6807 michael 1076 case 515:
6808 michael 967
6809 michael 1133 /* Line 1806 of yacc.c */
6810 michael 1123 #line 2929 "ircd_parser.y"
6811 michael 913 {
6812 michael 1118 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
6813 michael 913 }
6814     break;
6815    
6816 michael 1076 case 516:
6817 michael 967
6818 michael 1133 /* Line 1806 of yacc.c */
6819 michael 1123 #line 2934 "ircd_parser.y"
6820 michael 913 {
6821 michael 1118 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
6822 michael 913 }
6823     break;
6824    
6825 michael 1076 case 517:
6826 michael 967
6827 michael 1133 /* Line 1806 of yacc.c */
6828 michael 1123 #line 2939 "ircd_parser.y"
6829 michael 913 {
6830 michael 1118 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
6831 michael 913 }
6832     break;
6833    
6834 michael 1076 case 518:
6835 michael 967
6836 michael 1133 /* Line 1806 of yacc.c */
6837 michael 1123 #line 2944 "ircd_parser.y"
6838 michael 913 {
6839 michael 1118 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
6840 michael 913 }
6841     break;
6842    
6843 michael 1076 case 519:
6844 michael 967
6845 michael 1133 /* Line 1806 of yacc.c */
6846 michael 1123 #line 2949 "ircd_parser.y"
6847 michael 913 {
6848 michael 1118 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
6849 michael 913 }
6850     break;
6851    
6852 michael 1076 case 520:
6853 michael 967
6854 michael 1133 /* Line 1806 of yacc.c */
6855 michael 1123 #line 2954 "ircd_parser.y"
6856 michael 913 {
6857 michael 1118 if (conf_parser_ctx.pass == 2)
6858     ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
6859 michael 913 }
6860     break;
6861    
6862 michael 1076 case 521:
6863 michael 967
6864 michael 1133 /* Line 1806 of yacc.c */
6865 michael 1123 #line 2960 "ircd_parser.y"
6866 michael 913 {
6867 michael 1118 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
6868     {
6869     ilog(L_CRIT, "You haven't read your config file properly.");
6870     ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
6871     ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
6872     exit(0);
6873     }
6874 michael 913 }
6875     break;
6876    
6877 michael 1076 case 522:
6878 michael 967
6879 michael 1133 /* Line 1806 of yacc.c */
6880 michael 1123 #line 2971 "ircd_parser.y"
6881 michael 913 {
6882 michael 1118 ConfigFileEntry.kline_with_reason = yylval.number;
6883 michael 913 }
6884     break;
6885    
6886 michael 1076 case 523:
6887 michael 967
6888 michael 1133 /* Line 1806 of yacc.c */
6889 michael 1123 #line 2976 "ircd_parser.y"
6890 michael 913 {
6891 michael 1118 if (conf_parser_ctx.pass == 2)
6892 michael 913 {
6893 michael 1118 MyFree(ConfigFileEntry.kline_reason);
6894     DupString(ConfigFileEntry.kline_reason, yylval.string);
6895 michael 913 }
6896     }
6897     break;
6898    
6899 michael 1076 case 524:
6900 michael 967
6901 michael 1133 /* Line 1806 of yacc.c */
6902 michael 1123 #line 2985 "ircd_parser.y"
6903 michael 913 {
6904 michael 1118 ConfigFileEntry.invisible_on_connect = yylval.number;
6905 michael 913 }
6906     break;
6907    
6908 michael 1076 case 525:
6909 michael 967
6910 michael 1133 /* Line 1806 of yacc.c */
6911 michael 1123 #line 2990 "ircd_parser.y"
6912 michael 913 {
6913 michael 1118 ConfigFileEntry.warn_no_nline = yylval.number;
6914 michael 913 }
6915     break;
6916    
6917 michael 1076 case 526:
6918 michael 967
6919 michael 1133 /* Line 1806 of yacc.c */
6920 michael 1123 #line 2995 "ircd_parser.y"
6921 michael 913 {
6922 michael 1118 ConfigFileEntry.stats_e_disabled = yylval.number;
6923 michael 913 }
6924     break;
6925    
6926 michael 1076 case 527:
6927 michael 967
6928 michael 1133 /* Line 1806 of yacc.c */
6929 michael 1123 #line 3000 "ircd_parser.y"
6930 michael 913 {
6931 michael 1118 ConfigFileEntry.stats_o_oper_only = yylval.number;
6932 michael 913 }
6933     break;
6934    
6935 michael 1076 case 528:
6936 michael 967
6937 michael 1133 /* Line 1806 of yacc.c */
6938 michael 1123 #line 3005 "ircd_parser.y"
6939 michael 913 {
6940 michael 1118 ConfigFileEntry.stats_P_oper_only = yylval.number;
6941 michael 913 }
6942     break;
6943    
6944 michael 1076 case 529:
6945 michael 967
6946 michael 1133 /* Line 1806 of yacc.c */
6947 michael 1123 #line 3010 "ircd_parser.y"
6948 michael 913 {
6949 michael 1118 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
6950 michael 913 }
6951     break;
6952    
6953 michael 1076 case 530:
6954 michael 967
6955 michael 1133 /* Line 1806 of yacc.c */
6956 michael 1123 #line 3013 "ircd_parser.y"
6957 michael 913 {
6958 michael 1118 ConfigFileEntry.stats_k_oper_only = 1;
6959 michael 913 }
6960     break;
6961    
6962 michael 1076 case 531:
6963 michael 967
6964 michael 1133 /* Line 1806 of yacc.c */
6965 michael 1123 #line 3018 "ircd_parser.y"
6966 michael 913 {
6967 michael 1118 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
6968 michael 913 }
6969     break;
6970    
6971 michael 1076 case 532:
6972 michael 967
6973 michael 1133 /* Line 1806 of yacc.c */
6974 michael 1123 #line 3021 "ircd_parser.y"
6975 michael 913 {
6976 michael 1118 ConfigFileEntry.stats_i_oper_only = 1;
6977 michael 913 }
6978     break;
6979    
6980 michael 1076 case 533:
6981 michael 967
6982 michael 1133 /* Line 1806 of yacc.c */
6983 michael 1123 #line 3026 "ircd_parser.y"
6984 michael 913 {
6985 michael 1118 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
6986 michael 913 }
6987     break;
6988    
6989 michael 1076 case 534:
6990 michael 967
6991 michael 1133 /* Line 1806 of yacc.c */
6992 michael 1123 #line 3031 "ircd_parser.y"
6993 michael 913 {
6994 michael 1118 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
6995 michael 913 }
6996     break;
6997    
6998 michael 1076 case 535:
6999 michael 967
7000 michael 1133 /* Line 1806 of yacc.c */
7001 michael 1123 #line 3036 "ircd_parser.y"
7002 michael 913 {
7003 michael 1118 ConfigFileEntry.opers_bypass_callerid = yylval.number;
7004 michael 913 }
7005     break;
7006    
7007 michael 1076 case 536:
7008 michael 967
7009 michael 1133 /* Line 1806 of yacc.c */
7010 michael 1123 #line 3041 "ircd_parser.y"
7011 michael 913 {
7012 michael 1118 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
7013 michael 913 }
7014     break;
7015    
7016 michael 1076 case 537:
7017 michael 967
7018 michael 1133 /* Line 1806 of yacc.c */
7019 michael 1123 #line 3046 "ircd_parser.y"
7020 michael 913 {
7021 michael 1118 ConfigFileEntry.short_motd = yylval.number;
7022 michael 913 }
7023     break;
7024    
7025 michael 1076 case 538:
7026 michael 967
7027 michael 1133 /* Line 1806 of yacc.c */
7028 michael 1123 #line 3051 "ircd_parser.y"
7029 michael 913 {
7030 michael 1118 ConfigFileEntry.no_oper_flood = yylval.number;
7031 michael 913 }
7032     break;
7033    
7034 michael 1076 case 539:
7035 michael 967
7036 michael 1133 /* Line 1806 of yacc.c */
7037 michael 1123 #line 3056 "ircd_parser.y"
7038 michael 913 {
7039 michael 1118 ConfigFileEntry.true_no_oper_flood = yylval.number;
7040 michael 913 }
7041     break;
7042    
7043 michael 1076 case 540:
7044 michael 967
7045 michael 1133 /* Line 1806 of yacc.c */
7046 michael 1123 #line 3061 "ircd_parser.y"
7047 michael 913 {
7048 michael 1118 ConfigFileEntry.oper_pass_resv = yylval.number;
7049 michael 913 }
7050     break;
7051    
7052 michael 1076 case 541:
7053 michael 967
7054 michael 1133 /* Line 1806 of yacc.c */
7055 michael 1123 #line 3066 "ircd_parser.y"
7056 michael 913 {
7057 michael 967 if (conf_parser_ctx.pass == 2)
7058 michael 913 {
7059     if (strlen(yylval.string) > LOCALE_LENGTH-2)
7060     yylval.string[LOCALE_LENGTH-1] = '\0';
7061    
7062     set_locale(yylval.string);
7063     }
7064     }
7065     break;
7066    
7067 michael 1118 case 542:
7068 michael 967
7069 michael 1133 /* Line 1806 of yacc.c */
7070 michael 1123 #line 3077 "ircd_parser.y"
7071 michael 913 {
7072     ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
7073     }
7074     break;
7075    
7076 michael 1118 case 543:
7077 michael 967
7078 michael 1133 /* Line 1806 of yacc.c */
7079 michael 1123 #line 3082 "ircd_parser.y"
7080 michael 913 {
7081     ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
7082     }
7083     break;
7084    
7085 michael 1118 case 544:
7086 michael 967
7087 michael 1133 /* Line 1806 of yacc.c */
7088 michael 1123 #line 3087 "ircd_parser.y"
7089 michael 913 {
7090     ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
7091     }
7092     break;
7093    
7094 michael 1118 case 545:
7095 michael 967
7096 michael 1133 /* Line 1806 of yacc.c */
7097 michael 1123 #line 3092 "ircd_parser.y"
7098 michael 913 {
7099 michael 967 if (conf_parser_ctx.pass == 2)
7100 michael 913 {
7101     MyFree(ConfigFileEntry.servlink_path);
7102     DupString(ConfigFileEntry.servlink_path, yylval.string);
7103     }
7104     }
7105     break;
7106    
7107 michael 1118 case 546:
7108 michael 967
7109 michael 1133 /* Line 1806 of yacc.c */
7110 michael 1123 #line 3101 "ircd_parser.y"
7111 michael 913 {
7112     #ifdef HAVE_LIBCRYPTO
7113 michael 967 if (conf_parser_ctx.pass == 2)
7114 michael 913 {
7115     struct EncCapability *ecap;
7116     const char *cipher_name;
7117     int found = 0;
7118    
7119     ConfigFileEntry.default_cipher_preference = NULL;
7120     cipher_name = yylval.string;
7121    
7122     for (ecap = CipherTable; ecap->name; ecap++)
7123     {
7124     if ((irccmp(ecap->name, cipher_name) == 0) &&
7125     (ecap->cap & CAP_ENC_MASK))
7126     {
7127     ConfigFileEntry.default_cipher_preference = ecap;
7128     found = 1;
7129     break;
7130     }
7131     }
7132    
7133     if (!found)
7134     yyerror("Invalid cipher");
7135     }
7136     #else
7137 michael 967 if (conf_parser_ctx.pass == 2)
7138 michael 913 yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7139     #endif
7140     }
7141     break;
7142    
7143 michael 1118 case 547:
7144 michael 967
7145 michael 1133 /* Line 1806 of yacc.c */
7146 michael 1123 #line 3133 "ircd_parser.y"
7147 michael 913 {
7148 michael 967 if (conf_parser_ctx.pass == 2)
7149 michael 913 {
7150     ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7151     #ifndef HAVE_LIBZ
7152     yyerror("Ignoring compression_level -- no zlib support");
7153     #else
7154     if ((ConfigFileEntry.compression_level < 1) ||
7155     (ConfigFileEntry.compression_level > 9))
7156     {
7157     yyerror("Ignoring invalid compression_level, using default");
7158     ConfigFileEntry.compression_level = 0;
7159     }
7160     #endif
7161     }
7162     }
7163     break;
7164    
7165 michael 1118 case 548:
7166 michael 967
7167 michael 1133 /* Line 1806 of yacc.c */
7168 michael 1123 #line 3151 "ircd_parser.y"
7169 michael 913 {
7170     ConfigFileEntry.use_egd = yylval.number;
7171     }
7172     break;
7173    
7174 michael 1118 case 549:
7175 michael 967
7176 michael 1133 /* Line 1806 of yacc.c */
7177 michael 1123 #line 3156 "ircd_parser.y"
7178 michael 913 {
7179 michael 967 if (conf_parser_ctx.pass == 2)
7180 michael 913 {
7181     MyFree(ConfigFileEntry.egdpool_path);
7182     DupString(ConfigFileEntry.egdpool_path, yylval.string);
7183     }
7184     }
7185     break;
7186    
7187 michael 1118 case 550:
7188 michael 967
7189 michael 1133 /* Line 1806 of yacc.c */
7190 michael 1123 #line 3165 "ircd_parser.y"
7191 michael 913 {
7192     ConfigFileEntry.ping_cookie = yylval.number;
7193     }
7194     break;
7195    
7196 michael 1118 case 551:
7197 michael 967
7198 michael 1133 /* Line 1806 of yacc.c */
7199 michael 1123 #line 3170 "ircd_parser.y"
7200 michael 913 {
7201     ConfigFileEntry.disable_auth = yylval.number;
7202     }
7203     break;
7204    
7205 michael 1118 case 552:
7206 michael 967
7207 michael 1133 /* Line 1806 of yacc.c */
7208 michael 1123 #line 3175 "ircd_parser.y"
7209 michael 913 {
7210     ConfigFileEntry.throttle_time = yylval.number;
7211     }
7212     break;
7213    
7214 michael 1118 case 553:
7215 michael 967
7216 michael 1133 /* Line 1806 of yacc.c */
7217 michael 1123 #line 3180 "ircd_parser.y"
7218 michael 913 {
7219     ConfigFileEntry.oper_umodes = 0;
7220     }
7221     break;
7222    
7223 michael 1118 case 557:
7224 michael 967
7225 michael 1133 /* Line 1806 of yacc.c */
7226 michael 1123 #line 3186 "ircd_parser.y"
7227 michael 913 {
7228     ConfigFileEntry.oper_umodes |= UMODE_BOTS;
7229     }
7230     break;
7231    
7232 michael 1118 case 558:
7233 michael 967
7234 michael 1133 /* Line 1806 of yacc.c */
7235 michael 1123 #line 3189 "ircd_parser.y"
7236 michael 913 {
7237     ConfigFileEntry.oper_umodes |= UMODE_CCONN;
7238     }
7239     break;
7240    
7241 michael 1118 case 559:
7242 michael 967
7243 michael 1133 /* Line 1806 of yacc.c */
7244 michael 1123 #line 3192 "ircd_parser.y"
7245 michael 913 {
7246     ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
7247     }
7248     break;
7249    
7250 michael 1118 case 560:
7251 michael 967
7252 michael 1133 /* Line 1806 of yacc.c */
7253 michael 1123 #line 3195 "ircd_parser.y"
7254 michael 913 {
7255     ConfigFileEntry.oper_umodes |= UMODE_DEAF;
7256     }
7257     break;
7258    
7259 michael 1118 case 561:
7260 michael 967
7261 michael 1133 /* Line 1806 of yacc.c */
7262 michael 1123 #line 3198 "ircd_parser.y"
7263 michael 913 {
7264     ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
7265     }
7266     break;
7267    
7268 michael 1118 case 562:
7269 michael 967
7270 michael 1133 /* Line 1806 of yacc.c */
7271 michael 1123 #line 3201 "ircd_parser.y"
7272 michael 913 {
7273     ConfigFileEntry.oper_umodes |= UMODE_FULL;
7274     }
7275     break;
7276    
7277 michael 1118 case 563:
7278 michael 967
7279 michael 1133 /* Line 1806 of yacc.c */
7280 michael 1123 #line 3204 "ircd_parser.y"
7281 michael 913 {
7282     ConfigFileEntry.oper_umodes |= UMODE_SKILL;
7283     }
7284     break;
7285    
7286 michael 1118 case 564:
7287 michael 967
7288 michael 1133 /* Line 1806 of yacc.c */
7289 michael 1123 #line 3207 "ircd_parser.y"
7290 michael 913 {
7291     ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
7292     }
7293     break;
7294    
7295 michael 1118 case 565:
7296 michael 967
7297 michael 1133 /* Line 1806 of yacc.c */
7298 michael 1123 #line 3210 "ircd_parser.y"
7299 michael 913 {
7300     ConfigFileEntry.oper_umodes |= UMODE_REJ;
7301     }
7302     break;
7303    
7304 michael 1118 case 566:
7305 michael 967
7306 michael 1133 /* Line 1806 of yacc.c */
7307 michael 1123 #line 3213 "ircd_parser.y"
7308 michael 913 {
7309     ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
7310     }
7311     break;
7312    
7313 michael 1118 case 567:
7314 michael 967
7315 michael 1133 /* Line 1806 of yacc.c */
7316 michael 1123 #line 3216 "ircd_parser.y"
7317 michael 913 {
7318     ConfigFileEntry.oper_umodes |= UMODE_SPY;
7319     }
7320     break;
7321    
7322 michael 1118 case 568:
7323 michael 967
7324 michael 1133 /* Line 1806 of yacc.c */
7325 michael 1123 #line 3219 "ircd_parser.y"
7326 michael 913 {
7327     ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
7328     }
7329     break;
7330    
7331 michael 1118 case 569:
7332 michael 967
7333 michael 1133 /* Line 1806 of yacc.c */
7334 michael 1123 #line 3222 "ircd_parser.y"
7335 michael 913 {
7336     ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
7337     }
7338     break;
7339    
7340 michael 1118 case 570:
7341 michael 967
7342 michael 1133 /* Line 1806 of yacc.c */
7343 michael 1123 #line 3225 "ircd_parser.y"
7344 michael 913 {
7345     ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
7346     }
7347     break;
7348    
7349 michael 1118 case 571:
7350 michael 967
7351 michael 1133 /* Line 1806 of yacc.c */
7352 michael 1123 #line 3228 "ircd_parser.y"
7353 michael 913 {
7354     ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
7355     }
7356     break;
7357    
7358 michael 1118 case 572:
7359 michael 967
7360 michael 1133 /* Line 1806 of yacc.c */
7361 michael 1123 #line 3231 "ircd_parser.y"
7362 michael 913 {
7363     ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
7364     }
7365     break;
7366    
7367 michael 1118 case 573:
7368 michael 967
7369 michael 1133 /* Line 1806 of yacc.c */
7370 michael 1123 #line 3234 "ircd_parser.y"
7371 michael 913 {
7372     ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
7373     }
7374     break;
7375    
7376 michael 1118 case 574:
7377 michael 967
7378 michael 1133 /* Line 1806 of yacc.c */
7379 michael 1123 #line 3237 "ircd_parser.y"
7380 michael 913 {
7381     ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
7382     }
7383     break;
7384    
7385 michael 1118 case 575:
7386 michael 967
7387 michael 1133 /* Line 1806 of yacc.c */
7388 michael 1123 #line 3240 "ircd_parser.y"
7389 michael 913 {
7390     ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
7391     }
7392     break;
7393    
7394 michael 1118 case 576:
7395 michael 967
7396 michael 1133 /* Line 1806 of yacc.c */
7397 michael 1123 #line 3245 "ircd_parser.y"
7398 michael 913 {
7399     ConfigFileEntry.oper_only_umodes = 0;
7400     }
7401     break;
7402    
7403 michael 1118 case 580:
7404 michael 967
7405 michael 1133 /* Line 1806 of yacc.c */
7406 michael 1123 #line 3251 "ircd_parser.y"
7407 michael 913 {
7408     ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7409     }
7410     break;
7411    
7412 michael 1118 case 581:
7413 michael 967
7414 michael 1133 /* Line 1806 of yacc.c */
7415 michael 1123 #line 3254 "ircd_parser.y"
7416 michael 913 {
7417     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7418     }
7419     break;
7420    
7421 michael 1118 case 582:
7422 michael 967
7423 michael 1133 /* Line 1806 of yacc.c */
7424 michael 1123 #line 3257 "ircd_parser.y"
7425 michael 913 {
7426     ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7427     }
7428     break;
7429    
7430 michael 1118 case 583:
7431 michael 967
7432 michael 1133 /* Line 1806 of yacc.c */
7433 michael 1123 #line 3260 "ircd_parser.y"
7434 michael 913 {
7435     ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7436     }
7437     break;
7438    
7439 michael 1118 case 584:
7440 michael 967
7441 michael 1133 /* Line 1806 of yacc.c */
7442 michael 1123 #line 3263 "ircd_parser.y"
7443 michael 913 {
7444     ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7445     }
7446     break;
7447    
7448 michael 1118 case 585:
7449 michael 967
7450 michael 1133 /* Line 1806 of yacc.c */
7451 michael 1123 #line 3266 "ircd_parser.y"
7452 michael 913 {
7453     ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7454     }
7455     break;
7456    
7457 michael 1118 case 586:
7458 michael 967
7459 michael 1133 /* Line 1806 of yacc.c */
7460 michael 1123 #line 3269 "ircd_parser.y"
7461 michael 913 {
7462     ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7463     }
7464     break;
7465    
7466 michael 1118 case 587:
7467 michael 967
7468 michael 1133 /* Line 1806 of yacc.c */
7469 michael 1123 #line 3272 "ircd_parser.y"
7470 michael 913 {
7471     ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
7472     }
7473     break;
7474    
7475 michael 1118 case 588:
7476 michael 967
7477 michael 1133 /* Line 1806 of yacc.c */
7478 michael 1123 #line 3275 "ircd_parser.y"
7479 michael 913 {
7480     ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
7481     }
7482     break;
7483    
7484 michael 1118 case 589:
7485 michael 967
7486 michael 1133 /* Line 1806 of yacc.c */
7487 michael 1123 #line 3278 "ircd_parser.y"
7488 michael 913 {
7489     ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
7490     }
7491     break;
7492    
7493 michael 1118 case 590:
7494 michael 967
7495 michael 1133 /* Line 1806 of yacc.c */
7496 michael 1123 #line 3281 "ircd_parser.y"
7497 michael 913 {
7498     ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
7499     }
7500     break;
7501    
7502 michael 1118 case 591:
7503 michael 967
7504 michael 1133 /* Line 1806 of yacc.c */
7505 michael 1123 #line 3284 "ircd_parser.y"
7506 michael 913 {
7507     ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
7508     }
7509     break;
7510    
7511 michael 1118 case 592:
7512 michael 967
7513 michael 1133 /* Line 1806 of yacc.c */
7514 michael 1123 #line 3287 "ircd_parser.y"
7515 michael 913 {
7516     ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
7517     }
7518     break;
7519    
7520 michael 1118 case 593:
7521 michael 967
7522 michael 1133 /* Line 1806 of yacc.c */
7523 michael 1123 #line 3290 "ircd_parser.y"
7524 michael 913 {
7525     ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
7526     }
7527     break;
7528    
7529 michael 1118 case 594:
7530 michael 967
7531 michael 1133 /* Line 1806 of yacc.c */
7532 michael 1123 #line 3293 "ircd_parser.y"
7533 michael 913 {
7534     ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
7535     }
7536     break;
7537    
7538 michael 1118 case 595:
7539 michael 967
7540 michael 1133 /* Line 1806 of yacc.c */
7541 michael 1123 #line 3296 "ircd_parser.y"
7542 michael 913 {
7543     ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
7544     }
7545     break;
7546    
7547 michael 1118 case 596:
7548 michael 967
7549 michael 1133 /* Line 1806 of yacc.c */
7550 michael 1123 #line 3299 "ircd_parser.y"
7551 michael 913 {
7552     ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
7553     }
7554     break;
7555    
7556 michael 1118 case 597:
7557 michael 967
7558 michael 1133 /* Line 1806 of yacc.c */
7559 michael 1123 #line 3302 "ircd_parser.y"
7560 michael 913 {
7561     ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
7562     }
7563     break;
7564    
7565 michael 1118 case 598:
7566 michael 967
7567 michael 1133 /* Line 1806 of yacc.c */
7568 michael 1123 #line 3305 "ircd_parser.y"
7569 michael 913 {
7570     ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
7571     }
7572     break;
7573    
7574 michael 1118 case 599:
7575 michael 967
7576 michael 1133 /* Line 1806 of yacc.c */
7577 michael 1123 #line 3310 "ircd_parser.y"
7578 michael 913 {
7579     ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
7580     }
7581     break;
7582    
7583 michael 1118 case 600:
7584 michael 967
7585 michael 1133 /* Line 1806 of yacc.c */
7586 michael 1123 #line 3315 "ircd_parser.y"
7587 michael 913 {
7588     ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
7589     }
7590     break;
7591    
7592 michael 1118 case 601:
7593 michael 967
7594 michael 1133 /* Line 1806 of yacc.c */
7595 michael 1123 #line 3320 "ircd_parser.y"
7596 michael 913 {
7597     ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
7598     }
7599     break;
7600    
7601 michael 1118 case 602:
7602 michael 967
7603 michael 1133 /* Line 1806 of yacc.c */
7604 michael 1123 #line 3325 "ircd_parser.y"
7605 michael 913 {
7606     ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
7607     }
7608     break;
7609    
7610 michael 1118 case 603:
7611 michael 967
7612 michael 1133 /* Line 1806 of yacc.c */
7613 michael 1123 #line 3334 "ircd_parser.y"
7614 michael 913 {
7615 michael 967 if (conf_parser_ctx.pass == 2)
7616 michael 913 {
7617     yy_conf = make_conf_item(GDENY_TYPE);
7618     yy_aconf = map_to_conf(yy_conf);
7619     }
7620     }
7621     break;
7622    
7623 michael 1118 case 604:
7624 michael 967
7625 michael 1133 /* Line 1806 of yacc.c */
7626 michael 1123 #line 3341 "ircd_parser.y"
7627 michael 913 {
7628 michael 967 if (conf_parser_ctx.pass == 2)
7629 michael 913 {
7630     /*
7631     * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
7632     * end we will have one extra, so we should free it.
7633     */
7634     if (yy_conf->name == NULL || yy_aconf->user == NULL)
7635     {
7636     delete_conf_item(yy_conf);
7637     yy_conf = NULL;
7638     yy_aconf = NULL;
7639     }
7640     }
7641     }
7642     break;
7643    
7644 michael 1118 case 614:
7645 michael 967
7646 michael 1133 /* Line 1806 of yacc.c */
7647 michael 1123 #line 3367 "ircd_parser.y"
7648 michael 913 {
7649 michael 967 if (conf_parser_ctx.pass == 2)
7650 michael 913 ConfigFileEntry.glines = yylval.number;
7651     }
7652     break;
7653    
7654 michael 1118 case 615:
7655 michael 967
7656 michael 1133 /* Line 1806 of yacc.c */
7657 michael 1123 #line 3373 "ircd_parser.y"
7658 michael 913 {
7659 michael 967 if (conf_parser_ctx.pass == 2)
7660 michael 913 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
7661     }
7662     break;
7663    
7664 michael 1118 case 616:
7665 michael 967
7666 michael 1133 /* Line 1806 of yacc.c */
7667 michael 1123 #line 3379 "ircd_parser.y"
7668 michael 913 {
7669 michael 967 if (conf_parser_ctx.pass == 2)
7670 michael 913 ConfigFileEntry.gline_logging = 0;
7671     }
7672     break;
7673    
7674 michael 1118 case 620:
7675 michael 967
7676 michael 1133 /* Line 1806 of yacc.c */
7677 michael 1123 #line 3385 "ircd_parser.y"
7678 michael 913 {
7679 michael 967 if (conf_parser_ctx.pass == 2)
7680 michael 913 ConfigFileEntry.gline_logging |= GDENY_REJECT;
7681     }
7682     break;
7683    
7684 michael 1118 case 621:
7685 michael 967
7686 michael 1133 /* Line 1806 of yacc.c */
7687 michael 1123 #line 3389 "ircd_parser.y"
7688 michael 913 {
7689 michael 967 if (conf_parser_ctx.pass == 2)
7690 michael 913 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
7691     }
7692     break;
7693    
7694 michael 1118 case 622:
7695 michael 967
7696 michael 1133 /* Line 1806 of yacc.c */
7697 michael 1123 #line 3395 "ircd_parser.y"
7698 michael 913 {
7699 michael 967 if (conf_parser_ctx.pass == 2)
7700 michael 913 {
7701     struct split_nuh_item nuh;
7702    
7703     nuh.nuhmask = yylval.string;
7704     nuh.nickptr = NULL;
7705     nuh.userptr = userbuf;
7706     nuh.hostptr = hostbuf;
7707    
7708     nuh.nicksize = 0;
7709     nuh.usersize = sizeof(userbuf);
7710     nuh.hostsize = sizeof(hostbuf);
7711    
7712     split_nuh(&nuh);
7713    
7714     if (yy_aconf->user == NULL)
7715     {
7716     DupString(yy_aconf->user, userbuf);
7717     DupString(yy_aconf->host, hostbuf);
7718     }
7719     else
7720     {
7721     struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
7722    
7723     DupString(yy_tmp->user, userbuf);
7724     DupString(yy_tmp->host, hostbuf);
7725    
7726     dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
7727     }
7728     }
7729     }
7730     break;
7731    
7732 michael 1118 case 623:
7733 michael 967
7734 michael 1133 /* Line 1806 of yacc.c */
7735 michael 1123 #line 3429 "ircd_parser.y"
7736 michael 913 {
7737 michael 967 if (conf_parser_ctx.pass == 2)
7738 michael 913 {
7739     MyFree(yy_conf->name);
7740     DupString(yy_conf->name, yylval.string);
7741     }
7742     }
7743     break;
7744    
7745 michael 1118 case 624:
7746 michael 967
7747 michael 1133 /* Line 1806 of yacc.c */
7748 michael 1123 #line 3438 "ircd_parser.y"
7749 michael 913 {
7750 michael 967 if (conf_parser_ctx.pass == 2)
7751 michael 913 yy_aconf->flags = 0;
7752     }
7753     break;
7754    
7755 michael 1118 case 625:
7756 michael 967
7757 michael 1133 /* Line 1806 of yacc.c */
7758 michael 1123 #line 3442 "ircd_parser.y"
7759 michael 913 {
7760 michael 967 if (conf_parser_ctx.pass == 2)
7761 michael 913 {
7762     struct CollectItem *yy_tmp = NULL;
7763     dlink_node *ptr, *next_ptr;
7764    
7765     DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
7766     {
7767     struct AccessItem *new_aconf;
7768     struct ConfItem *new_conf;
7769    
7770     yy_tmp = ptr->data;
7771     new_conf = make_conf_item(GDENY_TYPE);
7772     new_aconf = map_to_conf(new_conf);
7773    
7774     new_aconf->flags = yy_aconf->flags;
7775    
7776     if (yy_conf->name != NULL)
7777     DupString(new_conf->name, yy_conf->name);
7778     else
7779     DupString(new_conf->name, "*");
7780     if (yy_aconf->user != NULL)
7781     DupString(new_aconf->user, yy_tmp->user);
7782     else
7783     DupString(new_aconf->user, "*");
7784     if (yy_aconf->host != NULL)
7785     DupString(new_aconf->host, yy_tmp->host);
7786     else
7787     DupString(new_aconf->host, "*");
7788    
7789     dlinkDelete(&yy_tmp->node, &col_conf_list);
7790     }
7791    
7792     /*
7793     * In case someone has fed us with more than one action= after user/name
7794     * which would leak memory -Michael
7795     */
7796     if (yy_conf->name == NULL || yy_aconf->user == NULL)
7797     delete_conf_item(yy_conf);
7798    
7799     yy_conf = make_conf_item(GDENY_TYPE);
7800     yy_aconf = map_to_conf(yy_conf);
7801     }
7802     }
7803     break;
7804    
7805 michael 1118 case 628:
7806 michael 967
7807 michael 1133 /* Line 1806 of yacc.c */
7808 michael 1123 #line 3489 "ircd_parser.y"
7809 michael 913 {
7810 michael 967 if (conf_parser_ctx.pass == 2)
7811 michael 913 yy_aconf->flags |= GDENY_REJECT;
7812     }
7813     break;
7814    
7815 michael 1118 case 629:
7816 michael 967
7817 michael 1133 /* Line 1806 of yacc.c */
7818 michael 1123 #line 3493 "ircd_parser.y"
7819 michael 913 {
7820 michael 967 if (conf_parser_ctx.pass == 2)
7821 michael 913 yy_aconf->flags |= GDENY_BLOCK;
7822     }
7823     break;
7824    
7825 michael 1118 case 652:
7826    
7827 michael 1133 /* Line 1806 of yacc.c */
7828 michael 1123 #line 3517 "ircd_parser.y"
7829 michael 1118 {
7830     ConfigChannel.disable_fake_channels = yylval.number;
7831     }
7832     break;
7833    
7834     case 653:
7835    
7836 michael 1133 /* Line 1806 of yacc.c */
7837 michael 1123 #line 3522 "ircd_parser.y"
7838 michael 1118 {
7839     ConfigChannel.restrict_channels = yylval.number;
7840     }
7841     break;
7842    
7843 michael 1076 case 654:
7844 michael 967
7845 michael 1133 /* Line 1806 of yacc.c */
7846 michael 1123 #line 3527 "ircd_parser.y"
7847 michael 913 {
7848 michael 1118 ConfigChannel.disable_local_channels = yylval.number;
7849 michael 913 }
7850     break;
7851    
7852 michael 1076 case 655:
7853 michael 967
7854 michael 1133 /* Line 1806 of yacc.c */
7855 michael 1123 #line 3532 "ircd_parser.y"
7856 michael 913 {
7857 michael 1118 ConfigChannel.use_except = yylval.number;
7858 michael 913 }
7859     break;
7860    
7861 michael 1076 case 656:
7862 michael 967
7863 michael 1133 /* Line 1806 of yacc.c */
7864 michael 1123 #line 3537 "ircd_parser.y"
7865 michael 913 {
7866 michael 1118 ConfigChannel.use_invex = yylval.number;
7867 michael 913 }
7868     break;
7869    
7870 michael 1076 case 657:
7871 michael 967
7872 michael 1133 /* Line 1806 of yacc.c */
7873 michael 1123 #line 3542 "ircd_parser.y"
7874 michael 913 {
7875 michael 1118 ConfigChannel.use_knock = yylval.number;
7876 michael 913 }
7877     break;
7878    
7879 michael 1076 case 658:
7880 michael 967
7881 michael 1133 /* Line 1806 of yacc.c */
7882 michael 1123 #line 3547 "ircd_parser.y"
7883 michael 913 {
7884 michael 1118 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
7885 michael 913 }
7886     break;
7887    
7888 michael 1076 case 659:
7889 michael 967
7890 michael 1133 /* Line 1806 of yacc.c */
7891 michael 1123 #line 3552 "ircd_parser.y"
7892 michael 913 {
7893 michael 1118 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
7894 michael 913 }
7895     break;
7896    
7897 michael 1076 case 660:
7898 michael 967
7899 michael 1133 /* Line 1806 of yacc.c */
7900 michael 1123 #line 3557 "ircd_parser.y"
7901 michael 913 {
7902 michael 1118 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
7903 michael 913 }
7904     break;
7905    
7906 michael 1076 case 661:
7907 michael 967
7908 michael 1133 /* Line 1806 of yacc.c */
7909 michael 1123 #line 3562 "ircd_parser.y"
7910 michael 913 {
7911 michael 1118 ConfigChannel.quiet_on_ban = yylval.number;
7912 michael 913 }
7913     break;
7914    
7915 michael 1076 case 662:
7916 michael 967
7917 michael 1133 /* Line 1806 of yacc.c */
7918 michael 1123 #line 3567 "ircd_parser.y"
7919 michael 913 {
7920 michael 1118 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
7921 michael 913 }
7922     break;
7923    
7924 michael 1076 case 663:
7925 michael 967
7926 michael 1133 /* Line 1806 of yacc.c */
7927 michael 1123 #line 3572 "ircd_parser.y"
7928 michael 913 {
7929 michael 1118 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
7930 michael 913 }
7931     break;
7932    
7933 michael 1076 case 664:
7934 michael 967
7935 michael 1133 /* Line 1806 of yacc.c */
7936 michael 1123 #line 3577 "ircd_parser.y"
7937 michael 913 {
7938 michael 1118 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
7939 michael 913 }
7940     break;
7941    
7942 michael 1076 case 665:
7943 michael 967
7944 michael 1133 /* Line 1806 of yacc.c */
7945 michael 1123 #line 3582 "ircd_parser.y"
7946 michael 913 {
7947 michael 1118 ConfigChannel.no_create_on_split = yylval.number;
7948 michael 913 }
7949     break;
7950    
7951 michael 1076 case 666:
7952 michael 967
7953 michael 1133 /* Line 1806 of yacc.c */
7954 michael 1123 #line 3587 "ircd_parser.y"
7955 michael 913 {
7956 michael 1118 ConfigChannel.no_join_on_split = yylval.number;
7957 michael 913 }
7958     break;
7959    
7960 michael 1076 case 667:
7961 michael 967
7962 michael 1133 /* Line 1806 of yacc.c */
7963 michael 1123 #line 3592 "ircd_parser.y"
7964 michael 913 {
7965 michael 1118 ConfigChannel.burst_topicwho = yylval.number;
7966 michael 913 }
7967     break;
7968    
7969 michael 1076 case 668:
7970 michael 967
7971 michael 1133 /* Line 1806 of yacc.c */
7972 michael 1123 #line 3597 "ircd_parser.y"
7973 michael 913 {
7974 michael 1118 GlobalSetOptions.joinfloodcount = yylval.number;
7975 michael 913 }
7976     break;
7977    
7978 michael 1076 case 669:
7979 michael 967
7980 michael 1133 /* Line 1806 of yacc.c */
7981 michael 1123 #line 3602 "ircd_parser.y"
7982 michael 913 {
7983     GlobalSetOptions.joinfloodtime = yylval.number;
7984     }
7985     break;
7986    
7987 michael 1118 case 681:
7988 michael 967
7989 michael 1133 /* Line 1806 of yacc.c */
7990 michael 1123 #line 3621 "ircd_parser.y"
7991 michael 913 {
7992 michael 967 if (conf_parser_ctx.pass == 2)
7993 michael 913 ConfigServerHide.flatten_links = yylval.number;
7994     }
7995     break;
7996    
7997 michael 1118 case 682:
7998 michael 967
7999 michael 1133 /* Line 1806 of yacc.c */
8000 michael 1123 #line 3627 "ircd_parser.y"
8001 michael 913 {
8002 michael 967 if (conf_parser_ctx.pass == 2)
8003 michael 913 ConfigServerHide.hide_servers = yylval.number;
8004     }
8005     break;
8006    
8007 michael 1118 case 683:
8008 michael 967
8009 michael 1133 /* Line 1806 of yacc.c */
8010 michael 1123 #line 3633 "ircd_parser.y"
8011 michael 913 {
8012 michael 967 if (conf_parser_ctx.pass == 2)
8013 michael 913 {
8014     MyFree(ConfigServerHide.hidden_name);
8015     DupString(ConfigServerHide.hidden_name, yylval.string);
8016     }
8017     }
8018     break;
8019    
8020 michael 1118 case 684:
8021 michael 967
8022 michael 1133 /* Line 1806 of yacc.c */
8023 michael 1123 #line 3642 "ircd_parser.y"
8024 michael 913 {
8025 michael 967 if (conf_parser_ctx.pass == 2)
8026 michael 913 {
8027     if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
8028     {
8029     eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
8030     ConfigServerHide.links_disabled = 0;
8031     }
8032    
8033     ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
8034     }
8035     }
8036     break;
8037    
8038 michael 1118 case 685:
8039 michael 967
8040 michael 1133 /* Line 1806 of yacc.c */
8041 michael 1123 #line 3656 "ircd_parser.y"
8042 michael 913 {
8043 michael 967 if (conf_parser_ctx.pass == 2)
8044 michael 913 ConfigServerHide.hidden = yylval.number;
8045     }
8046     break;
8047    
8048 michael 1118 case 686:
8049 michael 967
8050 michael 1133 /* Line 1806 of yacc.c */
8051 michael 1123 #line 3662 "ircd_parser.y"
8052 michael 913 {
8053 michael 967 if (conf_parser_ctx.pass == 2)
8054 michael 913 ConfigServerHide.disable_hidden = yylval.number;
8055     }
8056     break;
8057    
8058 michael 1118 case 687:
8059 michael 967
8060 michael 1133 /* Line 1806 of yacc.c */
8061 michael 1123 #line 3668 "ircd_parser.y"
8062 michael 913 {
8063 michael 967 if (conf_parser_ctx.pass == 2)
8064 michael 913 ConfigServerHide.hide_server_ips = yylval.number;
8065     }
8066     break;
8067    
8068    
8069 michael 967
8070 michael 1133 /* Line 1806 of yacc.c */
8071     #line 8072 "ircd_parser.c"
8072 michael 913 default: break;
8073     }
8074 michael 1133 /* User semantic actions sometimes alter yychar, and that requires
8075     that yytoken be updated with the new translation. We take the
8076     approach of translating immediately before every use of yytoken.
8077     One alternative is translating here after every semantic action,
8078     but that translation would be missed if the semantic action invokes
8079     YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
8080     if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
8081     incorrect destructor might then be invoked immediately. In the
8082     case of YYERROR or YYBACKUP, subsequent parser actions might lead
8083     to an incorrect destructor call or verbose syntax error message
8084     before the lookahead is translated. */
8085 michael 913 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8086    
8087     YYPOPSTACK (yylen);
8088     yylen = 0;
8089     YY_STACK_PRINT (yyss, yyssp);
8090    
8091     *++yyvsp = yyval;
8092    
8093     /* Now `shift' the result of the reduction. Determine what state
8094     that goes to, based on the state we popped back to and the rule
8095     number reduced by. */
8096    
8097     yyn = yyr1[yyn];
8098    
8099     yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
8100     if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
8101     yystate = yytable[yystate];
8102     else
8103     yystate = yydefgoto[yyn - YYNTOKENS];
8104    
8105     goto yynewstate;
8106    
8107    
8108     /*------------------------------------.
8109     | yyerrlab -- here on detecting error |
8110     `------------------------------------*/
8111     yyerrlab:
8112 michael 1133 /* Make sure we have latest lookahead translation. See comments at
8113     user semantic actions for why this is necessary. */
8114     yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
8115    
8116 michael 913 /* If not already recovering from an error, report this error. */
8117     if (!yyerrstatus)
8118     {
8119     ++yynerrs;
8120     #if ! YYERROR_VERBOSE
8121     yyerror (YY_("syntax error"));
8122     #else
8123 michael 1133 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
8124     yyssp, yytoken)
8125 michael 913 {
8126 michael 1133 char const *yymsgp = YY_("syntax error");
8127     int yysyntax_error_status;
8128     yysyntax_error_status = YYSYNTAX_ERROR;
8129     if (yysyntax_error_status == 0)
8130     yymsgp = yymsg;
8131     else if (yysyntax_error_status == 1)
8132     {
8133     if (yymsg != yymsgbuf)
8134     YYSTACK_FREE (yymsg);
8135     yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
8136     if (!yymsg)
8137     {
8138     yymsg = yymsgbuf;
8139     yymsg_alloc = sizeof yymsgbuf;
8140     yysyntax_error_status = 2;
8141     }
8142     else
8143     {
8144     yysyntax_error_status = YYSYNTAX_ERROR;
8145     yymsgp = yymsg;
8146     }
8147     }
8148     yyerror (yymsgp);
8149     if (yysyntax_error_status == 2)
8150     goto yyexhaustedlab;
8151 michael 913 }
8152 michael 1133 # undef YYSYNTAX_ERROR
8153 michael 913 #endif
8154     }
8155    
8156    
8157    
8158     if (yyerrstatus == 3)
8159     {
8160 michael 967 /* If just tried and failed to reuse lookahead token after an
8161 michael 913 error, discard it. */
8162    
8163     if (yychar <= YYEOF)
8164     {
8165     /* Return failure if at end of input. */
8166     if (yychar == YYEOF)
8167     YYABORT;
8168     }
8169     else
8170     {
8171     yydestruct ("Error: discarding",
8172     yytoken, &yylval);
8173     yychar = YYEMPTY;
8174     }
8175     }
8176    
8177 michael 967 /* Else will try to reuse lookahead token after shifting the error
8178 michael 913 token. */
8179     goto yyerrlab1;
8180    
8181    
8182     /*---------------------------------------------------.
8183     | yyerrorlab -- error raised explicitly by YYERROR. |
8184     `---------------------------------------------------*/
8185     yyerrorlab:
8186    
8187     /* Pacify compilers like GCC when the user code never invokes
8188     YYERROR and the label yyerrorlab therefore never appears in user
8189     code. */
8190     if (/*CONSTCOND*/ 0)
8191     goto yyerrorlab;
8192    
8193     /* Do not reclaim the symbols of the rule which action triggered
8194     this YYERROR. */
8195     YYPOPSTACK (yylen);
8196     yylen = 0;
8197     YY_STACK_PRINT (yyss, yyssp);
8198     yystate = *yyssp;
8199     goto yyerrlab1;
8200    
8201    
8202     /*-------------------------------------------------------------.
8203     | yyerrlab1 -- common code for both syntax error and YYERROR. |
8204     `-------------------------------------------------------------*/
8205     yyerrlab1:
8206     yyerrstatus = 3; /* Each real token shifted decrements this. */
8207    
8208     for (;;)
8209     {
8210     yyn = yypact[yystate];
8211 michael 1133 if (!yypact_value_is_default (yyn))
8212 michael 913 {
8213     yyn += YYTERROR;
8214     if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8215     {
8216     yyn = yytable[yyn];
8217     if (0 < yyn)
8218     break;
8219     }
8220     }
8221    
8222     /* Pop the current state because it cannot handle the error token. */
8223     if (yyssp == yyss)
8224     YYABORT;
8225    
8226    
8227     yydestruct ("Error: popping",
8228     yystos[yystate], yyvsp);
8229     YYPOPSTACK (1);
8230     yystate = *yyssp;
8231     YY_STACK_PRINT (yyss, yyssp);
8232     }
8233    
8234     *++yyvsp = yylval;
8235    
8236    
8237     /* Shift the error token. */
8238     YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8239    
8240     yystate = yyn;
8241     goto yynewstate;
8242    
8243    
8244     /*-------------------------------------.
8245     | yyacceptlab -- YYACCEPT comes here. |
8246     `-------------------------------------*/
8247     yyacceptlab:
8248     yyresult = 0;
8249     goto yyreturn;
8250    
8251     /*-----------------------------------.
8252     | yyabortlab -- YYABORT comes here. |
8253     `-----------------------------------*/
8254     yyabortlab:
8255     yyresult = 1;
8256     goto yyreturn;
8257    
8258 michael 967 #if !defined(yyoverflow) || YYERROR_VERBOSE
8259 michael 913 /*-------------------------------------------------.
8260     | yyexhaustedlab -- memory exhaustion comes here. |
8261     `-------------------------------------------------*/
8262     yyexhaustedlab:
8263     yyerror (YY_("memory exhausted"));
8264     yyresult = 2;
8265     /* Fall through. */
8266     #endif
8267    
8268     yyreturn:
8269 michael 967 if (yychar != YYEMPTY)
8270 michael 1133 {
8271     /* Make sure we have latest lookahead translation. See comments at
8272     user semantic actions for why this is necessary. */
8273     yytoken = YYTRANSLATE (yychar);
8274     yydestruct ("Cleanup: discarding lookahead",
8275     yytoken, &yylval);
8276     }
8277 michael 913 /* Do not reclaim the symbols of the rule which action triggered
8278     this YYABORT or YYACCEPT. */
8279     YYPOPSTACK (yylen);
8280     YY_STACK_PRINT (yyss, yyssp);
8281     while (yyssp != yyss)
8282     {
8283     yydestruct ("Cleanup: popping",
8284     yystos[*yyssp], yyvsp);
8285     YYPOPSTACK (1);
8286     }
8287     #ifndef yyoverflow
8288     if (yyss != yyssa)
8289     YYSTACK_FREE (yyss);
8290     #endif
8291     #if YYERROR_VERBOSE
8292     if (yymsg != yymsgbuf)
8293     YYSTACK_FREE (yymsg);
8294     #endif
8295     /* Make sure YYID is used. */
8296     return YYID (yyresult);
8297     }
8298    
8299    
8300    

Properties

Name Value
svn:eol-style native