Refactor setsigningtime

Change setsigningtime to take the node of the header being changed.
Done to facilitate further refactoring that will remove the header
pointer from vecheader.
This commit is contained in:
Alessio Podda 2025-12-18 00:54:24 +01:00
parent 0683d76025
commit 1aa0768151
5 changed files with 21 additions and 16 deletions

View 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

View 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;
}

View 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:

View 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'.
*

View 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: