ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1498
Committed: Sun Aug 12 17:30:53 2012 UTC (11 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 224830 byte(s)
Log Message:
- bison 2.6.2

File Contents

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

Properties

Name Value
svn:eol-style native