From 6c6f702c4343bd1942bca0b6821e27521f6dc52d Mon Sep 17 00:00:00 2001 From: Petr Menšík Date: Jan 28 2023 17:46:21 +0000 Subject: Fix issues with building againt BIND 9.16.36 Some internal calls have changed. Ensure it still works. --- diff --git a/bind-dyndb-ldap-11.10-bind-9.16.37.patch b/bind-dyndb-ldap-11.10-bind-9.16.37.patch new file mode 100644 index 0000000..d31730e --- /dev/null +++ b/bind-dyndb-ldap-11.10-bind-9.16.37.patch @@ -0,0 +1,108 @@ +From 1989225b9f91f98145f41a9dd4b23331a7b4f941 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 | 7 +++++++ + 4 files changed, 15 insertions(+), 6 deletions(-) + +diff --git a/src/ldap_driver.c b/src/ldap_driver.c +index 5f9e00a..eb19d3e 100644 +--- a/src/ldap_driver.c ++++ b/src/ldap_driver.c +@@ -461,13 +461,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. */ +@@ -510,7 +511,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 97a1859..119975d 100644 +--- a/src/ldap_helper.c ++++ b/src/ldap_helper.c +@@ -2004,7 +2004,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, +@@ -3928,7 +3928,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 7a8555b..affaba4 100644 +--- a/src/util.h ++++ b/src/util.h +@@ -15,9 +15,16 @@ + #include + + #include "log.h" ++#include "dyndb-config.h" + + extern bool verbose_checks; /* from settings.c */ + ++#if LIBDNS_VERSION_MAJOR >= 1810 || (LIBDNS_VERSION_MAJOR >= 1636 && LIBDNS_VERSION_MAJOR < 1800) ++#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.1 + diff --git a/bind-dyndb-ldap.spec b/bind-dyndb-ldap.spec index a4aa673..8ae76de 100644 --- a/bind-dyndb-ldap.spec +++ b/bind-dyndb-ldap.spec @@ -21,6 +21,8 @@ Source0: https://releases.pagure.org/%{name}/%{name}-%{VERSION}.tar.bz2 Source1: https://releases.pagure.org/%{name}/%{name}-%{VERSION}.tar.bz2.asc Patch1: bind-dyndb-ldap-11.9-bind-9.16.17.patch +# https://pagure.io/bind-dyndb-ldap/pull-request/217 +Patch2: bind-dyndb-ldap-11.10-bind-9.16.37.patch BuildRequires: bind-devel >= %{bind_version}, bind-lite-devel >= %{bind_version} BuildRequires: krb5-devel