mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
chrooted include file fix
git-svn-id: file:///svn/unbound/trunk@1411 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
parent
865852d3f7
commit
c1ae463da5
13 changed files with 156 additions and 146 deletions
|
|
@ -484,6 +484,7 @@ daemon_delete(struct daemon* daemon)
|
||||||
ub_randfree(daemon->rand);
|
ub_randfree(daemon->rand);
|
||||||
alloc_clear(&daemon->superalloc);
|
alloc_clear(&daemon->superalloc);
|
||||||
acl_list_delete(daemon->acl);
|
acl_list_delete(daemon->acl);
|
||||||
|
free(daemon->chroot);
|
||||||
free(daemon->pidfile);
|
free(daemon->pidfile);
|
||||||
free(daemon->env);
|
free(daemon->env);
|
||||||
free(daemon);
|
free(daemon);
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,8 @@ struct ub_randstate;
|
||||||
struct daemon {
|
struct daemon {
|
||||||
/** The config settings */
|
/** The config settings */
|
||||||
struct config_file* cfg;
|
struct config_file* cfg;
|
||||||
|
/** the chroot dir in use, NULL if none */
|
||||||
|
char* chroot;
|
||||||
/** pidfile that is used */
|
/** pidfile that is used */
|
||||||
char* pidfile;
|
char* pidfile;
|
||||||
/** port number that has ports opened. */
|
/** port number that has ports opened. */
|
||||||
|
|
|
||||||
|
|
@ -425,6 +425,9 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode,
|
||||||
if(!daemon->pidfile)
|
if(!daemon->pidfile)
|
||||||
log_err("out of memory in pidfile adjust");
|
log_err("out of memory in pidfile adjust");
|
||||||
}
|
}
|
||||||
|
daemon->chroot = strdup(cfg->chrootdir);
|
||||||
|
if(!daemon->chroot)
|
||||||
|
log_err("out of memory in daemon chroot dir storage");
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
(void)cfgfile;
|
(void)cfgfile;
|
||||||
|
|
@ -500,7 +503,7 @@ run_daemon(const char* cfgfile, int cmdline_verbose, int debug_mode)
|
||||||
/* config stuff */
|
/* config stuff */
|
||||||
if(!(cfg = config_create()))
|
if(!(cfg = config_create()))
|
||||||
fatal_exit("Could not alloc config defaults");
|
fatal_exit("Could not alloc config defaults");
|
||||||
if(!config_read(cfg, cfgfile)) {
|
if(!config_read(cfg, cfgfile, daemon->chroot)) {
|
||||||
if(errno != ENOENT)
|
if(errno != ENOENT)
|
||||||
fatal_exit("Could not read config file: %s",
|
fatal_exit("Could not read config file: %s",
|
||||||
cfgfile);
|
cfgfile);
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
get a correct NOERROR/NODATA answer.
|
get a correct NOERROR/NODATA answer.
|
||||||
- HINFO no longer downcased for validation, making unbound compatible
|
- HINFO no longer downcased for validation, making unbound compatible
|
||||||
with bind and ldns.
|
with bind and ldns.
|
||||||
|
- fix reading included config files when chrooted.
|
||||||
|
Give full path names for include files.
|
||||||
|
Relative path names work if the start dir equals the working dir.
|
||||||
|
|
||||||
5 January 2009: Wouter
|
5 January 2009: Wouter
|
||||||
- fixup getaddrinfo failure handling for remote control port.
|
- fixup getaddrinfo failure handling for remote control port.
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,10 @@ Files can be included using the
|
||||||
.B include:
|
.B include:
|
||||||
directive. It can appear anywhere, and takes a single filename as an argument.
|
directive. It can appear anywhere, and takes a single filename as an argument.
|
||||||
Processing continues as if the text from the included file was copied into
|
Processing continues as if the text from the included file was copied into
|
||||||
the config file at that point.
|
the config file at that point. If also using chroot, using full path names
|
||||||
|
for the included files works, relative pathnames for the included names work
|
||||||
|
if the directory where the daemon is started equals its chroot/working
|
||||||
|
directory.
|
||||||
.SS "Server Options"
|
.SS "Server Options"
|
||||||
These options are part of the
|
These options are part of the
|
||||||
.B server:
|
.B server:
|
||||||
|
|
|
||||||
|
|
@ -246,7 +246,7 @@ ub_ctx_config(struct ub_ctx* ctx, char* fname)
|
||||||
lock_basic_unlock(&ctx->cfglock);
|
lock_basic_unlock(&ctx->cfglock);
|
||||||
return UB_AFTERFINAL;
|
return UB_AFTERFINAL;
|
||||||
}
|
}
|
||||||
if(!config_read(ctx->env->cfg, fname)) {
|
if(!config_read(ctx->env->cfg, fname, NULL)) {
|
||||||
lock_basic_unlock(&ctx->cfglock);
|
lock_basic_unlock(&ctx->cfglock);
|
||||||
return UB_SYNTAX;
|
return UB_SYNTAX;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -374,7 +374,7 @@ checkconf(const char* cfgfile)
|
||||||
struct config_file* cfg = config_create();
|
struct config_file* cfg = config_create();
|
||||||
if(!cfg)
|
if(!cfg)
|
||||||
fatal_exit("out of memory");
|
fatal_exit("out of memory");
|
||||||
if(!config_read(cfg, cfgfile)) {
|
if(!config_read(cfg, cfgfile, NULL)) {
|
||||||
/* config_read prints messages to stderr */
|
/* config_read prints messages to stderr */
|
||||||
config_delete(cfg);
|
config_delete(cfg);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
|
||||||
|
|
@ -280,7 +280,7 @@ go(const char* cfgfile, char* svr, int argc, char* argv[])
|
||||||
/* read config */
|
/* read config */
|
||||||
if(!(cfg = config_create()))
|
if(!(cfg = config_create()))
|
||||||
fatal_exit("out of memory");
|
fatal_exit("out of memory");
|
||||||
if(!config_read(cfg, cfgfile))
|
if(!config_read(cfg, cfgfile, NULL))
|
||||||
fatal_exit("could not read config file");
|
fatal_exit("could not read config file");
|
||||||
if(!cfg->remote_control_enable)
|
if(!cfg->remote_control_enable)
|
||||||
log_warn("control-enable is 'no' in the config file.");
|
log_warn("control-enable is 'no' in the config file.");
|
||||||
|
|
|
||||||
|
|
@ -412,7 +412,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
|
||||||
|
|
||||||
/** initialize the global cfg_parser object */
|
/** initialize the global cfg_parser object */
|
||||||
static void
|
static void
|
||||||
create_cfg_parser(struct config_file* cfg, char* filename)
|
create_cfg_parser(struct config_file* cfg, char* filename, const char* chroot)
|
||||||
{
|
{
|
||||||
static struct config_parser_state st;
|
static struct config_parser_state st;
|
||||||
cfg_parser = &st;
|
cfg_parser = &st;
|
||||||
|
|
@ -420,10 +420,11 @@ create_cfg_parser(struct config_file* cfg, char* filename)
|
||||||
cfg_parser->line = 1;
|
cfg_parser->line = 1;
|
||||||
cfg_parser->errors = 0;
|
cfg_parser->errors = 0;
|
||||||
cfg_parser->cfg = cfg;
|
cfg_parser->cfg = cfg;
|
||||||
|
cfg_parser->chroot = chroot;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
config_read(struct config_file* cfg, const char* filename)
|
config_read(struct config_file* cfg, const char* filename, const char* chroot)
|
||||||
{
|
{
|
||||||
FILE *in;
|
FILE *in;
|
||||||
char *fname = (char*)filename;
|
char *fname = (char*)filename;
|
||||||
|
|
@ -434,7 +435,7 @@ config_read(struct config_file* cfg, const char* filename)
|
||||||
log_err("Could not open %s: %s", fname, strerror(errno));
|
log_err("Could not open %s: %s", fname, strerror(errno));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
create_cfg_parser(cfg, fname);
|
create_cfg_parser(cfg, fname, chroot);
|
||||||
ub_c_in = in;
|
ub_c_in = in;
|
||||||
ub_c_parse();
|
ub_c_parse();
|
||||||
fclose(in);
|
fclose(in);
|
||||||
|
|
|
||||||
|
|
@ -295,10 +295,12 @@ struct config_file* config_create_forlib();
|
||||||
* Read the config file from the specified filename.
|
* Read the config file from the specified filename.
|
||||||
* @param config: where options are stored into, must be freshly created.
|
* @param config: where options are stored into, must be freshly created.
|
||||||
* @param filename: name of configfile. If NULL nothing is done.
|
* @param filename: name of configfile. If NULL nothing is done.
|
||||||
|
* @param chroot: if not NULL, the chroot dir currently in use (for include).
|
||||||
* @return: false on error. In that case errno is set, ENOENT means
|
* @return: false on error. In that case errno is set, ENOENT means
|
||||||
* file not found.
|
* file not found.
|
||||||
*/
|
*/
|
||||||
int config_read(struct config_file* config, const char* filename);
|
int config_read(struct config_file* config, const char* filename,
|
||||||
|
const char* chroot);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destroy the config file structure.
|
* Destroy the config file structure.
|
||||||
|
|
@ -446,6 +448,8 @@ struct config_parser_state {
|
||||||
int errors;
|
int errors;
|
||||||
/** the result of parsing is stored here. */
|
/** the result of parsing is stored here. */
|
||||||
struct config_file* cfg;
|
struct config_file* cfg;
|
||||||
|
/** the current chroot dir (or NULL if none) */
|
||||||
|
const char* chroot;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** global config parser object used during config parsing */
|
/** global config parser object used during config parsing */
|
||||||
|
|
|
||||||
|
|
@ -1306,6 +1306,10 @@ static void config_start_include(const char* filename)
|
||||||
ub_c_error_msg("includes nested too deeply, skipped (>%d)", MAXINCLUDES);
|
ub_c_error_msg("includes nested too deeply, skipped (>%d)", MAXINCLUDES);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot,
|
||||||
|
strlen(cfg_parser->chroot)) == 0) {
|
||||||
|
filename += strlen(cfg_parser->chroot);
|
||||||
|
}
|
||||||
input = fopen(filename, "r");
|
input = fopen(filename, "r");
|
||||||
if(!input) {
|
if(!input) {
|
||||||
ub_c_error_msg("cannot open include file '%s': %s",
|
ub_c_error_msg("cannot open include file '%s': %s",
|
||||||
|
|
@ -1342,7 +1346,7 @@ static void config_end_include(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define YY_NO_INPUT 1
|
#define YY_NO_INPUT 1
|
||||||
#line 88 "util/configlexer.lex"
|
#line 92 "util/configlexer.lex"
|
||||||
#ifndef YY_NO_UNPUT
|
#ifndef YY_NO_UNPUT
|
||||||
#define YY_NO_UNPUT 1
|
#define YY_NO_UNPUT 1
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1350,7 +1354,7 @@ static void config_end_include(void)
|
||||||
#define YY_NO_INPUT 1
|
#define YY_NO_INPUT 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#line 1353 "<stdout>"
|
#line 1357 "<stdout>"
|
||||||
|
|
||||||
#define INITIAL 0
|
#define INITIAL 0
|
||||||
#define quotedstring 1
|
#define quotedstring 1
|
||||||
|
|
@ -1534,9 +1538,9 @@ YY_DECL
|
||||||
register char *yy_cp, *yy_bp;
|
register char *yy_cp, *yy_bp;
|
||||||
register int yy_act;
|
register int yy_act;
|
||||||
|
|
||||||
#line 107 "util/configlexer.lex"
|
#line 111 "util/configlexer.lex"
|
||||||
|
|
||||||
#line 1539 "<stdout>"
|
#line 1543 "<stdout>"
|
||||||
|
|
||||||
if ( !(yy_init) )
|
if ( !(yy_init) )
|
||||||
{
|
{
|
||||||
|
|
@ -1627,478 +1631,478 @@ do_action: /* This label is used only to access EOF actions. */
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 108 "util/configlexer.lex"
|
#line 112 "util/configlexer.lex"
|
||||||
{ LEXOUT(("SP ")); /* ignore */ }
|
{ LEXOUT(("SP ")); /* ignore */ }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 2:
|
case 2:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 109 "util/configlexer.lex"
|
#line 113 "util/configlexer.lex"
|
||||||
{ LEXOUT(("comment(%s) ", yytext)); /* ignore */ }
|
{ LEXOUT(("comment(%s) ", yytext)); /* ignore */ }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 3:
|
case 3:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 110 "util/configlexer.lex"
|
#line 114 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_SERVER;}
|
{ YDOUT; return VAR_SERVER;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 4:
|
case 4:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 111 "util/configlexer.lex"
|
#line 115 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_NUM_THREADS;}
|
{ YDOUT; return VAR_NUM_THREADS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 5:
|
case 5:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 112 "util/configlexer.lex"
|
#line 116 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_VERBOSITY;}
|
{ YDOUT; return VAR_VERBOSITY;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 6:
|
case 6:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 113 "util/configlexer.lex"
|
#line 117 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_PORT;}
|
{ YDOUT; return VAR_PORT;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 7:
|
case 7:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 114 "util/configlexer.lex"
|
#line 118 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_OUTGOING_RANGE;}
|
{ YDOUT; return VAR_OUTGOING_RANGE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 8:
|
case 8:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 115 "util/configlexer.lex"
|
#line 119 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_OUTGOING_PORT_PERMIT;}
|
{ YDOUT; return VAR_OUTGOING_PORT_PERMIT;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 9:
|
case 9:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 116 "util/configlexer.lex"
|
#line 120 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_OUTGOING_PORT_AVOID;}
|
{ YDOUT; return VAR_OUTGOING_PORT_AVOID;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 10:
|
case 10:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 117 "util/configlexer.lex"
|
#line 121 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_OUTGOING_NUM_TCP;}
|
{ YDOUT; return VAR_OUTGOING_NUM_TCP;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 11:
|
case 11:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 118 "util/configlexer.lex"
|
#line 122 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_INCOMING_NUM_TCP;}
|
{ YDOUT; return VAR_INCOMING_NUM_TCP;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 12:
|
case 12:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 119 "util/configlexer.lex"
|
#line 123 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DO_IP4;}
|
{ YDOUT; return VAR_DO_IP4;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 13:
|
case 13:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 120 "util/configlexer.lex"
|
#line 124 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DO_IP6;}
|
{ YDOUT; return VAR_DO_IP6;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 14:
|
case 14:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 121 "util/configlexer.lex"
|
#line 125 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DO_UDP;}
|
{ YDOUT; return VAR_DO_UDP;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 15:
|
case 15:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 122 "util/configlexer.lex"
|
#line 126 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DO_TCP;}
|
{ YDOUT; return VAR_DO_TCP;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 16:
|
case 16:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 123 "util/configlexer.lex"
|
#line 127 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DO_DAEMONIZE;}
|
{ YDOUT; return VAR_DO_DAEMONIZE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 17:
|
case 17:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 124 "util/configlexer.lex"
|
#line 128 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_INTERFACE;}
|
{ YDOUT; return VAR_INTERFACE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 18:
|
case 18:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 125 "util/configlexer.lex"
|
#line 129 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_OUTGOING_INTERFACE;}
|
{ YDOUT; return VAR_OUTGOING_INTERFACE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 19:
|
case 19:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 126 "util/configlexer.lex"
|
#line 130 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_INTERFACE_AUTOMATIC;}
|
{ YDOUT; return VAR_INTERFACE_AUTOMATIC;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 20:
|
case 20:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 127 "util/configlexer.lex"
|
#line 131 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_CHROOT;}
|
{ YDOUT; return VAR_CHROOT;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 21:
|
case 21:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 128 "util/configlexer.lex"
|
#line 132 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_USERNAME;}
|
{ YDOUT; return VAR_USERNAME;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 22:
|
case 22:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 129 "util/configlexer.lex"
|
#line 133 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DIRECTORY;}
|
{ YDOUT; return VAR_DIRECTORY;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 23:
|
case 23:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 130 "util/configlexer.lex"
|
#line 134 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_LOGFILE;}
|
{ YDOUT; return VAR_LOGFILE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 24:
|
case 24:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 131 "util/configlexer.lex"
|
#line 135 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_PIDFILE;}
|
{ YDOUT; return VAR_PIDFILE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 25:
|
case 25:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 132 "util/configlexer.lex"
|
#line 136 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_ROOT_HINTS;}
|
{ YDOUT; return VAR_ROOT_HINTS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 26:
|
case 26:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 133 "util/configlexer.lex"
|
#line 137 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_MSG_BUFFER_SIZE;}
|
{ YDOUT; return VAR_MSG_BUFFER_SIZE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 27:
|
case 27:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 134 "util/configlexer.lex"
|
#line 138 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_MSG_CACHE_SIZE;}
|
{ YDOUT; return VAR_MSG_CACHE_SIZE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 28:
|
case 28:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 135 "util/configlexer.lex"
|
#line 139 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_MSG_CACHE_SLABS;}
|
{ YDOUT; return VAR_MSG_CACHE_SLABS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 29:
|
case 29:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 136 "util/configlexer.lex"
|
#line 140 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_RRSET_CACHE_SIZE;}
|
{ YDOUT; return VAR_RRSET_CACHE_SIZE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 30:
|
case 30:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 137 "util/configlexer.lex"
|
#line 141 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_RRSET_CACHE_SLABS;}
|
{ YDOUT; return VAR_RRSET_CACHE_SLABS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 31:
|
case 31:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 138 "util/configlexer.lex"
|
#line 142 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_CACHE_MAX_TTL;}
|
{ YDOUT; return VAR_CACHE_MAX_TTL;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 32:
|
case 32:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 139 "util/configlexer.lex"
|
#line 143 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_INFRA_HOST_TTL;}
|
{ YDOUT; return VAR_INFRA_HOST_TTL;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 33:
|
case 33:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 140 "util/configlexer.lex"
|
#line 144 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_INFRA_LAME_TTL;}
|
{ YDOUT; return VAR_INFRA_LAME_TTL;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 34:
|
case 34:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 141 "util/configlexer.lex"
|
#line 145 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_INFRA_CACHE_SLABS;}
|
{ YDOUT; return VAR_INFRA_CACHE_SLABS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 35:
|
case 35:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 142 "util/configlexer.lex"
|
#line 146 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_INFRA_CACHE_NUMHOSTS;}
|
{ YDOUT; return VAR_INFRA_CACHE_NUMHOSTS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 36:
|
case 36:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 143 "util/configlexer.lex"
|
#line 147 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_INFRA_CACHE_LAME_SIZE;}
|
{ YDOUT; return VAR_INFRA_CACHE_LAME_SIZE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 37:
|
case 37:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 144 "util/configlexer.lex"
|
#line 148 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_NUM_QUERIES_PER_THREAD;}
|
{ YDOUT; return VAR_NUM_QUERIES_PER_THREAD;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 38:
|
case 38:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 145 "util/configlexer.lex"
|
#line 149 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_JOSTLE_TIMEOUT;}
|
{ YDOUT; return VAR_JOSTLE_TIMEOUT;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 39:
|
case 39:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 146 "util/configlexer.lex"
|
#line 150 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_TARGET_FETCH_POLICY;}
|
{ YDOUT; return VAR_TARGET_FETCH_POLICY;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 40:
|
case 40:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 147 "util/configlexer.lex"
|
#line 151 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_HARDEN_SHORT_BUFSIZE;}
|
{ YDOUT; return VAR_HARDEN_SHORT_BUFSIZE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 41:
|
case 41:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 148 "util/configlexer.lex"
|
#line 152 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_HARDEN_LARGE_QUERIES;}
|
{ YDOUT; return VAR_HARDEN_LARGE_QUERIES;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 42:
|
case 42:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 149 "util/configlexer.lex"
|
#line 153 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_HARDEN_GLUE;}
|
{ YDOUT; return VAR_HARDEN_GLUE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 43:
|
case 43:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 150 "util/configlexer.lex"
|
#line 154 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_HARDEN_DNNSEC_STRIPPED;}
|
{ YDOUT; return VAR_HARDEN_DNNSEC_STRIPPED;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 44:
|
case 44:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 151 "util/configlexer.lex"
|
#line 155 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_HARDEN_REFERRAL_PATH;}
|
{ YDOUT; return VAR_HARDEN_REFERRAL_PATH;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 45:
|
case 45:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 152 "util/configlexer.lex"
|
#line 156 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_USE_CAPS_FOR_ID;}
|
{ YDOUT; return VAR_USE_CAPS_FOR_ID;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 46:
|
case 46:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 153 "util/configlexer.lex"
|
#line 157 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_UNWANTED_REPLY_THRESHOLD;}
|
{ YDOUT; return VAR_UNWANTED_REPLY_THRESHOLD;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 47:
|
case 47:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 154 "util/configlexer.lex"
|
#line 158 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_PRIVATE_ADDRESS;}
|
{ YDOUT; return VAR_PRIVATE_ADDRESS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 48:
|
case 48:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 155 "util/configlexer.lex"
|
#line 159 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_PRIVATE_DOMAIN;}
|
{ YDOUT; return VAR_PRIVATE_DOMAIN;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 49:
|
case 49:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 156 "util/configlexer.lex"
|
#line 160 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_STUB_ZONE;}
|
{ YDOUT; return VAR_STUB_ZONE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 50:
|
case 50:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 157 "util/configlexer.lex"
|
#line 161 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_NAME;}
|
{ YDOUT; return VAR_NAME;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 51:
|
case 51:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 158 "util/configlexer.lex"
|
#line 162 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_STUB_ADDR;}
|
{ YDOUT; return VAR_STUB_ADDR;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 52:
|
case 52:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 159 "util/configlexer.lex"
|
#line 163 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_STUB_HOST;}
|
{ YDOUT; return VAR_STUB_HOST;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 53:
|
case 53:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 160 "util/configlexer.lex"
|
#line 164 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_STUB_PRIME;}
|
{ YDOUT; return VAR_STUB_PRIME;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 54:
|
case 54:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 161 "util/configlexer.lex"
|
#line 165 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_FORWARD_ZONE;}
|
{ YDOUT; return VAR_FORWARD_ZONE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 55:
|
case 55:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 162 "util/configlexer.lex"
|
#line 166 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_FORWARD_ADDR;}
|
{ YDOUT; return VAR_FORWARD_ADDR;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 56:
|
case 56:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 163 "util/configlexer.lex"
|
#line 167 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_FORWARD_HOST;}
|
{ YDOUT; return VAR_FORWARD_HOST;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 57:
|
case 57:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 164 "util/configlexer.lex"
|
#line 168 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;}
|
{ YDOUT; return VAR_DO_NOT_QUERY_ADDRESS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 58:
|
case 58:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 165 "util/configlexer.lex"
|
#line 169 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;}
|
{ YDOUT; return VAR_DO_NOT_QUERY_LOCALHOST;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 59:
|
case 59:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 166 "util/configlexer.lex"
|
#line 170 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_ACCESS_CONTROL;}
|
{ YDOUT; return VAR_ACCESS_CONTROL;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 60:
|
case 60:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 167 "util/configlexer.lex"
|
#line 171 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_HIDE_IDENTITY;}
|
{ YDOUT; return VAR_HIDE_IDENTITY;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 61:
|
case 61:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 168 "util/configlexer.lex"
|
#line 172 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_HIDE_VERSION;}
|
{ YDOUT; return VAR_HIDE_VERSION;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 62:
|
case 62:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 169 "util/configlexer.lex"
|
#line 173 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_IDENTITY;}
|
{ YDOUT; return VAR_IDENTITY;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 63:
|
case 63:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 170 "util/configlexer.lex"
|
#line 174 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_VERSION;}
|
{ YDOUT; return VAR_VERSION;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 64:
|
case 64:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 171 "util/configlexer.lex"
|
#line 175 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_MODULE_CONF;}
|
{ YDOUT; return VAR_MODULE_CONF;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 65:
|
case 65:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 172 "util/configlexer.lex"
|
#line 176 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DLV_ANCHOR;}
|
{ YDOUT; return VAR_DLV_ANCHOR;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 66:
|
case 66:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 173 "util/configlexer.lex"
|
#line 177 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_DLV_ANCHOR_FILE;}
|
{ YDOUT; return VAR_DLV_ANCHOR_FILE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 67:
|
case 67:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 174 "util/configlexer.lex"
|
#line 178 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_TRUST_ANCHOR_FILE;}
|
{ YDOUT; return VAR_TRUST_ANCHOR_FILE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 68:
|
case 68:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 175 "util/configlexer.lex"
|
#line 179 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_TRUSTED_KEYS_FILE;}
|
{ YDOUT; return VAR_TRUSTED_KEYS_FILE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 69:
|
case 69:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 176 "util/configlexer.lex"
|
#line 180 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_TRUST_ANCHOR;}
|
{ YDOUT; return VAR_TRUST_ANCHOR;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 70:
|
case 70:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 177 "util/configlexer.lex"
|
#line 181 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_VAL_OVERRIDE_DATE;}
|
{ YDOUT; return VAR_VAL_OVERRIDE_DATE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 71:
|
case 71:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 178 "util/configlexer.lex"
|
#line 182 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_BOGUS_TTL;}
|
{ YDOUT; return VAR_BOGUS_TTL;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 72:
|
case 72:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 179 "util/configlexer.lex"
|
#line 183 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;}
|
{ YDOUT; return VAR_VAL_CLEAN_ADDITIONAL;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 73:
|
case 73:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 180 "util/configlexer.lex"
|
#line 184 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;}
|
{ YDOUT; return VAR_VAL_PERMISSIVE_MODE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 74:
|
case 74:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 181 "util/configlexer.lex"
|
#line 185 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_KEY_CACHE_SIZE;}
|
{ YDOUT; return VAR_KEY_CACHE_SIZE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 75:
|
case 75:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 182 "util/configlexer.lex"
|
#line 186 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_KEY_CACHE_SLABS;}
|
{ YDOUT; return VAR_KEY_CACHE_SLABS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 76:
|
case 76:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 183 "util/configlexer.lex"
|
#line 187 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_NEG_CACHE_SIZE;}
|
{ YDOUT; return VAR_NEG_CACHE_SIZE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 77:
|
case 77:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 184 "util/configlexer.lex"
|
#line 188 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;}
|
{ YDOUT; return VAR_VAL_NSEC3_KEYSIZE_ITERATIONS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 78:
|
case 78:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 185 "util/configlexer.lex"
|
#line 189 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_USE_SYSLOG;}
|
{ YDOUT; return VAR_USE_SYSLOG;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 79:
|
case 79:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 186 "util/configlexer.lex"
|
#line 190 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_LOCAL_ZONE;}
|
{ YDOUT; return VAR_LOCAL_ZONE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 80:
|
case 80:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 187 "util/configlexer.lex"
|
#line 191 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_LOCAL_DATA;}
|
{ YDOUT; return VAR_LOCAL_DATA;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 81:
|
case 81:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 188 "util/configlexer.lex"
|
#line 192 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_LOCAL_DATA_PTR;}
|
{ YDOUT; return VAR_LOCAL_DATA_PTR;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 82:
|
case 82:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 189 "util/configlexer.lex"
|
#line 193 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_STATISTICS_INTERVAL;}
|
{ YDOUT; return VAR_STATISTICS_INTERVAL;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 83:
|
case 83:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 190 "util/configlexer.lex"
|
#line 194 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_STATISTICS_CUMULATIVE;}
|
{ YDOUT; return VAR_STATISTICS_CUMULATIVE;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 84:
|
case 84:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 191 "util/configlexer.lex"
|
#line 195 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_EXTENDED_STATISTICS;}
|
{ YDOUT; return VAR_EXTENDED_STATISTICS;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 85:
|
case 85:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 192 "util/configlexer.lex"
|
#line 196 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_REMOTE_CONTROL; }
|
{ YDOUT; return VAR_REMOTE_CONTROL; }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 86:
|
case 86:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 193 "util/configlexer.lex"
|
#line 197 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_CONTROL_ENABLE; }
|
{ YDOUT; return VAR_CONTROL_ENABLE; }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 87:
|
case 87:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 194 "util/configlexer.lex"
|
#line 198 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_CONTROL_INTERFACE; }
|
{ YDOUT; return VAR_CONTROL_INTERFACE; }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 88:
|
case 88:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 195 "util/configlexer.lex"
|
#line 199 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_CONTROL_PORT; }
|
{ YDOUT; return VAR_CONTROL_PORT; }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 89:
|
case 89:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 196 "util/configlexer.lex"
|
#line 200 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_SERVER_KEY_FILE; }
|
{ YDOUT; return VAR_SERVER_KEY_FILE; }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 90:
|
case 90:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 197 "util/configlexer.lex"
|
#line 201 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_SERVER_CERT_FILE; }
|
{ YDOUT; return VAR_SERVER_CERT_FILE; }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 91:
|
case 91:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 198 "util/configlexer.lex"
|
#line 202 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_CONTROL_KEY_FILE; }
|
{ YDOUT; return VAR_CONTROL_KEY_FILE; }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 92:
|
case 92:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 199 "util/configlexer.lex"
|
#line 203 "util/configlexer.lex"
|
||||||
{ YDOUT; return VAR_CONTROL_CERT_FILE; }
|
{ YDOUT; return VAR_CONTROL_CERT_FILE; }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 93:
|
case 93:
|
||||||
/* rule 93 can match eol */
|
/* rule 93 can match eol */
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 200 "util/configlexer.lex"
|
#line 204 "util/configlexer.lex"
|
||||||
{ LEXOUT(("NL\n")); cfg_parser->line++;}
|
{ LEXOUT(("NL\n")); cfg_parser->line++;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
/* Quoted strings. Strip leading and ending quotes */
|
/* Quoted strings. Strip leading and ending quotes */
|
||||||
case 94:
|
case 94:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 203 "util/configlexer.lex"
|
#line 207 "util/configlexer.lex"
|
||||||
{ BEGIN(quotedstring); LEXOUT(("QS ")); }
|
{ BEGIN(quotedstring); LEXOUT(("QS ")); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case YY_STATE_EOF(quotedstring):
|
case YY_STATE_EOF(quotedstring):
|
||||||
#line 204 "util/configlexer.lex"
|
#line 208 "util/configlexer.lex"
|
||||||
{
|
{
|
||||||
yyerror("EOF inside quoted string");
|
yyerror("EOF inside quoted string");
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
|
|
@ -2106,18 +2110,18 @@ case YY_STATE_EOF(quotedstring):
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 95:
|
case 95:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 208 "util/configlexer.lex"
|
#line 212 "util/configlexer.lex"
|
||||||
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
|
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 96:
|
case 96:
|
||||||
/* rule 96 can match eol */
|
/* rule 96 can match eol */
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 209 "util/configlexer.lex"
|
#line 213 "util/configlexer.lex"
|
||||||
{ cfg_parser->line++; yymore(); }
|
{ cfg_parser->line++; yymore(); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 97:
|
case 97:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 210 "util/configlexer.lex"
|
#line 214 "util/configlexer.lex"
|
||||||
{
|
{
|
||||||
LEXOUT(("QE "));
|
LEXOUT(("QE "));
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
|
|
@ -2131,11 +2135,11 @@ YY_RULE_SETUP
|
||||||
/* Single Quoted strings. Strip leading and ending quotes */
|
/* Single Quoted strings. Strip leading and ending quotes */
|
||||||
case 98:
|
case 98:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 221 "util/configlexer.lex"
|
#line 225 "util/configlexer.lex"
|
||||||
{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
|
{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case YY_STATE_EOF(singlequotedstr):
|
case YY_STATE_EOF(singlequotedstr):
|
||||||
#line 222 "util/configlexer.lex"
|
#line 226 "util/configlexer.lex"
|
||||||
{
|
{
|
||||||
yyerror("EOF inside quoted string");
|
yyerror("EOF inside quoted string");
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
|
|
@ -2143,18 +2147,18 @@ case YY_STATE_EOF(singlequotedstr):
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 99:
|
case 99:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 226 "util/configlexer.lex"
|
#line 230 "util/configlexer.lex"
|
||||||
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
|
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 100:
|
case 100:
|
||||||
/* rule 100 can match eol */
|
/* rule 100 can match eol */
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 227 "util/configlexer.lex"
|
#line 231 "util/configlexer.lex"
|
||||||
{ cfg_parser->line++; yymore(); }
|
{ cfg_parser->line++; yymore(); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 101:
|
case 101:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 228 "util/configlexer.lex"
|
#line 232 "util/configlexer.lex"
|
||||||
{
|
{
|
||||||
LEXOUT(("SQE "));
|
LEXOUT(("SQE "));
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
|
|
@ -2168,11 +2172,11 @@ YY_RULE_SETUP
|
||||||
/* include: directive */
|
/* include: directive */
|
||||||
case 102:
|
case 102:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 239 "util/configlexer.lex"
|
#line 243 "util/configlexer.lex"
|
||||||
{ LEXOUT(("v(%s) ", yytext)); BEGIN(include); }
|
{ LEXOUT(("v(%s) ", yytext)); BEGIN(include); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case YY_STATE_EOF(include):
|
case YY_STATE_EOF(include):
|
||||||
#line 240 "util/configlexer.lex"
|
#line 244 "util/configlexer.lex"
|
||||||
{
|
{
|
||||||
yyerror("EOF inside include directive");
|
yyerror("EOF inside include directive");
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
|
|
@ -2180,23 +2184,23 @@ case YY_STATE_EOF(include):
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 103:
|
case 103:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 244 "util/configlexer.lex"
|
#line 248 "util/configlexer.lex"
|
||||||
{ LEXOUT(("ISP ")); /* ignore */ }
|
{ LEXOUT(("ISP ")); /* ignore */ }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 104:
|
case 104:
|
||||||
/* rule 104 can match eol */
|
/* rule 104 can match eol */
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 245 "util/configlexer.lex"
|
#line 249 "util/configlexer.lex"
|
||||||
{ LEXOUT(("NL\n")); cfg_parser->line++;}
|
{ LEXOUT(("NL\n")); cfg_parser->line++;}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 105:
|
case 105:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 246 "util/configlexer.lex"
|
#line 250 "util/configlexer.lex"
|
||||||
{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
|
{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 106:
|
case 106:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 247 "util/configlexer.lex"
|
#line 251 "util/configlexer.lex"
|
||||||
{
|
{
|
||||||
LEXOUT(("Iunquotedstr(%s) ", yytext));
|
LEXOUT(("Iunquotedstr(%s) ", yytext));
|
||||||
config_start_include(yytext);
|
config_start_include(yytext);
|
||||||
|
|
@ -2204,7 +2208,7 @@ YY_RULE_SETUP
|
||||||
}
|
}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case YY_STATE_EOF(include_quoted):
|
case YY_STATE_EOF(include_quoted):
|
||||||
#line 252 "util/configlexer.lex"
|
#line 256 "util/configlexer.lex"
|
||||||
{
|
{
|
||||||
yyerror("EOF inside quoted string");
|
yyerror("EOF inside quoted string");
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
|
|
@ -2212,18 +2216,18 @@ case YY_STATE_EOF(include_quoted):
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 107:
|
case 107:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 256 "util/configlexer.lex"
|
#line 260 "util/configlexer.lex"
|
||||||
{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
|
{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 108:
|
case 108:
|
||||||
/* rule 108 can match eol */
|
/* rule 108 can match eol */
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 257 "util/configlexer.lex"
|
#line 261 "util/configlexer.lex"
|
||||||
{ cfg_parser->line++; yymore(); }
|
{ cfg_parser->line++; yymore(); }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 109:
|
case 109:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 258 "util/configlexer.lex"
|
#line 262 "util/configlexer.lex"
|
||||||
{
|
{
|
||||||
LEXOUT(("IQE "));
|
LEXOUT(("IQE "));
|
||||||
yytext[yyleng - 1] = '\0';
|
yytext[yyleng - 1] = '\0';
|
||||||
|
|
@ -2232,7 +2236,7 @@ YY_RULE_SETUP
|
||||||
}
|
}
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case YY_STATE_EOF(INITIAL):
|
case YY_STATE_EOF(INITIAL):
|
||||||
#line 264 "util/configlexer.lex"
|
#line 268 "util/configlexer.lex"
|
||||||
{
|
{
|
||||||
yy_set_bol(1); /* Set beginning of line, so "^" rules match. */
|
yy_set_bol(1); /* Set beginning of line, so "^" rules match. */
|
||||||
if (config_include_stack_ptr == 0) {
|
if (config_include_stack_ptr == 0) {
|
||||||
|
|
@ -2245,16 +2249,16 @@ case YY_STATE_EOF(INITIAL):
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 110:
|
case 110:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 274 "util/configlexer.lex"
|
#line 278 "util/configlexer.lex"
|
||||||
{ LEXOUT(("unquotedstr(%s) ", yytext));
|
{ LEXOUT(("unquotedstr(%s) ", yytext));
|
||||||
yylval.str = strdup(yytext); return STRING; }
|
yylval.str = strdup(yytext); return STRING; }
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
case 111:
|
case 111:
|
||||||
YY_RULE_SETUP
|
YY_RULE_SETUP
|
||||||
#line 277 "util/configlexer.lex"
|
#line 281 "util/configlexer.lex"
|
||||||
ECHO;
|
ECHO;
|
||||||
YY_BREAK
|
YY_BREAK
|
||||||
#line 2257 "<stdout>"
|
#line 2261 "<stdout>"
|
||||||
|
|
||||||
case YY_END_OF_BUFFER:
|
case YY_END_OF_BUFFER:
|
||||||
{
|
{
|
||||||
|
|
@ -3213,7 +3217,7 @@ void yyfree (void * ptr )
|
||||||
|
|
||||||
#define YYTABLES_NAME "yytables"
|
#define YYTABLES_NAME "yytables"
|
||||||
|
|
||||||
#line 277 "util/configlexer.lex"
|
#line 281 "util/configlexer.lex"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,10 @@ static void config_start_include(const char* filename)
|
||||||
ub_c_error_msg("includes nested too deeply, skipped (>%d)", MAXINCLUDES);
|
ub_c_error_msg("includes nested too deeply, skipped (>%d)", MAXINCLUDES);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(cfg_parser->chroot && strncmp(filename, cfg_parser->chroot,
|
||||||
|
strlen(cfg_parser->chroot)) == 0) {
|
||||||
|
filename += strlen(cfg_parser->chroot);
|
||||||
|
}
|
||||||
input = fopen(filename, "r");
|
input = fopen(filename, "r");
|
||||||
if(!input) {
|
if(!input) {
|
||||||
ub_c_error_msg("cannot open include file '%s': %s",
|
ub_c_error_msg("cannot open include file '%s': %s",
|
||||||
|
|
|
||||||
|
|
@ -854,21 +854,6 @@ insert_can_owner(ldns_buffer* buf, struct ub_packed_rrset_key* k,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Lowercase a text rdata field in a buffer.
|
|
||||||
* @param p: pointer to start of text field (length byte).
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
lowercase_text_field(uint8_t* p)
|
|
||||||
{
|
|
||||||
int i, len = (int)*p;
|
|
||||||
p++;
|
|
||||||
for(i=0; i<len; i++) {
|
|
||||||
*p = (uint8_t)tolower((int)*p);
|
|
||||||
p++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Canonicalize Rdata in buffer.
|
* Canonicalize Rdata in buffer.
|
||||||
* @param buf: buffer at position just after the rdata.
|
* @param buf: buffer at position just after the rdata.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue