diff --git a/bin/named/main.c b/bin/named/main.c index 7e4273add8..15dbce2323 100644 --- a/bin/named/main.c +++ b/bin/named/main.c @@ -66,6 +66,7 @@ #include #include +#include #include #include #include /* Explicit, though named/log.h includes it. */ @@ -448,6 +449,12 @@ set_flags(const char *arg, struct flag_def *defs, unsigned int *ret) { static void printversion(bool verbose) { char rndcconf[PATH_MAX], *dot = NULL; +#if defined(HAVE_GEOIP2) + isc_mem_t *mctx = NULL; + cfg_parser_t *parser = NULL; + cfg_obj_t *config = NULL; + const cfg_obj_t *defaults = NULL, *obj = NULL; +#endif printf("%s %s%s%s \n", named_g_product, named_g_version, @@ -534,7 +541,20 @@ OPENSSL_VERSION_NUMBER >= 0x10100000L /* 1.1.0 or higher */ printf(" nsupdate session key: %s\n", named_g_defaultsessionkeyfile); printf(" named PID file: %s\n", named_g_defaultpidfile); printf(" named lock file: %s\n", named_g_defaultlockfile); - +#if defined(HAVE_GEOIP2) +#define RTC(x) RUNTIME_CHECK((x) == ISC_R_SUCCESS) + RTC(isc_mem_create(0, 0, &mctx)); + RTC(cfg_parser_create(mctx, named_g_lctx, &parser)); + RTC(named_config_parsedefaults(parser, &config)); + RTC(cfg_map_get(config, "options", &defaults)); + RTC(cfg_map_get(defaults, "geoip-directory", &obj)); + if (cfg_obj_isstring(obj)) { + printf(" geoip-directory: %s\n", cfg_obj_asstring(obj)); + } + cfg_obj_destroy(parser, &config); + cfg_parser_destroy(&parser); + isc_mem_detach(&mctx); +#endif /* HAVE_GEOIP2 */ } static void