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 <ami...@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 <ami...@gmail.com> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri Oct 28 03:42:25 CEST 2016 on sn-devel-144 commit c8c330d5f4921aaca803b9ff571aacb0dde0c7bc Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit e63e51a2cfd89c5bb2c16b2521ffce864ca5b373 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit 370d6baaa60ca7aacab85852622cdca8bdb06d34 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit fbafd2699b03902cbb7e5131ed7d345190798392 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> Reviewed-by: Jeremy Allison <j...@samba.org> commit 546f1722c95efe597a0eab799cd222aa0e30e929 Author: Amitay Isaacs <ami...@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 <ami...@gmail.com> commit 2c736f4408c47bdeef9f84da42e4294f5336d69b Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Oct 12 15:46:17 2016 +1100 ctdb-tools: Simplify using a local variable Signed-off-by: Amitay Isaacs <ami...@gmail.com> commit e42648f977d944e3b33347a2adb109e0d89c91d4 Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Oct 12 15:41:25 2016 +1100 ctdb-tools: Simplify using tdb_storev Signed-off-by: Amitay Isaacs <ami...@gmail.com> commit c09567fe59feb701e523425f6cdaf1736b2795fa Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Oct 12 15:37:47 2016 +1100 ctdb-tool: Simplify using tdb_storev Signed-off-by: Amitay Isaacs <ami...@gmail.com> commit e80802103bbce81ce7eafe652fa594306f05f306 Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Oct 12 15:32:29 2016 +1100 ctdb-client: Simplify using tdb_storev Signed-off-by: Amitay Isaacs <ami...@gmail.com> commit 25eedf4695da601e59d35b81013c3229407458c3 Author: Amitay Isaacs <ami...@gmail.com> Date: Wed Oct 12 15:32:17 2016 +1100 ctdb-client: Simplify using a local variable Signed-off-by: Amitay Isaacs <ami...@gmail.com> commit 3c037549219c48c54f519ccceb53c692d983b245 Author: Amitay Isaacs <ami...@gmail.com> Date: Fri Sep 2 17:53:32 2016 +1000 ctdb-daemon: Simplify code using tdb_storev Signed-off-by: Amitay Isaacs <ami...@gmail.com> commit 47298ed5ba10273bb5a150e48a106f1a238f8fee Author: Amitay Isaacs <ami...@gmail.com> Date: Fri Sep 2 17:22:26 2016 +1000 ctdb-common: Simplify code using tdb_storev Signed-off-by: Amitay Isaacs <ami...@gmail.com> commit 12fd2ddc01044e34ff5b38d71972b62ad38725d2 Author: Amitay Isaacs <ami...@gmail.com> Date: Fri Sep 2 17:51:36 2016 +1000 ctdb-daemon: Simplify code using local variable Signed-off-by: Amitay Isaacs <ami...@gmail.com> commit eb1b211c9ef0a93b0f74ba763421872def36bb1c Author: Amitay Isaacs <ami...@gmail.com> Date: Fri Sep 2 17:11:17 2016 +1000 ctdb-common: Simplify code using local variables Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@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