]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Refactor setsigningtime
authorAlessio Podda <alessio@isc.org>
Wed, 17 Dec 2025 23:54:24 +0000 (00:54 +0100)
committerAlessio Podda <alessio@isc.org>
Tue, 31 Mar 2026 14:22:56 +0000 (16:22 +0200)
Change setsigningtime to take the node of the header being changed.
Done to facilitate further refactoring that will remove the header
pointer from vecheader.

bin/tests/system/dyndb/driver/db.c
lib/dns/db.c
lib/dns/diff.c
lib/dns/include/dns/db.h
lib/dns/qpzone.c

index 0db774af880fedb45a0183eaf3aa8bd4fbb8c07b..57c2e5de7280853299f99f0970f5f5d23a94b277 100644 (file)
@@ -276,12 +276,13 @@ findnsec3node(dns_db_t *db, const dns_name_t *name, bool create,
 }
 
 static isc_result_t
-setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, isc_stdtime_t resign) {
+setsigningtime(dns_db_t *db, dns_dbnode_t *node, dns_rdataset_t *rdataset,
+              isc_stdtime_t resign) {
        sampledb_t *sampledb = (sampledb_t *)db;
 
        REQUIRE(VALID_SAMPLEDB(sampledb));
 
-       return dns_db_setsigningtime(sampledb->db, rdataset, resign);
+       return dns_db_setsigningtime(sampledb->db, node, rdataset, resign);
 }
 
 static isc_result_t
index 2cbf50c2dac361f5a1e22d019411d94f42066ed9..e86e1cba2b92fd8b7f49c24f9b631b10ba13c9b2 100644 (file)
@@ -875,10 +875,11 @@ dns_db_getsize(dns_db_t *db, dns_dbversion_t *version, uint64_t *records,
 }
 
 isc_result_t
-dns_db_setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset,
-                     isc_stdtime_t resign) {
+dns_db_setsigningtime(dns_db_t *db, dns_dbnode_t *node,
+                     dns_rdataset_t *rdataset, isc_stdtime_t resign) {
        if (db->methods->setsigningtime != NULL) {
-               return (db->methods->setsigningtime)(db, rdataset, resign);
+               return (db->methods->setsigningtime)(db, node, rdataset,
+                                                    resign);
        }
        return ISC_R_NOTIMPLEMENTED;
 }
index 97ab6db7b2c42489e1ddb19bf188ff073ebf3c2b..4e9ea0c494073f7ac5eefd97e73594f61d1d7555 100644 (file)
@@ -264,7 +264,7 @@ update_rdataset(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
        if (is_resign) {
                isc_stdtime_t resign;
                resign = dns_rdataset_minresign(&ardataset);
-               dns_db_setsigningtime(db, &ardataset, resign);
+               dns_db_setsigningtime(db, node, &ardataset, resign);
        }
 
 cleanup:
index 72c735a39a84b29fa21ae567b0b765f3a5b9294f..b73c3b12b4e725391ae9ddaa65db3c6552adc7b9 100644 (file)
@@ -139,8 +139,9 @@ typedef struct dns_db_methods {
        isc_result_t (*findnsec3node)(dns_db_t *db, const dns_name_t *name,
                                      bool                 create,
                                      dns_dbnode_t **nodep DNS__DB_FLARG);
-       isc_result_t (*setsigningtime)(dns_db_t *db, dns_rdataset_t *rdataset,
-                                      isc_stdtime_t resign);
+       isc_result_t (*setsigningtime)(dns_db_t *db, dns_dbnode_t *node,
+                                      dns_rdataset_t *rdataset,
+                                      isc_stdtime_t   resign);
        isc_result_t (*getsigningtime)(dns_db_t *db, isc_stdtime_t *resign,
                                       dns_name_t     *name,
                                       dns_typepair_t *typepair);
@@ -1572,8 +1573,8 @@ dns__db_findnsec3node(dns_db_t *db, const dns_name_t *name, bool create,
  */
 
 isc_result_t
-dns_db_setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset,
-                     isc_stdtime_t resign);
+dns_db_setsigningtime(dns_db_t *db, dns_dbnode_t *node,
+                     dns_rdataset_t *rdataset, isc_stdtime_t resign);
 /*%<
  * Sets the re-signing time associated with 'rdataset' to 'resign'.
  *
index 6c022c6a07c3b7788e1f1b2ababab2454acfb4ab..0dce5ffb69ed296596982a888d66a40a503a0d79 100644 (file)
@@ -2308,7 +2308,8 @@ getsize(dns_db_t *db, dns_dbversion_t *dbversion, uint64_t *records,
 }
 
 static isc_result_t
-setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, isc_stdtime_t resign) {
+setsigningtime(dns_db_t *db, dns_dbnode_t *node, dns_rdataset_t *rdataset,
+              isc_stdtime_t resign) {
        qpzonedb_t *qpdb = (qpzonedb_t *)db;
        dns_vecheader_t *header = NULL, oldheader;
        isc_rwlocktype_t nlocktype = isc_rwlocktype_none;
@@ -2320,7 +2321,7 @@ setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, isc_stdtime_t resign) {
 
        header = dns_vecheader_getheader(rdataset);
 
-       nlock = qpzone_get_lock(HEADERNODE(header));
+       nlock = qpzone_get_lock((qpznode_t *)node);
        NODE_WRLOCK(nlock, &nlocktype);
 
        oldheader = *header;
@@ -2339,14 +2340,14 @@ setsigningtime(dns_db_t *db, dns_rdataset_t *rdataset, isc_stdtime_t resign) {
                INSIST(RESIGN(header));
                LOCK(get_heap_lock(header));
                if (resign == 0) {
-                       isc_heap_delete(HEADERNODE(header)->heap->heap,
+                       isc_heap_delete(((qpznode_t *)node)->heap->heap,
                                        header->heap_index);
                        header->heap_index = 0;
                } else if (resign_sooner(header, &oldheader)) {
-                       isc_heap_increased(HEADERNODE(header)->heap->heap,
+                       isc_heap_increased(((qpznode_t *)node)->heap->heap,
                                           header->heap_index);
                } else if (resign_sooner(&oldheader, header)) {
-                       isc_heap_decreased(HEADERNODE(header)->heap->heap,
+                       isc_heap_decreased(((qpznode_t *)node)->heap->heap,
                                           header->heap_index);
                }
                UNLOCK(get_heap_lock(header));
@@ -5450,7 +5451,8 @@ qpzone_update_rdataset(qpzonedb_t *qpdb, qpz_version_t *version, dns_qp_t *qp,
        if (result == ISC_R_SUCCESS && is_resign) {
                isc_stdtime_t resign;
                resign = dns_rdataset_minresign(&ardataset);
-               dns_db_setsigningtime((dns_db_t *)qpdb, &ardataset, resign);
+               dns_db_setsigningtime((dns_db_t *)qpdb, (dns_dbnode_t *)node,
+                                     &ardataset, resign);
        }
 
 failure: