]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4530. [bug] "dyndb" is dependent on dlopen existing / being
authorMark Andrews <marka@isc.org>
Tue, 30 May 2017 01:34:37 +0000 (11:34 +1000)
committerMark Andrews <marka@isc.org>
Tue, 30 May 2017 01:34:37 +0000 (11:34 +1000)
                        enabled. [RT #45291]

bin/named/server.c
lib/bind9/check.c

index 30d54ff8d2ef4f49a65200ed6258a87b38de89b8..97708a514ac2c438f0944ad06a41b2812b9942bf 100644 (file)
@@ -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
index 097dd96a0be7793623c5769db43e7c9856f2374b..99b995c245a55ec94c09f5f1554bcf1eea7e37b0 100644 (file)
@@ -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.