s4-dns: Add support for BIND 9.10
authorAmitay Isaacs <amitay@gmail.com>
Mon, 20 Oct 2014 05:32:42 +0000 (16:32 +1100)
committerAmitay Isaacs <amitay@samba.org>
Sat, 25 Oct 2014 03:42:19 +0000 (05:42 +0200)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Matthieu Patou <mat@matws.net>
Autobuild-User(master): Amitay Isaacs <amitay@samba.org>
Autobuild-Date(master): Sat Oct 25 05:42:19 CEST 2014 on sn-devel-104

python/samba/provision/sambadns.py
source4/dns_server/dlz_bind9.c
source4/dns_server/wscript_build
source4/setup/named.conf.dlz

index 1ab8f4e30359b190d39258bb61ddc75886f726d6..b5639324b45e4af63ea0b4e53ae60b8ee1bba5df 100644 (file)
@@ -921,10 +921,13 @@ def create_named_conf(paths, realm, dnsdomain, dns_backend, logger):
                                      cwd='.').communicate()[0]
         bind9_8 = '#'
         bind9_9 = '#'
+        bind9_10 = '#'
         if bind_info.upper().find('BIND 9.8') != -1:
             bind9_8 = ''
         elif bind_info.upper().find('BIND 9.9') != -1:
             bind9_9 = ''
+        elif bind_info.upper().find('BIND 9.10') != -1:
+            bind9_10 = ''
         elif bind_info.upper().find('BIND 9.7') != -1:
             raise ProvisioningError("DLZ option incompatible with BIND 9.7.")
         else:
@@ -933,7 +936,8 @@ def create_named_conf(paths, realm, dnsdomain, dns_backend, logger):
                     "NAMED_CONF": paths.namedconf,
                     "MODULESDIR" : samba.param.modules_dir(),
                     "BIND9_8" : bind9_8,
-                    "BIND9_9" : bind9_9
+                    "BIND9_9" : bind9_9,
+                    "BIND9_10" : bind9_10
                     })
 
 
index 29788dc768a19975b0b9adee691317c7effd12ef..d43b40478a6ee95b6146a49759265b78856e6cee 100644 (file)
@@ -792,7 +792,13 @@ static isc_result_t b9_find_name_dn(struct dlz_bind9_data *state, const char *na
 /*
   see if we handle a given zone
  */
+#if DLZ_DLOPEN_VERSION < 3
 _PUBLIC_ isc_result_t dlz_findzonedb(void *dbdata, const char *name)
+#else
+_PUBLIC_ isc_result_t dlz_findzonedb(void *dbdata, const char *name,
+                                    dns_clientinfomethods_t *methods,
+                                    dns_clientinfo_t *clientinfo)
+#endif
 {
        struct dlz_bind9_data *state = talloc_get_type_abort(dbdata, struct dlz_bind9_data);
        return b9_find_zone_dn(state, name, NULL, NULL);
@@ -874,7 +880,9 @@ _PUBLIC_ isc_result_t dlz_lookup(const char *zone, const char *name,
 _PUBLIC_ isc_result_t dlz_allowzonexfr(void *dbdata, const char *name, const char *client)
 {
        /* just say yes for all our zones for now */
-       return dlz_findzonedb(dbdata, name);
+       struct dlz_bind9_data *state = talloc_get_type(
+               dbdata, struct dlz_bind9_data);
+       return b9_find_zone_dn(state, name, NULL, NULL);
 }
 
 /*
@@ -1116,7 +1124,12 @@ static bool b9_zone_exists(struct dlz_bind9_data *state, const char *name)
 /*
   configure a writeable zone
  */
+#if DLZ_DLOPEN_VERSION < 3
 _PUBLIC_ isc_result_t dlz_configure(dns_view_t *view, void *dbdata)
+#else
+_PUBLIC_ isc_result_t dlz_configure(dns_view_t *view, dns_dlzdb_t *dlzdb,
+                                   void *dbdata)
+#endif
 {
        struct dlz_bind9_data *state = talloc_get_type_abort(dbdata, struct dlz_bind9_data);
        TALLOC_CTX *tmp_ctx;
@@ -1187,7 +1200,11 @@ _PUBLIC_ isc_result_t dlz_configure(dns_view_t *view, void *dbdata)
                                return ISC_R_NOMEMORY;
                        }
 
+#if DLZ_DLOPEN_VERSION < 3
                        result = state->writeable_zone(view, zone);
+#else
+                       result = state->writeable_zone(view, dlzdb, zone);
+#endif
                        if (result != ISC_R_SUCCESS) {
                                state->log(ISC_LOG_ERROR, "samba_dlz: Failed to configure zone '%s'",
                                           zone);
index a92ab67a40fd38832f4c9cbb88bc51a9970f9f8d..803ca62e6f8723c16edc5ea78b427d6f8ef3fee0 100644 (file)
@@ -37,6 +37,16 @@ bld.SAMBA_LIBRARY('dlz_bind9_9',
                   deps='samba-hostconfig samdb-common gensec popt dnsserver_common',
                   enabled=bld.AD_DC_BUILD_IS_ENABLED())
 
+bld.SAMBA_LIBRARY('dlz_bind9_10',
+                  source='dlz_bind9.c',
+                  cflags='-DBIND_VERSION_9_10',
+                  private_library=True,
+                  link_name='modules/bind9/dlz_bind9_10.so',
+                  realname='dlz_bind9_10.so',
+                  install_path='${MODULESDIR}/bind9',
+                  deps='samba-hostconfig samdb-common gensec popt dnsserver_common',
+                  enabled=bld.AD_DC_BUILD_IS_ENABLED())
+
 bld.SAMBA_LIBRARY('dlz_bind9_for_torture',
                   source='dlz_bind9.c',
                   cflags='-DBIND_VERSION_9_8',
index 2b884e9718b7788e3d6bc25e74a9101dd9382b93..460d2ca6420fd718de9230809bb3afe4c5d81f26 100644 (file)
@@ -15,5 +15,8 @@ dlz "AD DNS Zone" {
 
     # For BIND 9.9.x
     ${BIND9_9} database "dlopen ${MODULESDIR}/bind9/dlz_bind9_9.so";
+
+    # For BIND 9.10.x
+    ${BIND9_10} database "dlopen ${MODULESDIR}/bind9/dlz_bind9_10.so";
 };