[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Fri Oct 28 01:43:04 UTC 2016


The branch, master has been updated
       via  2959c88 provision: Add support for BIND 9.11.x
       via  c8c330d dlz-bind: Add support for BIND 9.11.x
       via  e63e51a dlz-bind: Set DNS_CLIENTINFO_VERSION based on BIND version
       via  370d6ba dlz-bind: Fix initialization of DLZ_DLOPEN_AGE
       via  fbafd26 dlz-bind: Fix preprocessor checks for BIND versions
       via  546f172 ctdb-packaging: Update required tdb version for tdb_storev()
       via  2c736f4 ctdb-tools: Simplify using a local variable
       via  e42648f ctdb-tools: Simplify using tdb_storev
       via  c09567f ctdb-tool: Simplify using tdb_storev
       via  e808021 ctdb-client: Simplify using tdb_storev
       via  25eedf4 ctdb-client: Simplify using a local variable
       via  3c03754 ctdb-daemon: Simplify code using tdb_storev
       via  47298ed ctdb-common: Simplify code using tdb_storev
       via  12fd2dd ctdb-daemon: Simplify code using local variable
       via  eb1b211 ctdb-common: Simplify code using local variables
      from  f7c6268 s3-waf: Add winbindd to its own wscript_build file (already exists)

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 2959c8888d46902e140963ed4190d23a7609b8da
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 27 00:51:03 2016 +1000

    provision: Add support for BIND 9.11.x
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12366
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Fri Oct 28 03:42:25 CEST 2016 on sn-devel-144

commit c8c330d5f4921aaca803b9ff571aacb0dde0c7bc
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 27 00:51:03 2016 +1000

    dlz-bind: Add support for BIND 9.11.x
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12366
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit e63e51a2cfd89c5bb2c16b2521ffce864ca5b373
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 27 01:00:34 2016 +1000

    dlz-bind: Set DNS_CLIENTINFO_VERSION based on BIND version
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12366
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 370d6baaa60ca7aacab85852622cdca8bdb06d34
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 27 00:57:00 2016 +1000

    dlz-bind: Fix initialization of DLZ_DLOPEN_AGE
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12366
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit fbafd2699b03902cbb7e5131ed7d345190798392
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Tue Sep 27 00:52:53 2016 +1000

    dlz-bind: Fix preprocessor checks for BIND versions
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12366
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>

commit 546f1722c95efe597a0eab799cd222aa0e30e929
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Thu Sep 15 16:36:33 2016 +1000

    ctdb-packaging: Update required tdb version for tdb_storev()
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>

commit 2c736f4408c47bdeef9f84da42e4294f5336d69b
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Oct 12 15:46:17 2016 +1100

    ctdb-tools: Simplify using a local variable
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>

commit e42648f977d944e3b33347a2adb109e0d89c91d4
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Oct 12 15:41:25 2016 +1100

    ctdb-tools: Simplify using tdb_storev
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>

commit c09567fe59feb701e523425f6cdaf1736b2795fa
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Oct 12 15:37:47 2016 +1100

    ctdb-tool: Simplify using tdb_storev
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>

commit e80802103bbce81ce7eafe652fa594306f05f306
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Oct 12 15:32:29 2016 +1100

    ctdb-client: Simplify using tdb_storev
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>

commit 25eedf4695da601e59d35b81013c3229407458c3
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Wed Oct 12 15:32:17 2016 +1100

    ctdb-client: Simplify using a local variable
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>

commit 3c037549219c48c54f519ccceb53c692d983b245
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Fri Sep 2 17:53:32 2016 +1000

    ctdb-daemon: Simplify code using tdb_storev
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>

commit 47298ed5ba10273bb5a150e48a106f1a238f8fee
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Fri Sep 2 17:22:26 2016 +1000

    ctdb-common: Simplify code using tdb_storev
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>

commit 12fd2ddc01044e34ff5b38d71972b62ad38725d2
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Fri Sep 2 17:51:36 2016 +1000

    ctdb-daemon: Simplify code using local variable
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>

commit eb1b211c9ef0a93b0f74ba763421872def36bb1c
Author: Amitay Isaacs <amitay at gmail.com>
Date:   Fri Sep 2 17:11:17 2016 +1000

    ctdb-common: Simplify code using local variables
    
    Signed-off-by: Amitay Isaacs <amitay at gmail.com>
    Reviewed-by: Martin Schwenke <martin at meltin.net>

-----------------------------------------------------------------------

Summary of changes:
 ctdb/client/client_db.c            | 34 ++++++++++--------------
 ctdb/common/ctdb_ltdb.c            | 44 +++++++++++++++++--------------
 ctdb/packaging/RPM/ctdb.spec.in    |  2 +-
 ctdb/server/ctdb_ltdb_server.c     | 45 +++++++++++++++++--------------
 ctdb/tools/ctdb.c                  | 22 +++++++---------
 ctdb/tools/ltdbtool.c              | 33 ++++++++++++-----------
 python/samba/provision/sambadns.py |  6 ++++-
 source4/dns_server/dlz_minimal.h   | 54 +++++++++++++++++++++++++++++++-------
 source4/dns_server/wscript_build   | 10 +++++++
 source4/setup/named.conf.dlz       |  3 +++
 10 files changed, 153 insertions(+), 100 deletions(-)


Changeset truncated at 500 lines:

diff --git a/ctdb/client/client_db.c b/ctdb/client/client_db.c
index 794119d..888cfbc3 100644
--- a/ctdb/client/client_db.c
+++ b/ctdb/client/client_db.c
@@ -1046,8 +1046,8 @@ int ctdb_fetch_lock(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
 
 int ctdb_store_record(struct ctdb_record_handle *h, TDB_DATA data)
 {
-	TDB_DATA rec;
-	size_t offset;
+	uint8_t header[sizeof(struct ctdb_ltdb_header)];
+	TDB_DATA rec[2];
 	int ret;
 
 	/* Cannot modify the record if it was obtained as a readonly copy */
@@ -1062,25 +1062,22 @@ int ctdb_store_record(struct ctdb_record_handle *h, TDB_DATA data)
 		return 0;
 	}
 
-	offset = ctdb_ltdb_header_len(&h->header);
-	rec.dsize = offset + data.dsize;
-	rec.dptr = talloc_size(h, rec.dsize);
-	if (rec.dptr == NULL) {
-		return ENOMEM;
-	}
+	ctdb_ltdb_header_push(&h->header, header);
 
-	ctdb_ltdb_header_push(&h->header, rec.dptr);
-	memcpy(rec.dptr + offset, data.dptr, data.dsize);
+	rec[0].dsize = ctdb_ltdb_header_len(&h->header);
+	rec[0].dptr = header;
 
-	ret = tdb_store(h->db->ltdb->tdb, h->key, rec, TDB_REPLACE);
+	rec[1].dsize = data.dsize;
+	rec[1].dptr = data.dptr;
+
+	ret = tdb_storev(h->db->ltdb->tdb, h->key, rec, 2, TDB_REPLACE);
 	if (ret != 0) {
 		DEBUG(DEBUG_ERR,
-		      ("store_record: %s tdb_store failed, %s\n",
+		      ("store_record: %s tdb_storev failed, %s\n",
 		       h->db->db_name, tdb_errorstr(h->db->ltdb->tdb)));
 		return EIO;
 	}
 
-	talloc_free(rec.dptr);
 	return 0;
 }
 
@@ -1098,6 +1095,7 @@ struct tevent_req *ctdb_delete_record_send(TALLOC_CTX *mem_ctx,
 	struct ctdb_delete_record_state *state;
 	struct ctdb_key_data key;
 	struct ctdb_req_control request;
+	uint8_t header[sizeof(struct ctdb_ltdb_header)];
 	TDB_DATA rec;
 	int ret;
 
@@ -1117,16 +1115,12 @@ struct tevent_req *ctdb_delete_record_send(TALLOC_CTX *mem_ctx,
 		return tevent_req_post(req, ev);
 	}
 
-	rec.dsize = ctdb_ltdb_header_len(&h->header);
-	rec.dptr = talloc_size(h, rec.dsize);
-	if (tevent_req_nomem(rec.dptr, req)) {
-		return tevent_req_post(req, ev);
-	}
+	ctdb_ltdb_header_push(&h->header, header);
 
-	ctdb_ltdb_header_push(&h->header, rec.dptr);
+	rec.dsize = ctdb_ltdb_header_len(&h->header);
+	rec.dptr = header;
 
 	ret = tdb_store(h->db->ltdb->tdb, h->key, rec, TDB_REPLACE);
-	talloc_free(rec.dptr);
 	if (ret != 0) {
 		DEBUG(DEBUG_ERR,
 		      ("fetch_lock delete: %s tdb_sore failed, %s\n",
diff --git a/ctdb/common/ctdb_ltdb.c b/ctdb/common/ctdb_ltdb.c
index 6c941d8..d776a79 100644
--- a/ctdb/common/ctdb_ltdb.c
+++ b/ctdb/common/ctdb_ltdb.c
@@ -170,7 +170,8 @@ int ctdb_ltdb_store(struct ctdb_db_context *ctdb_db, TDB_DATA key,
 		    struct ctdb_ltdb_header *header, TDB_DATA data)
 {
 	struct ctdb_context *ctdb = ctdb_db->ctdb;
-	TDB_DATA rec;
+	TDB_DATA rec[2];
+	uint32_t hsize = sizeof(struct ctdb_ltdb_header);
 	int ret;
 	bool seqnum_suppressed = false;
 
@@ -179,22 +180,27 @@ int ctdb_ltdb_store(struct ctdb_db_context *ctdb_db, TDB_DATA key,
 	}
 
 	if (ctdb->flags & CTDB_FLAG_TORTURE) {
+		TDB_DATA old;
 		struct ctdb_ltdb_header *h2;
-		rec = tdb_fetch(ctdb_db->ltdb->tdb, key);
-		h2 = (struct ctdb_ltdb_header *)rec.dptr;
-		if (rec.dptr && rec.dsize >= sizeof(h2) && h2->rsn > header->rsn) {
-			DEBUG(DEBUG_CRIT,("RSN regression! %llu %llu\n",
-				 (unsigned long long)h2->rsn, (unsigned long long)header->rsn));
+
+		old = tdb_fetch(ctdb_db->ltdb->tdb, key);
+		h2 = (struct ctdb_ltdb_header *)old.dptr;
+		if (old.dptr != NULL && old.dsize >= hsize &&
+		    h2->rsn > header->rsn) {
+			DEBUG(DEBUG_ERR,
+			      ("RSN regression! %"PRIu64" %"PRIu64"\n",
+			       h2->rsn, header->rsn));
+		}
+		if (old.dptr != NULL) {
+			free(old.dptr);
 		}
-		if (rec.dptr) free(rec.dptr);
 	}
 
-	rec.dsize = sizeof(*header) + data.dsize;
-	rec.dptr = talloc_size(ctdb, rec.dsize);
-	CTDB_NO_MEMORY(ctdb, rec.dptr);
+	rec[0].dsize = hsize;
+	rec[0].dptr = (uint8_t *)header;
 
-	memcpy(rec.dptr, header, sizeof(*header));
-	memcpy(rec.dptr + sizeof(*header), data.dptr, data.dsize);
+	rec[1].dsize = data.dsize;
+	rec[1].dptr = data.dptr;
 
 	/* Databases with seqnum updates enabled only get their seqnum
 	   changes when/if we modify the data */
@@ -202,16 +208,16 @@ int ctdb_ltdb_store(struct ctdb_db_context *ctdb_db, TDB_DATA key,
 		TDB_DATA old;
 		old = tdb_fetch(ctdb_db->ltdb->tdb, key);
 
-		if ( (old.dsize == rec.dsize)
-		&& !memcmp(old.dptr+sizeof(struct ctdb_ltdb_header),
-			  rec.dptr+sizeof(struct ctdb_ltdb_header),
-			  rec.dsize-sizeof(struct ctdb_ltdb_header)) ) {
+		if ((old.dsize == hsize + data.dsize) &&
+		    memcmp(old.dptr+hsize, data.dptr, data.dsize) == 0) {
 			tdb_remove_flags(ctdb_db->ltdb->tdb, TDB_SEQNUM);
 			seqnum_suppressed = true;
 		}
-		if (old.dptr) free(old.dptr);
+		if (old.dptr != NULL) {
+			free(old.dptr);
+		}
 	}
-	ret = tdb_store(ctdb_db->ltdb->tdb, key, rec, TDB_REPLACE);
+	ret = tdb_storev(ctdb_db->ltdb->tdb, key, rec, 2, TDB_REPLACE);
 	if (ret != 0) {
 		DEBUG(DEBUG_ERR, (__location__ " Failed to store dynamic data\n"));
 	}
@@ -219,8 +225,6 @@ int ctdb_ltdb_store(struct ctdb_db_context *ctdb_db, TDB_DATA key,
 		tdb_add_flags(ctdb_db->ltdb->tdb, TDB_SEQNUM);
 	}
 
-	talloc_free(rec.dptr);
-
 	return ret;
 }
 
diff --git a/ctdb/packaging/RPM/ctdb.spec.in b/ctdb/packaging/RPM/ctdb.spec.in
index aae2c7e..68eddc5 100644
--- a/ctdb/packaging/RPM/ctdb.spec.in
+++ b/ctdb/packaging/RPM/ctdb.spec.in
@@ -38,7 +38,7 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-root
 
 # Required minimum library versions when building with system libraries
 %define libtalloc_version 2.0.8
-%define libtdb_version 1.2.11
+%define libtdb_version 1.3.11
 %define libtevent_version 0.9.16
 
 %if ! %with_included_talloc
diff --git a/ctdb/server/ctdb_ltdb_server.c b/ctdb/server/ctdb_ltdb_server.c
index 8feaff1..8ff9634 100644
--- a/ctdb/server/ctdb_ltdb_server.c
+++ b/ctdb/server/ctdb_ltdb_server.c
@@ -57,7 +57,8 @@ static int ctdb_ltdb_store_server(struct ctdb_db_context *ctdb_db,
 				  TDB_DATA data)
 {
 	struct ctdb_context *ctdb = ctdb_db->ctdb;
-	TDB_DATA rec;
+	TDB_DATA rec[2];
+	uint32_t hsize = sizeof(struct ctdb_ltdb_header);
 	int ret;
 	bool seqnum_suppressed = false;
 	bool keep = false;
@@ -66,14 +67,21 @@ static int ctdb_ltdb_store_server(struct ctdb_db_context *ctdb_db,
 	uint32_t lmaster;
 
 	if (ctdb->flags & CTDB_FLAG_TORTURE) {
+		TDB_DATA old;
 		struct ctdb_ltdb_header *h2;
-		rec = tdb_fetch(ctdb_db->ltdb->tdb, key);
-		h2 = (struct ctdb_ltdb_header *)rec.dptr;
-		if (rec.dptr && rec.dsize >= sizeof(h2) && h2->rsn > header->rsn) {
-			DEBUG(DEBUG_CRIT,("RSN regression! %llu %llu\n",
-				 (unsigned long long)h2->rsn, (unsigned long long)header->rsn));
+
+		old = tdb_fetch(ctdb_db->ltdb->tdb, key);
+		h2 = (struct ctdb_ltdb_header *)old.dptr;
+		if (old.dptr != NULL &&
+		    old.dsize >= hsize &&
+		    h2->rsn > header->rsn) {
+			DEBUG(DEBUG_ERR,
+			      ("RSN regression! %"PRIu64" %"PRIu64"\n",
+			       h2->rsn, header->rsn));
+		}
+		if (old.dptr) {
+			free(old.dptr);
 		}
-		if (rec.dptr) free(rec.dptr);
 	}
 
 	if (ctdb->vnn_map == NULL) {
@@ -178,12 +186,11 @@ store:
 	 */
 	header->flags &= ~CTDB_REC_FLAG_AUTOMATIC;
 
-	rec.dsize = sizeof(*header) + data.dsize;
-	rec.dptr = talloc_size(ctdb, rec.dsize);
-	CTDB_NO_MEMORY(ctdb, rec.dptr);
+	rec[0].dsize = hsize;
+	rec[0].dptr = (uint8_t *)header;
 
-	memcpy(rec.dptr, header, sizeof(*header));
-	memcpy(rec.dptr + sizeof(*header), data.dptr, data.dsize);
+	rec[1].dsize = data.dsize;
+	rec[1].dptr = data.dptr;
 
 	/* Databases with seqnum updates enabled only get their seqnum
 	   changes when/if we modify the data */
@@ -191,14 +198,14 @@ store:
 		TDB_DATA old;
 		old = tdb_fetch(ctdb_db->ltdb->tdb, key);
 
-		if ( (old.dsize == rec.dsize)
-		&& !memcmp(old.dptr+sizeof(struct ctdb_ltdb_header),
-			  rec.dptr+sizeof(struct ctdb_ltdb_header),
-			  rec.dsize-sizeof(struct ctdb_ltdb_header)) ) {
+		if ((old.dsize == hsize + data.dsize) &&
+		    memcmp(old.dptr + hsize, data.dptr, data.dsize) == 0) {
 			tdb_remove_flags(ctdb_db->ltdb->tdb, TDB_SEQNUM);
 			seqnum_suppressed = true;
 		}
-		if (old.dptr) free(old.dptr);
+		if (old.dptr != NULL) {
+			free(old.dptr);
+		}
 	}
 
 	DEBUG(DEBUG_DEBUG, (__location__ " db[%s]: %s record: hash[0x%08x]\n",
@@ -207,7 +214,7 @@ store:
 			    ctdb_hash(&key)));
 
 	if (keep) {
-		ret = tdb_store(ctdb_db->ltdb->tdb, key, rec, TDB_REPLACE);
+		ret = tdb_storev(ctdb_db->ltdb->tdb, key, rec, 2, TDB_REPLACE);
 	} else {
 		ret = tdb_delete(ctdb_db->ltdb->tdb, key);
 	}
@@ -234,8 +241,6 @@ store:
 		tdb_add_flags(ctdb_db->ltdb->tdb, TDB_SEQNUM);
 	}
 
-	talloc_free(rec.dptr);
-
 	if (schedule_for_deletion) {
 		int ret2;
 		ret2 = ctdb_local_schedule_for_deletion(ctdb_db, header, key);
diff --git a/ctdb/tools/ctdb.c b/ctdb/tools/ctdb.c
index 2d61e22..a1024ae 100644
--- a/ctdb/tools/ctdb.c
+++ b/ctdb/tools/ctdb.c
@@ -5457,9 +5457,9 @@ static int control_tstore(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
 			  int argc, const char **argv)
 {
 	struct tdb_context *tdb;
-	TDB_DATA key, data, value;
+	TDB_DATA key, data[2], value;
 	struct ctdb_ltdb_header header;
-	size_t offset;
+	uint8_t header_buf[sizeof(struct ctdb_ltdb_header)];
 	int ret;
 
 	if (argc < 3 || argc > 5) {
@@ -5498,19 +5498,15 @@ static int control_tstore(TALLOC_CTX *mem_ctx, struct ctdb_context *ctdb,
 		header.flags = (uint32_t)atol(argv[5]);
 	}
 
-	offset = ctdb_ltdb_header_len(&header);
-	data.dsize = offset + value.dsize;
-	data.dptr = talloc_size(mem_ctx, data.dsize);
-	if (data.dptr == NULL) {
-		fprintf(stderr, "Memory allocation error\n");
-		tdb_close(tdb);
-		return 1;
-	}
+	ctdb_ltdb_header_push(&header, header_buf);
+
+	data[0].dsize = ctdb_ltdb_header_len(&header);
+	data[0].dptr = header_buf;
 
-	ctdb_ltdb_header_push(&header, data.dptr);
-	memcpy(data.dptr + offset, value.dptr, value.dsize);
+	data[1].dsize = value.dsize;
+	data[1].dptr = value.dptr;
 
-	ret = tdb_store(tdb, key, data, TDB_REPLACE);
+	ret = tdb_storev(tdb, key, data, 2, TDB_REPLACE);
 	if (ret != 0) {
 		fprintf(stderr, "Failed to write record %s to file %s\n",
 			argv[1], argv[0]);
diff --git a/ctdb/tools/ltdbtool.c b/ctdb/tools/ltdbtool.c
index 2352079..e8465b2 100644
--- a/ctdb/tools/ltdbtool.c
+++ b/ctdb/tools/ltdbtool.c
@@ -325,26 +325,27 @@ static int write_record(TDB_CONTEXT* tdb, TDB_DATA key, TDB_DATA val,
 {
 	struct write_record_ctx* ctx
 		= (struct write_record_ctx*)write_record_ctx;
+	int ret;
 
 	if (ctx->hsize == 0) {
-		if (tdb_store(ctx->tdb, key, val, ctx->tdb_store_flags) == -1) {
-			fprintf(stderr, "tdb_store: %s\n", tdb_errorstr(ctx->tdb));
-			return -1;
-		}
+		ret = tdb_store(ctx->tdb, key, val, ctx->tdb_store_flags);
 	} else {
-		TDB_DATA h = {
-			.dptr = (void*)hdr,
-			.dsize = ctx->hsize,
-		};
-		if(tdb_store(ctx->tdb, key, h, ctx->tdb_store_flags) == -1) {
-			fprintf(stderr, "tdb_store: %s\n", tdb_errorstr(ctx->tdb));
-			return -1;
-		}
-		if(tdb_append(ctx->tdb, key, val) == -1) {
-			fprintf(stderr, "tdb_append: %s\n", tdb_errorstr(ctx->tdb));
-			return -1;
-		}
+		TDB_DATA rec[2];
+
+		rec[0].dsize = ctx->hsize;
+		rec[0].dptr = (uint8_t *)hdr;
+
+		rec[1].dsize = val.dsize;
+		rec[1].dptr = val.dptr;
+
+		ret = tdb_storev(ctx->tdb, key, rec, 2, ctx->tdb_store_flags);
 	}
+
+	if (ret == -1) {
+		fprintf(stderr, "tdb_store: %s\n", tdb_errorstr(ctx->tdb));
+		return -1;
+	}
+
 	return 0;
 }
 
diff --git a/python/samba/provision/sambadns.py b/python/samba/provision/sambadns.py
index 67d34e5..df4673b 100644
--- a/python/samba/provision/sambadns.py
+++ b/python/samba/provision/sambadns.py
@@ -923,12 +923,15 @@ def create_named_conf(paths, realm, dnsdomain, dns_backend, logger):
         bind9_8 = '#'
         bind9_9 = '#'
         bind9_10 = '#'
+        bind9_11 = '#'
         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.11') != -1:
+            bind9_11 = ''
         elif bind_info.upper().find('BIND 9.7') != -1:
             raise ProvisioningError("DLZ option incompatible with BIND 9.7.")
         else:
@@ -938,7 +941,8 @@ def create_named_conf(paths, realm, dnsdomain, dns_backend, logger):
                     "MODULESDIR" : samba.param.modules_dir(),
                     "BIND9_8" : bind9_8,
                     "BIND9_9" : bind9_9,
-                    "BIND9_10" : bind9_10
+                    "BIND9_10" : bind9_10,
+                    "BIND9_11" : bind9_11
                     })
 
 
diff --git a/source4/dns_server/dlz_minimal.h b/source4/dns_server/dlz_minimal.h
index 11187f7..89ada7a 100644
--- a/source4/dns_server/dlz_minimal.h
+++ b/source4/dns_server/dlz_minimal.h
@@ -23,15 +23,23 @@
 #ifndef DLZ_MINIMAL_H
 #define DLZ_MINIMAL_H 1
 
-#ifdef BIND_VERSION_9_8
-#define DLZ_DLOPEN_VERSION 1
-#elif BIND_VERSION_9_9
-#define DLZ_DLOPEN_VERSION 2
-#elif BIND_VERSION_9_10
-#define DLZ_DLOPEN_VERSION 3
-#define DLZ_DLOPEN_AGE 0
+#if defined (BIND_VERSION_9_8)
+# define DLZ_DLOPEN_VERSION 1
+#elif defined (BIND_VERSION_9_9)
+# define DLZ_DLOPEN_VERSION 2
+# define DNS_CLIENTINFO_VERSION 1
+#elif defined (BIND_VERSION_9_10)
+# define DLZ_DLOPEN_VERSION 3
+# define DNS_CLIENTINFO_VERSION 1
+#elif defined (BIND_VERSION_9_11)
+# define DLZ_DLOPEN_VERSION 3
+# define DNS_CLIENTINFO_VERSION 2
 #else
-#error Unsupported BIND version
+# error Unsupported BIND version
+#endif
+
+#if DLZ_DLOPEN_VERSION > 1
+# define DLZ_DLOPEN_AGE 0
 #endif
 
 typedef unsigned int isc_result_t;
@@ -94,7 +102,8 @@ typedef struct isc_sockaddr {
 	void *                          link;
 } isc_sockaddr_t;
 
-#define DNS_CLIENTINFO_VERSION 1
+#if DNS_CLIENTINFO_VERSION == 1
+
 typedef struct dns_clientinfo {
 	uint16_t version;
 	void *data;
@@ -111,6 +120,33 @@ typedef struct dns_clientinfomethods {
 	uint16_t age;
 	dns_clientinfo_sourceip_t sourceip;
 } dns_clientinfomethods_t;
+
+#elif DNS_CLIENTINFO_VERSION == 2
+
+typedef struct dns_clientinfo {
+	uint16_t version;
+	void *data;
+	void *dbversion;
+} dns_clientinfo_t;
+
+typedef isc_result_t (*dns_clientinfo_sourceip_t)(dns_clientinfo_t *client,
+						  isc_sockaddr_t **addrp);
+
+typedef isc_result_t (*dns_clientinfo_version_t)(dns_clientinfo_t *client,
+						 void **addrp);
+
+#define DNS_CLIENTINFOMETHODS_VERSION 2
+#define DNS_CLIENTINFOMETHODS_AGE 1
+
+typedef struct dns_clientinfomethods {
+	uint16_t version;
+	uint16_t age;
+	dns_clientinfo_sourceip_t sourceip;
+	dns_clientinfo_version_t dbversion;
+} dns_clientinfomethods_t;
+
+#endif /* DNS_CLIENTINFO_VERSION */
+
 #endif /* DLZ_DLOPEN_VERSION > 1 */
 
 /*
diff --git a/source4/dns_server/wscript_build b/source4/dns_server/wscript_build
index 75f3499..396ed76 100644
--- a/source4/dns_server/wscript_build
+++ b/source4/dns_server/wscript_build
@@ -47,6 +47,16 @@ bld.SAMBA_LIBRARY('dlz_bind9_10',
                   deps='samba-hostconfig samdb-common gensec popt dnsserver_common',
                   enabled=bld.AD_DC_BUILD_IS_ENABLED())
 
+bld.SAMBA_LIBRARY('dlz_bind9_11',
+                  source='dlz_bind9.c',
+                  cflags='-DBIND_VERSION_9_11',
+                  private_library=True,
+                  link_name='modules/bind9/dlz_bind9_11.so',
+                  realname='dlz_bind9_11.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',
diff --git a/source4/setup/named.conf.dlz b/source4/setup/named.conf.dlz
index 460d2ca..215af5a 100644
--- a/source4/setup/named.conf.dlz
+++ b/source4/setup/named.conf.dlz
@@ -18,5 +18,8 @@ dlz "AD DNS Zone" {
 


-- 
Samba Shared Repository



More information about the samba-cvs mailing list