From ae903759c205f8a5039458d780c0e0c4442b7291 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Tue, 30 May 2017 11:31:34 +1000 Subject: [PATCH] 4530. [bug] "dyndb" is dependent on dlopen existing / being enabled. [RT #45291] From aa3a8979bc7eb1596d044eff572b3c35310584fa Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Tue, 30 May 2017 11:34:37 +1000 Subject: [PATCH] 4530. [bug] "dyndb" is dependent on dlopen existing / being enabled. [RT #45291] diff --git a/lib/dns/dyndb.c b/lib/dns/dyndb.c index a477508..dec68a7 100644 --- a/lib/dns/dyndb.c +++ b/lib/dns/dyndb.c @@ -80,7 +80,7 @@ impfind(const char *name) { return (NULL); } -#if HAVE_DLFCN_H +#if HAVE_DLFCN_H && HAVE_DLOPEN static isc_result_t load_symbol(void *handle, const char *filename, const char *symbol_name, void **symbolp) --- a/bin/named/server.c +++ b/bin/named/server.c @@ -1496,6 +1496,7 @@ configure_peer(const cfg_obj_t *cpeer, isc_mem_t *mctx, dns_peer_t **peerp) { return (result); } +#ifdef HAVE_DLOPEN static isc_result_t configure_dyndb(const cfg_obj_t *dyndb, isc_mem_t *mctx, const dns_dyndbctx_t *dctx) @@ -1521,6 +1522,7 @@ configure_dyndb(const cfg_obj_t *dyndb, isc_mem_t *mctx, name, isc_result_totext(result)); return (result); } +#endif static isc_result_t @@ -4669,6 +4671,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, else (void)cfg_map_get(config, "dyndb", &dyndb_list); +#ifdef HAVE_DLOPEN for (element = cfg_list_first(dyndb_list); element != NULL; element = cfg_list_next(element)) @@ -4686,6 +4689,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, CHECK(configure_dyndb(dyndb, mctx, dctx)); } +#endif /* * Setup automatic empty zones. If recursion is off then diff --git a/lib/bind9/check.c b/lib/bind9/check.c index 097dd96..99b995c 100644 --- a/lib/bind9/check.c +++ b/lib/bind9/check.c @@ -2988,6 +2988,9 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions, { const cfg_obj_t *zones = NULL; const cfg_obj_t *keys = NULL; +#ifndef HAVE_DLOPEN + const cfg_obj_t *dyndb = NULL; +#endif const cfg_listelt_t *element, *element2; isc_symtab_t *symtab = NULL; isc_result_t result = ISC_R_SUCCESS; @@ -3041,6 +3044,20 @@ check_viewconf(const cfg_obj_t *config, const cfg_obj_t *voptions, result = ISC_R_FAILURE; } +#ifndef HAVE_DLOPEN + if (voptions != NULL) + (void)cfg_map_get(voptions, "dyndb", &dyndb); + else + (void)cfg_map_get(config, "dyndb", &dyndb); + + if (dyndb != NULL) { + cfg_obj_log(dyndb, logctx, ISC_LOG_ERROR, + "dynamic loading of databases is not supported"); + if (tresult != ISC_R_SUCCESS) + result = ISC_R_NOTIMPLEMENTED; + } +#endif + /* * Check that the response-policy and catalog-zones options * refer to zones that exist. -- 2.9.0