ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1526
Committed: Mon Sep 10 18:06:06 2012 UTC (11 years, 7 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 223503 byte(s)
Log Message:
- fixed minor compile warnings

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

Properties

Name Value
svn:eol-style native