ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1547
Committed: Sun Sep 30 17:50:03 2012 UTC (12 years, 10 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-8/src/conf_parser.c
File size: 222868 byte(s)
Log Message:
- Removed general::use_whois_actually configuration directive. This is
  now enabled by default

File Contents

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

Properties

Name Value
svn:eol-style native