ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/branches/8.1.x/src/conf_parser.c
Revision: 1619
Committed: Wed Oct 31 19:21:26 2012 UTC (12 years, 9 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid/trunk/src/conf_parser.c
File size: 221545 byte(s)
Log Message:
- bison 2.6.3

File Contents

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

Properties

Name Value
svn:eol-style native