ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1592
Committed: Sat Oct 27 21:02:32 2012 UTC (12 years, 10 months ago) by michael
Content type: text/x-csrc
File size: 221122 byte(s)
Log Message:
- Second time's the charm? Moving svnroot/ircd-hybrid-8 to
  svnroot/ircd-hybrid/trunk

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

Properties

Name Value
svn:eol-style native