2009-03-11 07:53:47 -04:00
|
|
|
#ifndef lint
|
|
|
|
|
static const char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
|
2007-10-18 18:49:08 -04:00
|
|
|
#endif
|
|
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <string.h>
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
#define YYBYACC 1
|
|
|
|
|
#define YYMAJOR 1
|
|
|
|
|
#define YYMINOR 9
|
|
|
|
|
#define YYPATCH 20070509
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
#define YYEMPTY (-1)
|
|
|
|
|
#define yyclearin (yychar = YYEMPTY)
|
|
|
|
|
#define yyerrok (yyerrflag = 0)
|
|
|
|
|
#define YYRECOVERING (yyerrflag != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
extern int yyparse(void);
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
static int yygrowstack(void);
|
|
|
|
|
#define YYPREFIX "yy"
|
|
|
|
|
#line 39 "util/configparser.y"
|
2007-10-18 18:49:08 -04:00
|
|
|
#include "config.h"
|
|
|
|
|
|
|
|
|
|
#include <stdarg.h>
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <assert.h>
|
|
|
|
|
|
|
|
|
|
#include "util/configyyrename.h"
|
|
|
|
|
#include "util/config_file.h"
|
|
|
|
|
#include "util/net_help.h"
|
|
|
|
|
|
|
|
|
|
int ub_c_lex(void);
|
|
|
|
|
void ub_c_error(const char *message);
|
|
|
|
|
|
|
|
|
|
/* these need to be global, otherwise they cannot be used inside yacc */
|
|
|
|
|
extern struct config_parser_state* cfg_parser;
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
#define OUTYY(s) printf s /* used ONLY when debugging */
|
|
|
|
|
#else
|
|
|
|
|
#define OUTYY(s)
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#line 64 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
typedef union {
|
2007-10-18 18:49:08 -04:00
|
|
|
char* str;
|
2009-03-11 07:53:47 -04:00
|
|
|
} YYSTYPE;
|
|
|
|
|
#line 52 "util/configparser.c"
|
|
|
|
|
#define SPACE 257
|
|
|
|
|
#define LETTER 258
|
|
|
|
|
#define NEWLINE 259
|
|
|
|
|
#define COMMENT 260
|
|
|
|
|
#define COLON 261
|
|
|
|
|
#define ANY 262
|
|
|
|
|
#define ZONESTR 263
|
|
|
|
|
#define STRING 264
|
|
|
|
|
#define VAR_SERVER 265
|
|
|
|
|
#define VAR_VERBOSITY 266
|
|
|
|
|
#define VAR_NUM_THREADS 267
|
|
|
|
|
#define VAR_PORT 268
|
|
|
|
|
#define VAR_OUTGOING_RANGE 269
|
|
|
|
|
#define VAR_INTERFACE 270
|
|
|
|
|
#define VAR_DO_IP4 271
|
|
|
|
|
#define VAR_DO_IP6 272
|
|
|
|
|
#define VAR_DO_UDP 273
|
|
|
|
|
#define VAR_DO_TCP 274
|
|
|
|
|
#define VAR_CHROOT 275
|
|
|
|
|
#define VAR_USERNAME 276
|
|
|
|
|
#define VAR_DIRECTORY 277
|
|
|
|
|
#define VAR_LOGFILE 278
|
|
|
|
|
#define VAR_PIDFILE 279
|
|
|
|
|
#define VAR_MSG_CACHE_SIZE 280
|
|
|
|
|
#define VAR_MSG_CACHE_SLABS 281
|
|
|
|
|
#define VAR_NUM_QUERIES_PER_THREAD 282
|
|
|
|
|
#define VAR_RRSET_CACHE_SIZE 283
|
|
|
|
|
#define VAR_RRSET_CACHE_SLABS 284
|
|
|
|
|
#define VAR_OUTGOING_NUM_TCP 285
|
|
|
|
|
#define VAR_INFRA_HOST_TTL 286
|
|
|
|
|
#define VAR_INFRA_LAME_TTL 287
|
|
|
|
|
#define VAR_INFRA_CACHE_SLABS 288
|
|
|
|
|
#define VAR_INFRA_CACHE_NUMHOSTS 289
|
|
|
|
|
#define VAR_INFRA_CACHE_LAME_SIZE 290
|
|
|
|
|
#define VAR_NAME 291
|
|
|
|
|
#define VAR_STUB_ZONE 292
|
|
|
|
|
#define VAR_STUB_HOST 293
|
|
|
|
|
#define VAR_STUB_ADDR 294
|
|
|
|
|
#define VAR_TARGET_FETCH_POLICY 295
|
|
|
|
|
#define VAR_HARDEN_SHORT_BUFSIZE 296
|
|
|
|
|
#define VAR_HARDEN_LARGE_QUERIES 297
|
|
|
|
|
#define VAR_FORWARD_ZONE 298
|
|
|
|
|
#define VAR_FORWARD_HOST 299
|
|
|
|
|
#define VAR_FORWARD_ADDR 300
|
|
|
|
|
#define VAR_DO_NOT_QUERY_ADDRESS 301
|
|
|
|
|
#define VAR_HIDE_IDENTITY 302
|
|
|
|
|
#define VAR_HIDE_VERSION 303
|
|
|
|
|
#define VAR_IDENTITY 304
|
|
|
|
|
#define VAR_VERSION 305
|
|
|
|
|
#define VAR_HARDEN_GLUE 306
|
|
|
|
|
#define VAR_MODULE_CONF 307
|
|
|
|
|
#define VAR_TRUST_ANCHOR_FILE 308
|
|
|
|
|
#define VAR_TRUST_ANCHOR 309
|
|
|
|
|
#define VAR_VAL_OVERRIDE_DATE 310
|
|
|
|
|
#define VAR_BOGUS_TTL 311
|
|
|
|
|
#define VAR_VAL_CLEAN_ADDITIONAL 312
|
|
|
|
|
#define VAR_VAL_PERMISSIVE_MODE 313
|
|
|
|
|
#define VAR_INCOMING_NUM_TCP 314
|
|
|
|
|
#define VAR_MSG_BUFFER_SIZE 315
|
|
|
|
|
#define VAR_KEY_CACHE_SIZE 316
|
|
|
|
|
#define VAR_KEY_CACHE_SLABS 317
|
|
|
|
|
#define VAR_TRUSTED_KEYS_FILE 318
|
|
|
|
|
#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 319
|
|
|
|
|
#define VAR_USE_SYSLOG 320
|
|
|
|
|
#define VAR_OUTGOING_INTERFACE 321
|
|
|
|
|
#define VAR_ROOT_HINTS 322
|
|
|
|
|
#define VAR_DO_NOT_QUERY_LOCALHOST 323
|
|
|
|
|
#define VAR_CACHE_MAX_TTL 324
|
|
|
|
|
#define VAR_HARDEN_DNNSEC_STRIPPED 325
|
|
|
|
|
#define VAR_ACCESS_CONTROL 326
|
|
|
|
|
#define VAR_LOCAL_ZONE 327
|
|
|
|
|
#define VAR_LOCAL_DATA 328
|
|
|
|
|
#define VAR_INTERFACE_AUTOMATIC 329
|
|
|
|
|
#define VAR_STATISTICS_INTERVAL 330
|
|
|
|
|
#define VAR_DO_DAEMONIZE 331
|
|
|
|
|
#define VAR_USE_CAPS_FOR_ID 332
|
|
|
|
|
#define VAR_STATISTICS_CUMULATIVE 333
|
|
|
|
|
#define VAR_OUTGOING_PORT_PERMIT 334
|
|
|
|
|
#define VAR_OUTGOING_PORT_AVOID 335
|
|
|
|
|
#define VAR_DLV_ANCHOR_FILE 336
|
|
|
|
|
#define VAR_DLV_ANCHOR 337
|
|
|
|
|
#define VAR_NEG_CACHE_SIZE 338
|
|
|
|
|
#define VAR_HARDEN_REFERRAL_PATH 339
|
|
|
|
|
#define VAR_PRIVATE_ADDRESS 340
|
|
|
|
|
#define VAR_PRIVATE_DOMAIN 341
|
|
|
|
|
#define VAR_REMOTE_CONTROL 342
|
|
|
|
|
#define VAR_CONTROL_ENABLE 343
|
|
|
|
|
#define VAR_CONTROL_INTERFACE 344
|
|
|
|
|
#define VAR_CONTROL_PORT 345
|
|
|
|
|
#define VAR_SERVER_KEY_FILE 346
|
|
|
|
|
#define VAR_SERVER_CERT_FILE 347
|
|
|
|
|
#define VAR_CONTROL_KEY_FILE 348
|
|
|
|
|
#define VAR_CONTROL_CERT_FILE 349
|
|
|
|
|
#define VAR_EXTENDED_STATISTICS 350
|
|
|
|
|
#define VAR_LOCAL_DATA_PTR 351
|
|
|
|
|
#define VAR_JOSTLE_TIMEOUT 352
|
|
|
|
|
#define VAR_STUB_PRIME 353
|
|
|
|
|
#define VAR_UNWANTED_REPLY_THRESHOLD 354
|
|
|
|
|
#define VAR_LOG_TIME_ASCII 355
|
|
|
|
|
#define YYERRCODE 256
|
|
|
|
|
short yylhs[] = { -1,
|
|
|
|
|
0, 0, 1, 1, 1, 1, 2, 3, 3, 10,
|
|
|
|
|
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
|
|
|
|
|
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
|
|
|
|
|
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
|
|
|
|
|
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
|
|
|
|
|
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
|
|
|
|
|
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
|
|
|
|
|
10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
|
|
|
|
|
10, 10, 10, 4, 5, 5, 85, 85, 85, 85,
|
|
|
|
|
6, 7, 7, 90, 90, 90, 11, 12, 68, 71,
|
|
|
|
|
80, 13, 19, 59, 14, 72, 73, 30, 52, 67,
|
|
|
|
|
15, 16, 17, 18, 69, 58, 84, 20, 21, 22,
|
|
|
|
|
23, 24, 60, 74, 75, 46, 56, 47, 40, 41,
|
|
|
|
|
42, 43, 53, 25, 26, 27, 82, 28, 29, 31,
|
|
|
|
|
32, 34, 35, 33, 36, 37, 38, 44, 63, 77,
|
|
|
|
|
70, 78, 79, 83, 39, 61, 64, 45, 48, 62,
|
|
|
|
|
49, 50, 51, 57, 54, 55, 76, 65, 66, 81,
|
|
|
|
|
86, 87, 88, 89, 91, 92, 93, 8, 9, 9,
|
|
|
|
|
94, 94, 94, 94, 94, 94, 94, 95, 97, 96,
|
|
|
|
|
98, 99, 100, 101,
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
short yylen[] = { 2,
|
|
|
|
|
0, 2, 2, 2, 2, 2, 1, 2, 0, 1,
|
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
|
|
|
|
1, 1, 1, 1, 2, 0, 1, 1, 1, 1,
|
|
|
|
|
1, 2, 0, 1, 1, 1, 2, 2, 2, 2,
|
|
|
|
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
|
|
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
|
|
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
|
|
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
|
|
|
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
|
|
|
|
2, 2, 2, 2, 2, 2, 3, 2, 2, 2,
|
|
|
|
|
2, 2, 2, 2, 2, 2, 2, 3, 2, 2,
|
|
|
|
|
2, 2, 2, 2, 2, 2, 2, 1, 2, 0,
|
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
|
|
|
|
|
2, 2, 2, 2,
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
short yydefred[] = { 1,
|
|
|
|
|
0, 7, 84, 91, 178, 2, 9, 86, 93, 180,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 8, 10,
|
|
|
|
|
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
|
|
|
|
|
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
|
|
|
|
|
31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
|
|
|
|
|
41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
|
|
|
|
|
51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
|
|
|
|
|
61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
|
|
|
|
|
71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
|
|
|
|
|
81, 82, 83, 0, 0, 0, 0, 85, 87, 88,
|
|
|
|
|
89, 90, 0, 0, 0, 92, 94, 95, 96, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 179, 181, 182, 183,
|
|
|
|
|
184, 185, 186, 187, 98, 97, 102, 105, 103, 111,
|
|
|
|
|
112, 113, 114, 118, 119, 120, 121, 122, 134, 135,
|
|
|
|
|
136, 138, 139, 108, 140, 141, 144, 142, 143, 145,
|
|
|
|
|
146, 147, 155, 129, 130, 131, 132, 148, 158, 126,
|
|
|
|
|
128, 159, 161, 162, 163, 109, 133, 165, 166, 127,
|
|
|
|
|
164, 116, 104, 123, 156, 160, 149, 0, 0, 169,
|
|
|
|
|
110, 99, 115, 151, 100, 106, 107, 124, 125, 167,
|
|
|
|
|
150, 152, 153, 101, 170, 137, 154, 117, 171, 172,
|
|
|
|
|
173, 174, 175, 176, 177, 188, 190, 189, 191, 192,
|
|
|
|
|
193, 194, 157, 168,
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
short yydgoto[] = { 1,
|
|
|
|
|
6, 7, 11, 8, 12, 9, 13, 10, 14, 89,
|
|
|
|
|
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
|
|
|
|
|
100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
|
|
|
|
|
110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
|
|
|
|
|
120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
|
|
|
|
|
130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
|
|
|
|
|
140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
|
|
|
|
|
150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
|
|
|
|
|
160, 161, 162, 163, 168, 169, 170, 171, 172, 176,
|
|
|
|
|
177, 178, 179, 187, 188, 189, 190, 191, 192, 193,
|
|
|
|
|
194,
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
short yysindex[] = { 0,
|
|
|
|
|
-184, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
-261, -209, -204, -246, -264, -234, -233, -232, -231, -227,
|
|
|
|
|
-226, -225, -181, -178, -176, -172, -160, -159, -158, -157,
|
|
|
|
|
-155, -154, -153, -152, -151, -149, -148, -147, -146, -145,
|
|
|
|
|
-144, -143, -142, -141, -140, -139, -138, -137, -136, -135,
|
|
|
|
|
-134, -133, -132, -131, -130, -129, -128, -127, -126, -125,
|
|
|
|
|
-124, -123, -122, -121, -119, -118, -117, -116, -115, -114,
|
|
|
|
|
-113, -112, -111, -110, -109, -108, -107, -105, -104, -103,
|
|
|
|
|
-102, -101, -100, -99, -98, -97, -96, -95, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, -94, -93, -92, -91, 0, 0, 0,
|
|
|
|
|
0, 0, -90, -89, -88, 0, 0, 0, 0, -87,
|
|
|
|
|
-86, -85, -84, -83, -82, -81, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, -80, -79, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0,
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
short yyrindex[] = { 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
1, 2, 3, 4, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0,
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
short yygindex[] = { 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0,
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
#define YYTABLESIZE 346
|
|
|
|
|
short yytable[] = { 195,
|
|
|
|
|
3, 4, 5, 6, 15, 16, 17, 18, 19, 20,
|
|
|
|
|
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
|
|
|
|
|
31, 32, 33, 34, 35, 36, 37, 38, 39, 196,
|
|
|
|
|
197, 198, 199, 40, 41, 42, 200, 201, 202, 43,
|
|
|
|
|
44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
|
|
|
|
|
54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
|
|
|
64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
|
|
|
|
|
74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
|
|
|
|
|
2, 164, 203, 165, 166, 204, 173, 205, 84, 85,
|
|
|
|
|
86, 206, 87, 88, 174, 175, 180, 181, 182, 183,
|
|
|
|
|
184, 185, 186, 207, 208, 209, 210, 3, 211, 212,
|
|
|
|
|
213, 214, 215, 4, 216, 217, 218, 219, 220, 221,
|
|
|
|
|
222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
|
|
|
|
|
232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
|
|
|
|
|
242, 243, 244, 167, 245, 246, 247, 248, 249, 250,
|
|
|
|
|
251, 252, 253, 254, 255, 256, 257, 5, 258, 259,
|
|
|
|
|
260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
|
|
|
|
|
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
|
|
|
|
|
280, 281, 282, 283, 284, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 3, 4, 5, 6, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 3, 4, 5, 6, 0, 0, 3, 4,
|
|
|
|
|
5, 6, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
|
|
|
|
0, 0, 3, 4, 5, 6,
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
short yycheck[] = { 264,
|
|
|
|
|
0, 0, 0, 0, 266, 267, 268, 269, 270, 271,
|
|
|
|
|
272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
|
|
|
|
|
282, 283, 284, 285, 286, 287, 288, 289, 290, 264,
|
|
|
|
|
264, 264, 264, 295, 296, 297, 264, 264, 264, 301,
|
|
|
|
|
302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
|
|
|
|
|
312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
|
|
|
|
|
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
|
|
|
|
|
332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
|
|
|
|
|
265, 291, 264, 293, 294, 264, 291, 264, 350, 351,
|
|
|
|
|
352, 264, 354, 355, 299, 300, 343, 344, 345, 346,
|
|
|
|
|
347, 348, 349, 264, 264, 264, 264, 292, 264, 264,
|
|
|
|
|
264, 264, 264, 298, 264, 264, 264, 264, 264, 264,
|
|
|
|
|
264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
|
|
|
|
|
264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
|
|
|
|
|
264, 264, 264, 353, 264, 264, 264, 264, 264, 264,
|
|
|
|
|
264, 264, 264, 264, 264, 264, 264, 342, 264, 264,
|
|
|
|
|
264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
|
|
|
|
|
264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
|
|
|
|
|
264, 264, 264, 264, 264, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, 265, 265, 265, 265, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, 292, 292, 292, 292, -1, -1, 298, 298,
|
|
|
|
|
298, 298, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, 342, 342, 342, 342,
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
#define YYFINAL 1
|
|
|
|
|
#ifndef YYDEBUG
|
|
|
|
|
#define YYDEBUG 0
|
|
|
|
|
#endif
|
|
|
|
|
#define YYMAXTOKEN 355
|
|
|
|
|
#if YYDEBUG
|
|
|
|
|
char *yyname[] = {
|
|
|
|
|
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
|
|
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"SPACE","LETTER","NEWLINE",
|
|
|
|
|
"COMMENT","COLON","ANY","ZONESTR","STRING","VAR_SERVER","VAR_VERBOSITY",
|
|
|
|
|
"VAR_NUM_THREADS","VAR_PORT","VAR_OUTGOING_RANGE","VAR_INTERFACE","VAR_DO_IP4",
|
|
|
|
|
"VAR_DO_IP6","VAR_DO_UDP","VAR_DO_TCP","VAR_CHROOT","VAR_USERNAME",
|
|
|
|
|
"VAR_DIRECTORY","VAR_LOGFILE","VAR_PIDFILE","VAR_MSG_CACHE_SIZE",
|
|
|
|
|
"VAR_MSG_CACHE_SLABS","VAR_NUM_QUERIES_PER_THREAD","VAR_RRSET_CACHE_SIZE",
|
|
|
|
|
"VAR_RRSET_CACHE_SLABS","VAR_OUTGOING_NUM_TCP","VAR_INFRA_HOST_TTL",
|
|
|
|
|
"VAR_INFRA_LAME_TTL","VAR_INFRA_CACHE_SLABS","VAR_INFRA_CACHE_NUMHOSTS",
|
|
|
|
|
"VAR_INFRA_CACHE_LAME_SIZE","VAR_NAME","VAR_STUB_ZONE","VAR_STUB_HOST",
|
|
|
|
|
"VAR_STUB_ADDR","VAR_TARGET_FETCH_POLICY","VAR_HARDEN_SHORT_BUFSIZE",
|
|
|
|
|
"VAR_HARDEN_LARGE_QUERIES","VAR_FORWARD_ZONE","VAR_FORWARD_HOST",
|
|
|
|
|
"VAR_FORWARD_ADDR","VAR_DO_NOT_QUERY_ADDRESS","VAR_HIDE_IDENTITY",
|
|
|
|
|
"VAR_HIDE_VERSION","VAR_IDENTITY","VAR_VERSION","VAR_HARDEN_GLUE",
|
|
|
|
|
"VAR_MODULE_CONF","VAR_TRUST_ANCHOR_FILE","VAR_TRUST_ANCHOR",
|
|
|
|
|
"VAR_VAL_OVERRIDE_DATE","VAR_BOGUS_TTL","VAR_VAL_CLEAN_ADDITIONAL",
|
|
|
|
|
"VAR_VAL_PERMISSIVE_MODE","VAR_INCOMING_NUM_TCP","VAR_MSG_BUFFER_SIZE",
|
|
|
|
|
"VAR_KEY_CACHE_SIZE","VAR_KEY_CACHE_SLABS","VAR_TRUSTED_KEYS_FILE",
|
|
|
|
|
"VAR_VAL_NSEC3_KEYSIZE_ITERATIONS","VAR_USE_SYSLOG","VAR_OUTGOING_INTERFACE",
|
|
|
|
|
"VAR_ROOT_HINTS","VAR_DO_NOT_QUERY_LOCALHOST","VAR_CACHE_MAX_TTL",
|
|
|
|
|
"VAR_HARDEN_DNNSEC_STRIPPED","VAR_ACCESS_CONTROL","VAR_LOCAL_ZONE",
|
|
|
|
|
"VAR_LOCAL_DATA","VAR_INTERFACE_AUTOMATIC","VAR_STATISTICS_INTERVAL",
|
|
|
|
|
"VAR_DO_DAEMONIZE","VAR_USE_CAPS_FOR_ID","VAR_STATISTICS_CUMULATIVE",
|
|
|
|
|
"VAR_OUTGOING_PORT_PERMIT","VAR_OUTGOING_PORT_AVOID","VAR_DLV_ANCHOR_FILE",
|
|
|
|
|
"VAR_DLV_ANCHOR","VAR_NEG_CACHE_SIZE","VAR_HARDEN_REFERRAL_PATH",
|
|
|
|
|
"VAR_PRIVATE_ADDRESS","VAR_PRIVATE_DOMAIN","VAR_REMOTE_CONTROL",
|
|
|
|
|
"VAR_CONTROL_ENABLE","VAR_CONTROL_INTERFACE","VAR_CONTROL_PORT",
|
|
|
|
|
"VAR_SERVER_KEY_FILE","VAR_SERVER_CERT_FILE","VAR_CONTROL_KEY_FILE",
|
|
|
|
|
"VAR_CONTROL_CERT_FILE","VAR_EXTENDED_STATISTICS","VAR_LOCAL_DATA_PTR",
|
|
|
|
|
"VAR_JOSTLE_TIMEOUT","VAR_STUB_PRIME","VAR_UNWANTED_REPLY_THRESHOLD",
|
|
|
|
|
"VAR_LOG_TIME_ASCII",
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
2009-03-11 07:53:47 -04:00
|
|
|
char *yyrule[] = {
|
|
|
|
|
"$accept : toplevelvars",
|
|
|
|
|
"toplevelvars :",
|
|
|
|
|
"toplevelvars : toplevelvars toplevelvar",
|
|
|
|
|
"toplevelvar : serverstart contents_server",
|
|
|
|
|
"toplevelvar : stubstart contents_stub",
|
|
|
|
|
"toplevelvar : forwardstart contents_forward",
|
|
|
|
|
"toplevelvar : rcstart contents_rc",
|
|
|
|
|
"serverstart : VAR_SERVER",
|
|
|
|
|
"contents_server : contents_server content_server",
|
|
|
|
|
"contents_server :",
|
|
|
|
|
"content_server : server_num_threads",
|
|
|
|
|
"content_server : server_verbosity",
|
|
|
|
|
"content_server : server_port",
|
|
|
|
|
"content_server : server_outgoing_range",
|
|
|
|
|
"content_server : server_do_ip4",
|
|
|
|
|
"content_server : server_do_ip6",
|
|
|
|
|
"content_server : server_do_udp",
|
|
|
|
|
"content_server : server_do_tcp",
|
|
|
|
|
"content_server : server_interface",
|
|
|
|
|
"content_server : server_chroot",
|
|
|
|
|
"content_server : server_username",
|
|
|
|
|
"content_server : server_directory",
|
|
|
|
|
"content_server : server_logfile",
|
|
|
|
|
"content_server : server_pidfile",
|
|
|
|
|
"content_server : server_msg_cache_size",
|
|
|
|
|
"content_server : server_msg_cache_slabs",
|
|
|
|
|
"content_server : server_num_queries_per_thread",
|
|
|
|
|
"content_server : server_rrset_cache_size",
|
|
|
|
|
"content_server : server_rrset_cache_slabs",
|
|
|
|
|
"content_server : server_outgoing_num_tcp",
|
|
|
|
|
"content_server : server_infra_host_ttl",
|
|
|
|
|
"content_server : server_infra_lame_ttl",
|
|
|
|
|
"content_server : server_infra_cache_slabs",
|
|
|
|
|
"content_server : server_infra_cache_numhosts",
|
|
|
|
|
"content_server : server_infra_cache_lame_size",
|
|
|
|
|
"content_server : server_target_fetch_policy",
|
|
|
|
|
"content_server : server_harden_short_bufsize",
|
|
|
|
|
"content_server : server_harden_large_queries",
|
|
|
|
|
"content_server : server_do_not_query_address",
|
|
|
|
|
"content_server : server_hide_identity",
|
|
|
|
|
"content_server : server_hide_version",
|
|
|
|
|
"content_server : server_identity",
|
|
|
|
|
"content_server : server_version",
|
|
|
|
|
"content_server : server_harden_glue",
|
|
|
|
|
"content_server : server_module_conf",
|
|
|
|
|
"content_server : server_trust_anchor_file",
|
|
|
|
|
"content_server : server_trust_anchor",
|
|
|
|
|
"content_server : server_val_override_date",
|
|
|
|
|
"content_server : server_bogus_ttl",
|
|
|
|
|
"content_server : server_val_clean_additional",
|
|
|
|
|
"content_server : server_val_permissive_mode",
|
|
|
|
|
"content_server : server_incoming_num_tcp",
|
|
|
|
|
"content_server : server_msg_buffer_size",
|
|
|
|
|
"content_server : server_key_cache_size",
|
|
|
|
|
"content_server : server_key_cache_slabs",
|
|
|
|
|
"content_server : server_trusted_keys_file",
|
|
|
|
|
"content_server : server_val_nsec3_keysize_iterations",
|
|
|
|
|
"content_server : server_use_syslog",
|
|
|
|
|
"content_server : server_outgoing_interface",
|
|
|
|
|
"content_server : server_root_hints",
|
|
|
|
|
"content_server : server_do_not_query_localhost",
|
|
|
|
|
"content_server : server_cache_max_ttl",
|
|
|
|
|
"content_server : server_harden_dnssec_stripped",
|
|
|
|
|
"content_server : server_access_control",
|
|
|
|
|
"content_server : server_local_zone",
|
|
|
|
|
"content_server : server_local_data",
|
|
|
|
|
"content_server : server_interface_automatic",
|
|
|
|
|
"content_server : server_statistics_interval",
|
|
|
|
|
"content_server : server_do_daemonize",
|
|
|
|
|
"content_server : server_use_caps_for_id",
|
|
|
|
|
"content_server : server_statistics_cumulative",
|
|
|
|
|
"content_server : server_outgoing_port_permit",
|
|
|
|
|
"content_server : server_outgoing_port_avoid",
|
|
|
|
|
"content_server : server_dlv_anchor_file",
|
|
|
|
|
"content_server : server_dlv_anchor",
|
|
|
|
|
"content_server : server_neg_cache_size",
|
|
|
|
|
"content_server : server_harden_referral_path",
|
|
|
|
|
"content_server : server_private_address",
|
|
|
|
|
"content_server : server_private_domain",
|
|
|
|
|
"content_server : server_extended_statistics",
|
|
|
|
|
"content_server : server_local_data_ptr",
|
|
|
|
|
"content_server : server_jostle_timeout",
|
|
|
|
|
"content_server : server_unwanted_reply_threshold",
|
|
|
|
|
"content_server : server_log_time_ascii",
|
|
|
|
|
"stubstart : VAR_STUB_ZONE",
|
|
|
|
|
"contents_stub : contents_stub content_stub",
|
|
|
|
|
"contents_stub :",
|
|
|
|
|
"content_stub : stub_name",
|
|
|
|
|
"content_stub : stub_host",
|
|
|
|
|
"content_stub : stub_addr",
|
|
|
|
|
"content_stub : stub_prime",
|
|
|
|
|
"forwardstart : VAR_FORWARD_ZONE",
|
|
|
|
|
"contents_forward : contents_forward content_forward",
|
|
|
|
|
"contents_forward :",
|
|
|
|
|
"content_forward : forward_name",
|
|
|
|
|
"content_forward : forward_host",
|
|
|
|
|
"content_forward : forward_addr",
|
|
|
|
|
"server_num_threads : VAR_NUM_THREADS STRING",
|
|
|
|
|
"server_verbosity : VAR_VERBOSITY STRING",
|
|
|
|
|
"server_statistics_interval : VAR_STATISTICS_INTERVAL STRING",
|
|
|
|
|
"server_statistics_cumulative : VAR_STATISTICS_CUMULATIVE STRING",
|
|
|
|
|
"server_extended_statistics : VAR_EXTENDED_STATISTICS STRING",
|
|
|
|
|
"server_port : VAR_PORT STRING",
|
|
|
|
|
"server_interface : VAR_INTERFACE STRING",
|
|
|
|
|
"server_outgoing_interface : VAR_OUTGOING_INTERFACE STRING",
|
|
|
|
|
"server_outgoing_range : VAR_OUTGOING_RANGE STRING",
|
|
|
|
|
"server_outgoing_port_permit : VAR_OUTGOING_PORT_PERMIT STRING",
|
|
|
|
|
"server_outgoing_port_avoid : VAR_OUTGOING_PORT_AVOID STRING",
|
|
|
|
|
"server_outgoing_num_tcp : VAR_OUTGOING_NUM_TCP STRING",
|
|
|
|
|
"server_incoming_num_tcp : VAR_INCOMING_NUM_TCP STRING",
|
|
|
|
|
"server_interface_automatic : VAR_INTERFACE_AUTOMATIC STRING",
|
|
|
|
|
"server_do_ip4 : VAR_DO_IP4 STRING",
|
|
|
|
|
"server_do_ip6 : VAR_DO_IP6 STRING",
|
|
|
|
|
"server_do_udp : VAR_DO_UDP STRING",
|
|
|
|
|
"server_do_tcp : VAR_DO_TCP STRING",
|
|
|
|
|
"server_do_daemonize : VAR_DO_DAEMONIZE STRING",
|
|
|
|
|
"server_use_syslog : VAR_USE_SYSLOG STRING",
|
|
|
|
|
"server_log_time_ascii : VAR_LOG_TIME_ASCII STRING",
|
|
|
|
|
"server_chroot : VAR_CHROOT STRING",
|
|
|
|
|
"server_username : VAR_USERNAME STRING",
|
|
|
|
|
"server_directory : VAR_DIRECTORY STRING",
|
|
|
|
|
"server_logfile : VAR_LOGFILE STRING",
|
|
|
|
|
"server_pidfile : VAR_PIDFILE STRING",
|
|
|
|
|
"server_root_hints : VAR_ROOT_HINTS STRING",
|
|
|
|
|
"server_dlv_anchor_file : VAR_DLV_ANCHOR_FILE STRING",
|
|
|
|
|
"server_dlv_anchor : VAR_DLV_ANCHOR STRING",
|
|
|
|
|
"server_trust_anchor_file : VAR_TRUST_ANCHOR_FILE STRING",
|
|
|
|
|
"server_trusted_keys_file : VAR_TRUSTED_KEYS_FILE STRING",
|
|
|
|
|
"server_trust_anchor : VAR_TRUST_ANCHOR STRING",
|
|
|
|
|
"server_hide_identity : VAR_HIDE_IDENTITY STRING",
|
|
|
|
|
"server_hide_version : VAR_HIDE_VERSION STRING",
|
|
|
|
|
"server_identity : VAR_IDENTITY STRING",
|
|
|
|
|
"server_version : VAR_VERSION STRING",
|
|
|
|
|
"server_msg_buffer_size : VAR_MSG_BUFFER_SIZE STRING",
|
|
|
|
|
"server_msg_cache_size : VAR_MSG_CACHE_SIZE STRING",
|
|
|
|
|
"server_msg_cache_slabs : VAR_MSG_CACHE_SLABS STRING",
|
|
|
|
|
"server_num_queries_per_thread : VAR_NUM_QUERIES_PER_THREAD STRING",
|
|
|
|
|
"server_jostle_timeout : VAR_JOSTLE_TIMEOUT STRING",
|
|
|
|
|
"server_rrset_cache_size : VAR_RRSET_CACHE_SIZE STRING",
|
|
|
|
|
"server_rrset_cache_slabs : VAR_RRSET_CACHE_SLABS STRING",
|
|
|
|
|
"server_infra_host_ttl : VAR_INFRA_HOST_TTL STRING",
|
|
|
|
|
"server_infra_lame_ttl : VAR_INFRA_LAME_TTL STRING",
|
|
|
|
|
"server_infra_cache_numhosts : VAR_INFRA_CACHE_NUMHOSTS STRING",
|
|
|
|
|
"server_infra_cache_lame_size : VAR_INFRA_CACHE_LAME_SIZE STRING",
|
|
|
|
|
"server_infra_cache_slabs : VAR_INFRA_CACHE_SLABS STRING",
|
|
|
|
|
"server_target_fetch_policy : VAR_TARGET_FETCH_POLICY STRING",
|
|
|
|
|
"server_harden_short_bufsize : VAR_HARDEN_SHORT_BUFSIZE STRING",
|
|
|
|
|
"server_harden_large_queries : VAR_HARDEN_LARGE_QUERIES STRING",
|
|
|
|
|
"server_harden_glue : VAR_HARDEN_GLUE STRING",
|
|
|
|
|
"server_harden_dnssec_stripped : VAR_HARDEN_DNNSEC_STRIPPED STRING",
|
|
|
|
|
"server_harden_referral_path : VAR_HARDEN_REFERRAL_PATH STRING",
|
|
|
|
|
"server_use_caps_for_id : VAR_USE_CAPS_FOR_ID STRING",
|
|
|
|
|
"server_private_address : VAR_PRIVATE_ADDRESS STRING",
|
|
|
|
|
"server_private_domain : VAR_PRIVATE_DOMAIN STRING",
|
|
|
|
|
"server_unwanted_reply_threshold : VAR_UNWANTED_REPLY_THRESHOLD STRING",
|
|
|
|
|
"server_do_not_query_address : VAR_DO_NOT_QUERY_ADDRESS STRING",
|
|
|
|
|
"server_do_not_query_localhost : VAR_DO_NOT_QUERY_LOCALHOST STRING",
|
|
|
|
|
"server_access_control : VAR_ACCESS_CONTROL STRING STRING",
|
|
|
|
|
"server_module_conf : VAR_MODULE_CONF STRING",
|
|
|
|
|
"server_val_override_date : VAR_VAL_OVERRIDE_DATE STRING",
|
|
|
|
|
"server_cache_max_ttl : VAR_CACHE_MAX_TTL STRING",
|
|
|
|
|
"server_bogus_ttl : VAR_BOGUS_TTL STRING",
|
|
|
|
|
"server_val_clean_additional : VAR_VAL_CLEAN_ADDITIONAL STRING",
|
|
|
|
|
"server_val_permissive_mode : VAR_VAL_PERMISSIVE_MODE STRING",
|
|
|
|
|
"server_val_nsec3_keysize_iterations : VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING",
|
|
|
|
|
"server_key_cache_size : VAR_KEY_CACHE_SIZE STRING",
|
|
|
|
|
"server_key_cache_slabs : VAR_KEY_CACHE_SLABS STRING",
|
|
|
|
|
"server_neg_cache_size : VAR_NEG_CACHE_SIZE STRING",
|
|
|
|
|
"server_local_zone : VAR_LOCAL_ZONE STRING STRING",
|
|
|
|
|
"server_local_data : VAR_LOCAL_DATA STRING",
|
|
|
|
|
"server_local_data_ptr : VAR_LOCAL_DATA_PTR STRING",
|
|
|
|
|
"stub_name : VAR_NAME STRING",
|
|
|
|
|
"stub_host : VAR_STUB_HOST STRING",
|
|
|
|
|
"stub_addr : VAR_STUB_ADDR STRING",
|
|
|
|
|
"stub_prime : VAR_STUB_PRIME STRING",
|
|
|
|
|
"forward_name : VAR_NAME STRING",
|
|
|
|
|
"forward_host : VAR_FORWARD_HOST STRING",
|
|
|
|
|
"forward_addr : VAR_FORWARD_ADDR STRING",
|
|
|
|
|
"rcstart : VAR_REMOTE_CONTROL",
|
|
|
|
|
"contents_rc : contents_rc content_rc",
|
|
|
|
|
"contents_rc :",
|
|
|
|
|
"content_rc : rc_control_enable",
|
|
|
|
|
"content_rc : rc_control_interface",
|
|
|
|
|
"content_rc : rc_control_port",
|
|
|
|
|
"content_rc : rc_server_key_file",
|
|
|
|
|
"content_rc : rc_server_cert_file",
|
|
|
|
|
"content_rc : rc_control_key_file",
|
|
|
|
|
"content_rc : rc_control_cert_file",
|
|
|
|
|
"rc_control_enable : VAR_CONTROL_ENABLE STRING",
|
|
|
|
|
"rc_control_port : VAR_CONTROL_PORT STRING",
|
|
|
|
|
"rc_control_interface : VAR_CONTROL_INTERFACE STRING",
|
|
|
|
|
"rc_server_key_file : VAR_SERVER_KEY_FILE STRING",
|
|
|
|
|
"rc_server_cert_file : VAR_SERVER_CERT_FILE STRING",
|
|
|
|
|
"rc_control_key_file : VAR_CONTROL_KEY_FILE STRING",
|
|
|
|
|
"rc_control_cert_file : VAR_CONTROL_CERT_FILE STRING",
|
2007-10-18 18:49:08 -04:00
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
#if YYDEBUG
|
2009-03-11 07:53:47 -04:00
|
|
|
#include <stdio.h>
|
2008-02-29 05:59:26 -05:00
|
|
|
#endif
|
|
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
/* define the initial stack-sizes */
|
|
|
|
|
#ifdef YYSTACKSIZE
|
|
|
|
|
#undef YYMAXDEPTH
|
|
|
|
|
#define YYMAXDEPTH YYSTACKSIZE
|
2008-02-29 05:59:26 -05:00
|
|
|
#else
|
2009-03-11 07:53:47 -04:00
|
|
|
#ifdef YYMAXDEPTH
|
|
|
|
|
#define YYSTACKSIZE YYMAXDEPTH
|
2008-02-29 05:59:26 -05:00
|
|
|
#else
|
2009-03-11 07:53:47 -04:00
|
|
|
#define YYSTACKSIZE 500
|
|
|
|
|
#define YYMAXDEPTH 500
|
2008-02-29 05:59:26 -05:00
|
|
|
#endif
|
2007-10-18 18:49:08 -04:00
|
|
|
#endif
|
|
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
#define YYINITSTACKSIZE 500
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
int yydebug;
|
|
|
|
|
int yynerrs;
|
|
|
|
|
int yyerrflag;
|
|
|
|
|
int yychar;
|
|
|
|
|
short *yyssp;
|
|
|
|
|
YYSTYPE *yyvsp;
|
|
|
|
|
YYSTYPE yyval;
|
|
|
|
|
YYSTYPE yylval;
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
/* variables for the parser stack */
|
|
|
|
|
static short *yyss;
|
|
|
|
|
static short *yysslim;
|
|
|
|
|
static YYSTYPE *yyvs;
|
|
|
|
|
static int yystacksize;
|
|
|
|
|
#line 998 "util/configparser.y"
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
/* parse helper routines could be here */
|
|
|
|
|
#line 669 "util/configparser.c"
|
|
|
|
|
/* allocate initial stack or double stack size, up to YYMAXDEPTH */
|
|
|
|
|
static int yygrowstack(void)
|
2007-10-18 18:49:08 -04:00
|
|
|
{
|
2009-03-11 07:53:47 -04:00
|
|
|
int newsize, i;
|
|
|
|
|
short *newss;
|
|
|
|
|
YYSTYPE *newvs;
|
|
|
|
|
|
|
|
|
|
if ((newsize = yystacksize) == 0)
|
|
|
|
|
newsize = YYINITSTACKSIZE;
|
|
|
|
|
else if (newsize >= YYMAXDEPTH)
|
|
|
|
|
return -1;
|
|
|
|
|
else if ((newsize *= 2) > YYMAXDEPTH)
|
|
|
|
|
newsize = YYMAXDEPTH;
|
|
|
|
|
|
|
|
|
|
i = yyssp - yyss;
|
|
|
|
|
newss = (yyss != 0)
|
|
|
|
|
? (short *)realloc(yyss, newsize * sizeof(*newss))
|
|
|
|
|
: (short *)malloc(newsize * sizeof(*newss));
|
|
|
|
|
if (newss == 0)
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
yyss = newss;
|
|
|
|
|
yyssp = newss + i;
|
|
|
|
|
newvs = (yyvs != 0)
|
|
|
|
|
? (YYSTYPE *)realloc(yyvs, newsize * sizeof(*newvs))
|
|
|
|
|
: (YYSTYPE *)malloc(newsize * sizeof(*newvs));
|
|
|
|
|
if (newvs == 0)
|
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
yyvs = newvs;
|
|
|
|
|
yyvsp = newvs + i;
|
|
|
|
|
yystacksize = newsize;
|
|
|
|
|
yysslim = yyss + newsize - 1;
|
|
|
|
|
return 0;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
|
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
#define YYABORT goto yyabort
|
|
|
|
|
#define YYREJECT goto yyabort
|
|
|
|
|
#define YYACCEPT goto yyaccept
|
|
|
|
|
#define YYERROR goto yyerrlab
|
|
|
|
|
int
|
|
|
|
|
yyparse(void)
|
2007-10-18 18:49:08 -04:00
|
|
|
{
|
2009-03-11 07:53:47 -04:00
|
|
|
register int yym, yyn, yystate;
|
|
|
|
|
#if YYDEBUG
|
|
|
|
|
register const char *yys;
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
if ((yys = getenv("YYDEBUG")) != 0)
|
2008-02-29 05:59:26 -05:00
|
|
|
{
|
2009-03-11 07:53:47 -04:00
|
|
|
yyn = *yys;
|
|
|
|
|
if (yyn >= '0' && yyn <= '9')
|
|
|
|
|
yydebug = yyn - '0';
|
2008-02-29 05:59:26 -05:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
#endif
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
yynerrs = 0;
|
|
|
|
|
yyerrflag = 0;
|
|
|
|
|
yychar = YYEMPTY;
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
if (yyss == NULL && yygrowstack()) goto yyoverflow;
|
|
|
|
|
yyssp = yyss;
|
|
|
|
|
yyvsp = yyvs;
|
|
|
|
|
*yyssp = yystate = 0;
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
yyloop:
|
|
|
|
|
if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
|
|
|
|
|
if (yychar < 0)
|
2008-02-29 05:23:52 -05:00
|
|
|
{
|
2009-03-11 07:53:47 -04:00
|
|
|
if ((yychar = yylex()) < 0) yychar = 0;
|
|
|
|
|
#if YYDEBUG
|
|
|
|
|
if (yydebug)
|
|
|
|
|
{
|
|
|
|
|
yys = 0;
|
|
|
|
|
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
|
|
|
|
|
if (!yys) yys = "illegal-symbol";
|
|
|
|
|
printf("%sdebug: state %d, reading %d (%s)\n",
|
|
|
|
|
YYPREFIX, yystate, yychar, yys);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
2008-02-29 05:23:52 -05:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
|
|
|
|
|
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
|
|
|
|
|
{
|
|
|
|
|
#if YYDEBUG
|
|
|
|
|
if (yydebug)
|
|
|
|
|
printf("%sdebug: state %d, shifting to state %d\n",
|
|
|
|
|
YYPREFIX, yystate, yytable[yyn]);
|
2007-10-18 18:49:08 -04:00
|
|
|
#endif
|
2009-03-11 07:53:47 -04:00
|
|
|
if (yyssp >= yysslim && yygrowstack())
|
|
|
|
|
{
|
|
|
|
|
goto yyoverflow;
|
|
|
|
|
}
|
|
|
|
|
*++yyssp = yystate = yytable[yyn];
|
|
|
|
|
*++yyvsp = yylval;
|
|
|
|
|
yychar = YYEMPTY;
|
|
|
|
|
if (yyerrflag > 0) --yyerrflag;
|
|
|
|
|
goto yyloop;
|
|
|
|
|
}
|
|
|
|
|
if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
|
|
|
|
|
yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
|
2007-10-18 18:49:08 -04:00
|
|
|
{
|
2009-03-11 07:53:47 -04:00
|
|
|
yyn = yytable[yyn];
|
|
|
|
|
goto yyreduce;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
if (yyerrflag) goto yyinrecovery;
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
yyerror("syntax error");
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
#ifdef lint
|
|
|
|
|
goto yyerrlab;
|
2007-10-18 18:49:08 -04:00
|
|
|
#endif
|
|
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
yyerrlab:
|
|
|
|
|
++yynerrs;
|
2008-02-29 05:59:26 -05:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
yyinrecovery:
|
|
|
|
|
if (yyerrflag < 3)
|
|
|
|
|
{
|
|
|
|
|
yyerrflag = 3;
|
|
|
|
|
for (;;)
|
|
|
|
|
{
|
|
|
|
|
if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
|
|
|
|
|
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
|
|
|
|
|
{
|
|
|
|
|
#if YYDEBUG
|
|
|
|
|
if (yydebug)
|
|
|
|
|
printf("%sdebug: state %d, error recovery shifting\
|
|
|
|
|
to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
|
2008-02-29 05:59:26 -05:00
|
|
|
#endif
|
2009-03-11 07:53:47 -04:00
|
|
|
if (yyssp >= yysslim && yygrowstack())
|
|
|
|
|
{
|
|
|
|
|
goto yyoverflow;
|
|
|
|
|
}
|
|
|
|
|
*++yyssp = yystate = yytable[yyn];
|
|
|
|
|
*++yyvsp = yylval;
|
|
|
|
|
goto yyloop;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
#if YYDEBUG
|
|
|
|
|
if (yydebug)
|
|
|
|
|
printf("%sdebug: error recovery discarding state %d\n",
|
|
|
|
|
YYPREFIX, *yyssp);
|
2008-02-29 05:59:26 -05:00
|
|
|
#endif
|
2009-03-11 07:53:47 -04:00
|
|
|
if (yyssp <= yyss) goto yyabort;
|
|
|
|
|
--yyssp;
|
|
|
|
|
--yyvsp;
|
|
|
|
|
}
|
|
|
|
|
}
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
else
|
2007-10-18 18:49:08 -04:00
|
|
|
{
|
2009-03-11 07:53:47 -04:00
|
|
|
if (yychar == 0) goto yyabort;
|
|
|
|
|
#if YYDEBUG
|
|
|
|
|
if (yydebug)
|
|
|
|
|
{
|
|
|
|
|
yys = 0;
|
|
|
|
|
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
|
|
|
|
|
if (!yys) yys = "illegal-symbol";
|
|
|
|
|
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
|
|
|
|
|
YYPREFIX, yystate, yychar, yys);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
yychar = YYEMPTY;
|
|
|
|
|
goto yyloop;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
yyreduce:
|
2009-03-11 07:53:47 -04:00
|
|
|
#if YYDEBUG
|
|
|
|
|
if (yydebug)
|
|
|
|
|
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
|
|
|
|
|
YYPREFIX, yystate, yyn, yyrule[yyn]);
|
|
|
|
|
#endif
|
|
|
|
|
yym = yylen[yyn];
|
|
|
|
|
if (yym)
|
|
|
|
|
yyval = yyvsp[1-yym];
|
|
|
|
|
else
|
|
|
|
|
memset(&yyval, 0, sizeof yyval);
|
|
|
|
|
switch (yyn)
|
|
|
|
|
{
|
|
|
|
|
case 7:
|
2008-10-22 08:01:40 -04:00
|
|
|
#line 109 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
2007-10-18 18:49:08 -04:00
|
|
|
OUTYY(("\nP(server:)\n"));
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 84:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 149 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
2007-10-18 18:49:08 -04:00
|
|
|
struct config_stub* s;
|
|
|
|
|
OUTYY(("\nP(stub_zone:)\n"));
|
|
|
|
|
s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
|
|
|
|
|
if(s) {
|
|
|
|
|
s->next = cfg_parser->cfg->stubs;
|
|
|
|
|
cfg_parser->cfg->stubs = s;
|
|
|
|
|
} else
|
|
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 91:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 165 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
2007-10-18 18:49:08 -04:00
|
|
|
struct config_stub* s;
|
|
|
|
|
OUTYY(("\nP(forward_zone:)\n"));
|
|
|
|
|
s = (struct config_stub*)calloc(1, sizeof(struct config_stub));
|
|
|
|
|
if(s) {
|
|
|
|
|
s->next = cfg_parser->cfg->forwards;
|
|
|
|
|
cfg_parser->cfg->forwards = s;
|
|
|
|
|
} else
|
|
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 97:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 181 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_num_threads:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->num_threads = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 98:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 190 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_verbosity:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->verbosity = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 99:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 199 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_statistics_interval:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "") == 0 || strcmp(yyvsp[0].str, "0") == 0)
|
2008-02-05 05:23:44 -05:00
|
|
|
cfg_parser->cfg->stat_interval = 0;
|
2009-03-11 07:53:47 -04:00
|
|
|
else if(atoi(yyvsp[0].str) == 0)
|
2008-02-05 05:23:44 -05:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->stat_interval = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-02-05 05:23:44 -05:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 100:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 210 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_statistics_cumulative:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2008-04-09 08:29:53 -04:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->stat_cumulative = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-04-09 08:29:53 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 101:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 219 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_extended_statistics:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2008-09-16 05:08:45 -04:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->stat_extended = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-09-16 05:08:45 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 102:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 228 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_port:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("port number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->port = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 103:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 237 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_interface:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
if(cfg_parser->cfg->num_ifs == 0)
|
|
|
|
|
cfg_parser->cfg->ifs = calloc(1, sizeof(char*));
|
|
|
|
|
else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs,
|
|
|
|
|
(cfg_parser->cfg->num_ifs+1)*sizeof(char*));
|
|
|
|
|
if(!cfg_parser->cfg->ifs)
|
|
|
|
|
yyerror("out of memory");
|
|
|
|
|
else
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 104:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 250 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_outgoing_interface:%s)\n", yyvsp[0].str));
|
2007-10-19 04:32:36 -04:00
|
|
|
if(cfg_parser->cfg->num_out_ifs == 0)
|
|
|
|
|
cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*));
|
|
|
|
|
else cfg_parser->cfg->out_ifs = realloc(
|
|
|
|
|
cfg_parser->cfg->out_ifs,
|
|
|
|
|
(cfg_parser->cfg->num_out_ifs+1)*sizeof(char*));
|
|
|
|
|
if(!cfg_parser->cfg->out_ifs)
|
|
|
|
|
yyerror("out of memory");
|
|
|
|
|
else
|
|
|
|
|
cfg_parser->cfg->out_ifs[
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->num_out_ifs++] = yyvsp[0].str;
|
2007-10-19 04:32:36 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 105:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 265 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_outgoing_range:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->outgoing_num_ports = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 106:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 274 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_outgoing_port_permit:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_mark_ports(yyvsp[0].str, 1,
|
2008-04-09 11:07:37 -04:00
|
|
|
cfg_parser->cfg->outgoing_avail_ports, 65536))
|
|
|
|
|
yyerror("port number or range (\"low-high\") expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2008-04-09 11:07:37 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 107:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 283 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_outgoing_port_avoid:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_mark_ports(yyvsp[0].str, 0,
|
2008-04-09 11:07:37 -04:00
|
|
|
cfg_parser->cfg->outgoing_avail_ports, 65536))
|
|
|
|
|
yyerror("port number or range (\"low-high\") expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2008-04-09 11:07:37 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 108:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 292 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_outgoing_num_tcp:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->outgoing_num_tcp = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 109:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 301 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_incoming_num_tcp:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->incoming_num_tcp = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 110:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 310 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_interface_automatic:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2008-01-15 04:45:30 -05:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->if_automatic = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-01-15 04:45:30 -05:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 111:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 319 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_do_ip4:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->do_ip4 = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 112:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 328 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_do_ip6:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->do_ip6 = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 113:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 337 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_do_udp:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->do_udp = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 114:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 346 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_do_tcp:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->do_tcp = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 115:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 355 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_do_daemonize:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2008-02-20 02:26:03 -05:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->do_daemonize = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-02-20 02:26:03 -05:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 116:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 364 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_use_syslog:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->use_syslog = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS)
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("no syslog services are available. "
|
|
|
|
|
"(reconfigure and compile to add)");
|
|
|
|
|
#endif
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 117:
|
2008-10-22 10:36:46 -04:00
|
|
|
#line 378 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_log_time_ascii:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2009-02-06 07:51:45 -05:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->log_time_ascii = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2009-02-06 07:51:45 -05:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 118:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 387 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_chroot:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->chrootdir);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->chrootdir = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 119:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 394 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_username:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->username);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->username = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 120:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 401 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_directory:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->directory);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->directory = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 121:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 408 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_logfile:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->logfile);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->logfile = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
cfg_parser->cfg->use_syslog = 0;
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 122:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 416 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_pidfile:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->pidfile);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->pidfile = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 123:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 423 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_root_hints:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, yyvsp[0].str))
|
2007-10-19 10:02:53 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 124:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 430 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_dlv_anchor_file:%s)\n", yyvsp[0].str));
|
2008-08-13 10:30:35 -04:00
|
|
|
free(cfg_parser->cfg->dlv_anchor_file);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->dlv_anchor_file = yyvsp[0].str;
|
2008-08-13 10:30:35 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 125:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 437 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_dlv_anchor:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, yyvsp[0].str))
|
2008-08-21 10:58:39 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 126:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 444 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_trust_anchor_file:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->
|
2009-03-11 07:53:47 -04:00
|
|
|
trust_anchor_file_list, yyvsp[0].str))
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 127:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 452 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_trusted_keys_file:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->
|
2009-03-11 07:53:47 -04:00
|
|
|
trusted_keys_file_list, yyvsp[0].str))
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 128:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 460 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_trust_anchor:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, yyvsp[0].str))
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 129:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 467 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_hide_identity:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->hide_identity = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 130:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 476 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_hide_version:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->hide_version = (strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 131:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 485 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_identity:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->identity);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->identity = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 132:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 492 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_version:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->version);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->version = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 133:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 499 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_msg_buffer_size:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else if (atoi(yyvsp[0].str) < 4096)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("message buffer size too small (use 4096)");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->msg_buffer_size = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 134:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 510 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_msg_cache_size:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_parse_memsize(yyvsp[0].str, &cfg_parser->cfg->msg_cache_size))
|
2008-01-11 08:20:22 -05:00
|
|
|
yyerror("memory size expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 135:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 518 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_msg_cache_slabs:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
|
|
|
|
else {
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->msg_cache_slabs = atoi(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
if(!is_pow2(cfg_parser->cfg->msg_cache_slabs))
|
|
|
|
|
yyerror("must be a power of 2");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 136:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 531 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_num_queries_per_thread:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->num_queries_per_thread = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 137:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 540 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_jostle_timeout:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2008-10-06 05:28:50 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->jostle_time = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-10-06 05:28:50 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 138:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 549 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_rrset_cache_size:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_parse_memsize(yyvsp[0].str, &cfg_parser->cfg->rrset_cache_size))
|
2008-01-11 08:20:22 -05:00
|
|
|
yyerror("memory size expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 139:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 557 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_rrset_cache_slabs:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
|
|
|
|
else {
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->rrset_cache_slabs = atoi(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs))
|
|
|
|
|
yyerror("must be a power of 2");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 140:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 570 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_infra_host_ttl:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->host_ttl = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 141:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 579 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_infra_lame_ttl:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->lame_ttl = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 142:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 588 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_infra_cache_numhosts:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->infra_cache_numhosts = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 143:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 597 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_infra_cache_lame_size:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_parse_memsize(yyvsp[0].str, &cfg_parser->cfg->
|
2008-01-11 08:20:22 -05:00
|
|
|
infra_cache_lame_size))
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 144:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 606 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_infra_cache_slabs:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
|
|
|
|
else {
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->infra_cache_slabs = atoi(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
if(!is_pow2(cfg_parser->cfg->infra_cache_slabs))
|
|
|
|
|
yyerror("must be a power of 2");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 145:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 619 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_target_fetch_policy:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->target_fetch_policy);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->target_fetch_policy = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 146:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 626 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_harden_short_bufsize:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->harden_short_bufsize =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 147:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 636 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_harden_large_queries:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->harden_large_queries =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 148:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 646 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_harden_glue:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->harden_glue =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 149:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 656 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_harden_dnssec_stripped:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-11-01 11:32:27 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->harden_dnssec_stripped =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-11-01 11:32:27 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 150:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 666 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_harden_referral_path:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2008-08-29 10:46:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->harden_referral_path =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-08-29 10:46:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 151:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 676 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_use_caps_for_id:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2008-02-27 04:39:27 -05:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->use_caps_bits_for_id =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-02-27 04:39:27 -05:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 152:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 686 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_private_address:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, yyvsp[0].str))
|
2008-09-03 10:40:09 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 153:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 693 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_private_domain:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, yyvsp[0].str))
|
2008-09-03 10:40:09 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 154:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 700 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_unwanted_reply_threshold:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2008-10-22 10:36:46 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->unwanted_threshold = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-10-22 10:36:46 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 155:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 709 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_do_not_query_address:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, yyvsp[0].str))
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 156:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 716 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_do_not_query_localhost:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-22 02:25:46 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->donotquery_localhost =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-22 02:25:46 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 157:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 726 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_access_control:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "deny")!=0 && strcmp(yyvsp[0].str, "refuse")!=0 &&
|
|
|
|
|
strcmp(yyvsp[0].str, "allow")!=0 &&
|
|
|
|
|
strcmp(yyvsp[0].str, "allow_snoop")!=0) {
|
2008-09-01 09:48:24 -04:00
|
|
|
yyerror("expected deny, refuse, allow or allow_snoop "
|
|
|
|
|
"in access control action");
|
2007-11-19 10:32:55 -05:00
|
|
|
} else {
|
2009-03-11 07:53:47 -04:00
|
|
|
if(!cfg_str2list_insert(&cfg_parser->cfg->acls, yyvsp[-1].str, yyvsp[0].str))
|
2007-11-20 09:48:33 -05:00
|
|
|
fatal_exit("out of memory adding acl");
|
2007-11-19 10:32:55 -05:00
|
|
|
}
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 158:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 740 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_module_conf:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->module_conf);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->module_conf = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 159:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 747 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_val_override_date:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strlen(yyvsp[0].str) == 0 || strcmp(yyvsp[0].str, "0") == 0) {
|
2007-10-18 18:49:08 -04:00
|
|
|
cfg_parser->cfg->val_date_override = 0;
|
2009-03-11 07:53:47 -04:00
|
|
|
} else if(strlen(yyvsp[0].str) == 14) {
|
2007-10-18 18:49:08 -04:00
|
|
|
cfg_parser->cfg->val_date_override =
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_convert_timeval(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
if(!cfg_parser->cfg->val_date_override)
|
|
|
|
|
yyerror("bad date/time specification");
|
|
|
|
|
} else {
|
2009-03-11 07:53:47 -04:00
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->val_date_override = atoi(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 160:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 765 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_cache_max_ttl:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2007-10-31 03:46:30 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->max_ttl = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-31 03:46:30 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 161:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 774 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_bogus_ttl:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0 && strcmp(yyvsp[0].str, "0") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->bogus_ttl = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 162:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 783 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_val_clean_additional:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->val_clean_additional =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 163:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 793 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_val_permissive_mode:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->val_permissive_mode =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 164:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 803 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->val_nsec3_key_iterations);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->val_nsec3_key_iterations = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 165:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 810 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_key_cache_size:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_parse_memsize(yyvsp[0].str, &cfg_parser->cfg->key_cache_size))
|
2008-01-11 08:20:22 -05:00
|
|
|
yyerror("memory size expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 166:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 818 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_key_cache_slabs:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("number expected");
|
|
|
|
|
else {
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->key_cache_slabs = atoi(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
if(!is_pow2(cfg_parser->cfg->key_cache_slabs))
|
|
|
|
|
yyerror("must be a power of 2");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 167:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 831 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_neg_cache_size:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_parse_memsize(yyvsp[0].str, &cfg_parser->cfg->neg_cache_size))
|
2008-08-27 09:02:22 -04:00
|
|
|
yyerror("memory size expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2008-08-27 09:02:22 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 168:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 839 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_local_zone:%s %s)\n", yyvsp[-1].str, yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "static")!=0 && strcmp(yyvsp[0].str, "deny")!=0 &&
|
|
|
|
|
strcmp(yyvsp[0].str, "refuse")!=0 && strcmp(yyvsp[0].str, "redirect")!=0 &&
|
|
|
|
|
strcmp(yyvsp[0].str, "transparent")!=0 && strcmp(yyvsp[0].str, "nodefault")!=0)
|
2007-11-20 09:48:33 -05:00
|
|
|
yyerror("local-zone type: expected static, deny, "
|
|
|
|
|
"refuse, redirect, transparent or nodefault");
|
2009-03-11 07:53:47 -04:00
|
|
|
else if(strcmp(yyvsp[0].str, "nodefault")==0) {
|
2007-11-20 09:48:33 -05:00
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->
|
2009-03-11 07:53:47 -04:00
|
|
|
local_zones_nodefault, yyvsp[-1].str))
|
2007-11-20 09:48:33 -05:00
|
|
|
fatal_exit("out of memory adding local-zone");
|
2009-03-11 07:53:47 -04:00
|
|
|
free(yyvsp[0].str);
|
2007-11-20 09:48:33 -05:00
|
|
|
} else {
|
|
|
|
|
if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones,
|
2009-03-11 07:53:47 -04:00
|
|
|
yyvsp[-1].str, yyvsp[0].str))
|
2007-11-20 09:48:33 -05:00
|
|
|
fatal_exit("out of memory adding local-zone");
|
|
|
|
|
}
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 169:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 859 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(server_local_data:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, yyvsp[0].str))
|
2007-11-20 09:48:33 -05:00
|
|
|
fatal_exit("out of memory adding local-data");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 170:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 866 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
2008-09-30 11:04:32 -04:00
|
|
|
char* ptr;
|
2009-03-11 07:53:47 -04:00
|
|
|
OUTYY(("P(server_local_data_ptr:%s)\n", yyvsp[0].str));
|
|
|
|
|
ptr = cfg_ptr_reverse(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-09-30 11:04:32 -04:00
|
|
|
if(ptr) {
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->
|
|
|
|
|
local_data, ptr))
|
|
|
|
|
fatal_exit("out of memory adding local-data");
|
|
|
|
|
} else {
|
|
|
|
|
yyerror("local-data-ptr could not be reversed");
|
|
|
|
|
}
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 171:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 881 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(name:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->stubs->name);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->stubs->name = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 172:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 888 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(stub-host:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, yyvsp[0].str))
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 173:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 895 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(stub-addr:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, yyvsp[0].str))
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 174:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 902 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(stub-prime:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2008-10-22 08:01:40 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->stubs->isprime =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-10-22 08:01:40 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 175:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 912 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(name:%s)\n", yyvsp[0].str));
|
2007-10-18 18:49:08 -04:00
|
|
|
free(cfg_parser->cfg->forwards->name);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->forwards->name = yyvsp[0].str;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 176:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 919 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(forward-host:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, yyvsp[0].str))
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 177:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 926 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(forward-addr:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, yyvsp[0].str))
|
2007-10-18 18:49:08 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 178:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 933 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
2008-09-10 11:23:01 -04:00
|
|
|
OUTYY(("\nP(remote-control:)\n"));
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 188:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 944 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(control_enable:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(strcmp(yyvsp[0].str, "yes") != 0 && strcmp(yyvsp[0].str, "no") != 0)
|
2008-09-10 11:23:01 -04:00
|
|
|
yyerror("expected yes or no.");
|
|
|
|
|
else cfg_parser->cfg->remote_control_enable =
|
2009-03-11 07:53:47 -04:00
|
|
|
(strcmp(yyvsp[0].str, "yes")==0);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-09-10 11:23:01 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 189:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 954 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(control_port:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(atoi(yyvsp[0].str) == 0)
|
2008-09-10 11:23:01 -04:00
|
|
|
yyerror("control port number expected");
|
2009-03-11 07:53:47 -04:00
|
|
|
else cfg_parser->cfg->control_port = atoi(yyvsp[0].str);
|
|
|
|
|
free(yyvsp[0].str);
|
2008-09-10 11:23:01 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 190:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 963 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(control_interface:%s)\n", yyvsp[0].str));
|
|
|
|
|
if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, yyvsp[0].str))
|
2008-09-10 11:23:01 -04:00
|
|
|
yyerror("out of memory");
|
|
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 191:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 970 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(rc_server_key_file:%s)\n", yyvsp[0].str));
|
2008-09-10 11:23:01 -04:00
|
|
|
free(cfg_parser->cfg->server_key_file);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->server_key_file = yyvsp[0].str;
|
2008-09-10 11:23:01 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 192:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 977 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(rc_server_cert_file:%s)\n", yyvsp[0].str));
|
2008-09-10 11:23:01 -04:00
|
|
|
free(cfg_parser->cfg->server_cert_file);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->server_cert_file = yyvsp[0].str;
|
2008-09-10 11:23:01 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 193:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 984 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(rc_control_key_file:%s)\n", yyvsp[0].str));
|
2008-09-10 11:23:01 -04:00
|
|
|
free(cfg_parser->cfg->control_key_file);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->control_key_file = yyvsp[0].str;
|
2008-09-10 11:23:01 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
case 194:
|
2009-02-06 07:51:45 -05:00
|
|
|
#line 991 "util/configparser.y"
|
2009-03-11 07:53:47 -04:00
|
|
|
{
|
|
|
|
|
OUTYY(("P(rc_control_cert_file:%s)\n", yyvsp[0].str));
|
2008-09-10 11:23:01 -04:00
|
|
|
free(cfg_parser->cfg->control_cert_file);
|
2009-03-11 07:53:47 -04:00
|
|
|
cfg_parser->cfg->control_cert_file = yyvsp[0].str;
|
2008-09-10 11:23:01 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
break;
|
|
|
|
|
#line 1782 "util/configparser.c"
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
yyssp -= yym;
|
|
|
|
|
yystate = *yyssp;
|
|
|
|
|
yyvsp -= yym;
|
|
|
|
|
yym = yylhs[yyn];
|
|
|
|
|
if (yystate == 0 && yym == 0)
|
2007-10-18 18:49:08 -04:00
|
|
|
{
|
2009-03-11 07:53:47 -04:00
|
|
|
#if YYDEBUG
|
|
|
|
|
if (yydebug)
|
|
|
|
|
printf("%sdebug: after reduction, shifting from state 0 to\
|
|
|
|
|
state %d\n", YYPREFIX, YYFINAL);
|
2008-02-29 05:59:26 -05:00
|
|
|
#endif
|
2009-03-11 07:53:47 -04:00
|
|
|
yystate = YYFINAL;
|
|
|
|
|
*++yyssp = YYFINAL;
|
|
|
|
|
*++yyvsp = yyval;
|
|
|
|
|
if (yychar < 0)
|
|
|
|
|
{
|
|
|
|
|
if ((yychar = yylex()) < 0) yychar = 0;
|
|
|
|
|
#if YYDEBUG
|
|
|
|
|
if (yydebug)
|
|
|
|
|
{
|
|
|
|
|
yys = 0;
|
|
|
|
|
if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
|
|
|
|
|
if (!yys) yys = "illegal-symbol";
|
|
|
|
|
printf("%sdebug: state %d, reading %d (%s)\n",
|
|
|
|
|
YYPREFIX, YYFINAL, yychar, yys);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
if (yychar == 0) goto yyaccept;
|
|
|
|
|
goto yyloop;
|
2007-10-18 18:49:08 -04:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
|
|
|
|
|
yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
|
|
|
|
|
yystate = yytable[yyn];
|
|
|
|
|
else
|
|
|
|
|
yystate = yydgoto[yym];
|
|
|
|
|
#if YYDEBUG
|
|
|
|
|
if (yydebug)
|
|
|
|
|
printf("%sdebug: after reduction, shifting from state %d \
|
|
|
|
|
to state %d\n", YYPREFIX, *yyssp, yystate);
|
2007-10-18 18:49:08 -04:00
|
|
|
#endif
|
2009-03-11 07:53:47 -04:00
|
|
|
if (yyssp >= yysslim && yygrowstack())
|
2008-02-29 05:59:26 -05:00
|
|
|
{
|
2009-03-11 07:53:47 -04:00
|
|
|
goto yyoverflow;
|
2008-02-29 05:59:26 -05:00
|
|
|
}
|
2009-03-11 07:53:47 -04:00
|
|
|
*++yyssp = yystate;
|
|
|
|
|
*++yyvsp = yyval;
|
|
|
|
|
goto yyloop;
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
yyoverflow:
|
|
|
|
|
yyerror("yacc stack overflow");
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
yyabort:
|
|
|
|
|
return (1);
|
2007-10-18 18:49:08 -04:00
|
|
|
|
2009-03-11 07:53:47 -04:00
|
|
|
yyaccept:
|
|
|
|
|
return (0);
|
|
|
|
|
}
|