diff --git a/bin/named/include/named/globals.h b/bin/named/include/named/globals.h index a6e4797db6..d39a8a55cc 100644 --- a/bin/named/include/named/globals.h +++ b/bin/named/include/named/globals.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: globals.h,v 1.45 2000/10/04 23:19:00 bwelling Exp $ */ +/* $Id: globals.h,v 1.46 2000/10/13 22:35:46 bwelling Exp $ */ #ifndef NAMED_GLOBALS_H #define NAMED_GLOBALS_H 1 @@ -76,6 +76,7 @@ EXTERN const char * lwresd_g_conffile INIT(NS_SYSCONFDIR "/lwresd.conf"); EXTERN const char * lwresd_g_resolvconffile INIT("/etc" "/resolv.conf"); +EXTERN isc_boolean_t lwresd_g_useresolvconf INIT(ISC_FALSE); /* * Misc. diff --git a/bin/named/main.c b/bin/named/main.c index 57df9e2f14..a31f754126 100644 --- a/bin/named/main.c +++ b/bin/named/main.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: main.c,v 1.88 2000/10/04 23:18:56 bwelling Exp $ */ +/* $Id: main.c,v 1.89 2000/10/13 22:35:43 bwelling Exp $ */ #include @@ -280,6 +280,7 @@ parse_command_line(int argc, char *argv[]) { /* XXXBEW Should -C be removed? */ case 'C': lwresd_g_resolvconffile = isc_commandline_argument; + lwresd_g_useresolvconf = ISC_TRUE; break; case 'd': ns_g_debuglevel = parse_int(isc_commandline_argument, diff --git a/bin/named/server.c b/bin/named/server.c index 5c27400b8b..842ded4171 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: server.c,v 1.228 2000/10/12 21:51:46 mws Exp $ */ +/* $Id: server.c,v 1.229 2000/10/13 22:35:45 bwelling Exp $ */ #include @@ -1283,19 +1283,31 @@ load_configuration(const char *filename, ns_server_t *server, callbacks.optscbk = options_callback; callbacks.optscbkuap = NULL; - isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER, - ISC_LOG_INFO, "loading configuration from '%s'", - filename); - /* * Parse the configuration file creating a parse tree. Any * 'zone' statements are handled immediately by calling * configure_zone() through 'callbacks'. */ cctx = NULL; - result = dns_c_parse_namedconf(filename, ns_g_mctx, &cctx, &callbacks); - if (result == ISC_R_FILENOTFOUND && ns_g_lwresdonly) + if (ns_g_lwresdonly && lwresd_g_useresolvconf) + result = ISC_R_FILENOTFOUND; + else { + isc_log_write(ns_g_lctx, + NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER, + ISC_LOG_INFO, "loading configuration from '%s'", + filename); + + result = dns_c_parse_namedconf(filename, ns_g_mctx, &cctx, + &callbacks); + } + if (result == ISC_R_FILENOTFOUND && ns_g_lwresdonly) { + isc_log_write(ns_g_lctx, + NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER, + ISC_LOG_INFO, "loading configuration from '%s'", + lwresd_g_resolvconffile); + result = ns_lwresd_parseresolvconf(ns_g_mctx, &cctx); + } CHECK(result); /*