diff --git a/lib/dns/include/dns/rdatavec.h b/lib/dns/include/dns/rdatavec.h index f7ba2e1a26..b92f676274 100644 --- a/lib/dns/include/dns/rdatavec.h +++ b/lib/dns/include/dns/rdatavec.h @@ -81,18 +81,24 @@ struct dns_vecheader { _Atomic(uint16_t) attributes; _Atomic(dns_trust_t) trust; + /*% + * Locked by the heap lock. Can't be packed together with other fields + * since it is protected by a different lock. + */ + unsigned int heap_index; + /*% * Locked by the owning node's lock. */ - uint16_t resign_lsb : 1; - unsigned int heap_index : 31; uint32_t serial; dns_ttl_t ttl; dns_typepair_t typepair; - /* resigning (zone). The lsb is not adjacent for struct packing reasons + /* + * resigning (zone). */ isc_stdtime_t resign; + uint16_t resign_lsb : 1; /*% * Link to the other versions of this rdataset. diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index 9cd5c77c62..afb530ef8a 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -1840,14 +1840,14 @@ add(qpzonedb_t *qpdb, qpznode_t *node, const dns_name_t *nodename, result = ISC_R_SUCCESS; if ((options & DNS_DBADD_EXACT) != 0) { - flags |= DNS_RDATASLAB_EXACT; + flags |= DNS_RDATAVEC_EXACT; } if ((options & DNS_DBADD_EXACTTTL) != 0 && newheader->ttl != header->ttl) { result = DNS_R_NOTEXACT; } else if (newheader->ttl != header->ttl) { - flags |= DNS_RDATASLAB_FORCE; + flags |= DNS_RDATAVEC_FORCE; } if (result == ISC_R_SUCCESS) { result = dns_rdatavec_merge( @@ -4943,7 +4943,7 @@ qpzone_subtractrdataset(dns_db_t *db, dns_dbnode_t *dbnode, subresult = NULL; result = ISC_R_SUCCESS; if ((options & DNS_DBSUB_EXACT) != 0) { - flags |= DNS_RDATASLAB_EXACT; + flags |= DNS_RDATAVEC_EXACT; if (newheader->ttl != header->ttl) { result = DNS_R_NOTEXACT; }