mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 04:50:01 -04:00
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:
parent
0683d76025
commit
1aa0768151
5 changed files with 21 additions and 16 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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'.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Reference in a new issue