ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.1.x/src/conf_parser.c
Revision: 1519
Committed: Wed Sep 5 12:02:04 2012 UTC (12 years, 11 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 224454 byte(s)
Log Message:
- Topics as well as user-aways are now sent in a burst by default

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

Properties

Name Value
svn:eol-style native