From 5dd2fefa0bc7cd7689004cec64304c3a02be9eab Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Thu, 12 Jan 2023 13:25:10 +0200 Subject: [PATCH] Support bind 9.18.10 or later dns_db_allrdatasets() gained a new parameter. Adopt the code to allow injecting 0 options if building against 9.18.10. Fixes: https://pagure.io/bind-dyndb-ldap/issue/216 Signed-off-by: Alexander Bokovoy --- src/ldap_driver.c | 7 ++++--- src/ldap_helper.c | 4 ++-- src/metadb.c | 3 ++- src/util.h | 6 ++++++ 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/ldap_driver.c b/src/ldap_driver.c index 7367493..e4aeeb2 100644 --- a/src/ldap_driver.c +++ b/src/ldap_driver.c @@ -465,13 +465,14 @@ findrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, static isc_result_t allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, - isc_stdtime_t now, dns_rdatasetiter_t **iteratorp) + DNS_DB_ALLRDATASETS_OPTIONS(unsigned int options, isc_stdtime_t now), + dns_rdatasetiter_t **iteratorp) { ldapdb_t *ldapdb = (ldapdb_t *) db; REQUIRE(VALID_LDAPDB(ldapdb)); - return dns_db_allrdatasets(ldapdb->rbtdb, node, version, now, iteratorp); + return dns_db_allrdatasets(ldapdb->rbtdb, node, version, DNS_DB_ALLRDATASETS_OPTIONS(options, now), iteratorp); } /* TODO: Add 'tainted' flag to the LDAP instance if something went wrong. */ @@ -514,7 +515,7 @@ node_isempty(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version, CHECK(ldapdb_name_fromnode(node, dns_fixedname_initname(&fname))); - result = dns_db_allrdatasets(db, node, version, now, &rds_iter); + result = dns_db_allrdatasets(db, node, version, DNS_DB_ALLRDATASETS_OPTIONS(0, now), &rds_iter); if (result == ISC_R_NOTFOUND) { *isempty = true; } else if (result == ISC_R_SUCCESS) { diff --git a/src/ldap_helper.c b/src/ldap_helper.c index 7ea3df9..7ac3d91 100644 --- a/src/ldap_helper.c +++ b/src/ldap_helper.c @@ -2005,7 +2005,7 @@ zone_sync_apex(const ldap_instance_t * const inst, zone_settings, &rdatalist)); CHECK(dns_db_getoriginnode(rbtdb, &node)); - result = dns_db_allrdatasets(rbtdb, node, version, 0, + result = dns_db_allrdatasets(rbtdb, node, version, DNS_DB_ALLRDATASETS_OPTIONS(0, 0), &rbt_rds_iterator); if (result == ISC_R_SUCCESS) { CHECK(diff_ldap_rbtdb(inst->mctx, &name, &rdatalist, @@ -3929,7 +3929,7 @@ update_restart: CHECK(dns_db_newversion(ldapdb, &version)); CHECK(dns_db_findnode(rbtdb, &entry->fqdn, true, &node)); - result = dns_db_allrdatasets(rbtdb, node, version, 0, &rbt_rds_iterator); + result = dns_db_allrdatasets(rbtdb, node, version, DNS_DB_ALLRDATASETS_OPTIONS(0, 0), &rbt_rds_iterator); if (result != ISC_R_SUCCESS && result != ISC_R_NOTFOUND) goto cleanup; diff --git a/src/metadb.c b/src/metadb.c index f469a30..276de24 100644 --- a/src/metadb.c +++ b/src/metadb.c @@ -217,7 +217,8 @@ metadb_node_delete(metadb_node_t **nodep) { node = *nodep; dns_rdataset_init(&rdataset); - CHECK(dns_db_allrdatasets(node->rbtdb, node->dbnode, node->version, 0, + CHECK(dns_db_allrdatasets(node->rbtdb, node->dbnode, node->version, + DNS_DB_ALLRDATASETS_OPTIONS(0, 0), &iter)); for (result = dns_rdatasetiter_first(iter); diff --git a/src/util.h b/src/util.h index 5088ff3..e4620ff 100644 --- a/src/util.h +++ b/src/util.h @@ -29,6 +29,12 @@ extern bool verbose_checks; /* from settings.c */ #define dns_name_copynf(src, dst) dns_name_copy((src), (dst)) #endif +#if LIBDNS_VERSION_MAJOR >= 1810 +#define DNS_DB_ALLRDATASETS_OPTIONS(options, tstamp) options, tstamp +#else +#define DNS_DB_ALLRDATASETS_OPTIONS(options, tstamp) tstamp +#endif + #define CLEANUP_WITH(result_code) \ do { \ result = (result_code); \ -- 2.39.0