mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
Make the database ownercase modifiable only via addrdataset()
Simplify the implementation around the database ownercase. Remove the dns_rdataset_setownercase() implementation for the slabheaders and only allow setting ownercase on rdatalists and rdatasets. The ownercase in the database can now be set only with dns_db_addrdataset() by passing rdataset with correctly set ownercase.
This commit is contained in:
parent
07378266c3
commit
a8c3661e2b
4 changed files with 5 additions and 35 deletions
|
|
@ -253,13 +253,6 @@ getownercase(dns_rdataset_t *rdataset, dns_name_t *name) {
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
setownercase(dns_rdataset_t *rdataset, const dns_name_t *name) {
|
||||
if (dns_rdataset_isassociated(rdataset)) {
|
||||
dns_rdataset_setownercase(rdataset, name);
|
||||
}
|
||||
}
|
||||
|
||||
static const char *
|
||||
optotext(dns_diffop_t op) {
|
||||
switch (op) {
|
||||
|
|
@ -389,6 +382,7 @@ diff_apply(const dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver,
|
|||
dns_rdataset_init(&rds);
|
||||
dns_rdataset_init(&ardataset);
|
||||
dns_rdatalist_tordataset(&rdl, &rds);
|
||||
dns_rdataset_setownercase(&rds, name);
|
||||
rds.trust = dns_trust_ultimate;
|
||||
|
||||
/*
|
||||
|
|
@ -424,11 +418,6 @@ diff_apply(const dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver,
|
|||
dns_db_setsigningtime(db, &ardataset,
|
||||
resign);
|
||||
}
|
||||
if (op == DNS_DIFFOP_ADD ||
|
||||
op == DNS_DIFFOP_ADDRESIGN)
|
||||
{
|
||||
setownercase(&ardataset, name);
|
||||
}
|
||||
if (op == DNS_DIFFOP_DEL ||
|
||||
op == DNS_DIFFOP_DELRESIGN)
|
||||
{
|
||||
|
|
@ -457,11 +446,6 @@ diff_apply(const dns_diff_t *diff, dns_db_t *db, dns_dbversion_t *ver,
|
|||
"update with no effect",
|
||||
namebuf, classbuf);
|
||||
}
|
||||
if (op == DNS_DIFFOP_ADD ||
|
||||
op == DNS_DIFFOP_ADDRESIGN)
|
||||
{
|
||||
setownercase(&ardataset, name);
|
||||
}
|
||||
if (op == DNS_DIFFOP_DEL ||
|
||||
op == DNS_DIFFOP_DELRESIGN)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -4661,6 +4661,8 @@ qpzone_addrdataset(dns_db_t *db, dns_dbnode_t *dbnode,
|
|||
|
||||
newheader = (dns_slabheader_t *)region.base;
|
||||
dns_slabheader_reset(newheader, (dns_dbnode_t *)node);
|
||||
dns_slabheader_setownercase(newheader, name);
|
||||
|
||||
newheader->ttl = rdataset->ttl;
|
||||
if (rdataset->ttl == 0U) {
|
||||
DNS_SLABHEADER_SETATTR(newheader, DNS_SLABHEADERATTR_ZEROTTL);
|
||||
|
|
|
|||
|
|
@ -74,8 +74,6 @@ rdataset_expire(dns_rdataset_t *rdataset DNS__DB_FLARG);
|
|||
static void
|
||||
rdataset_clearprefetch(dns_rdataset_t *rdataset);
|
||||
static void
|
||||
rdataset_setownercase(dns_rdataset_t *rdataset, const dns_name_t *name);
|
||||
static void
|
||||
rdataset_getownercase(const dns_rdataset_t *rdataset, dns_name_t *name);
|
||||
static dns_slabheader_t *
|
||||
rdataset_getheader(const dns_rdataset_t *rdataset);
|
||||
|
|
@ -92,7 +90,6 @@ dns_rdatasetmethods_t dns_rdataslab_rdatasetmethods = {
|
|||
.settrust = rdataset_settrust,
|
||||
.expire = rdataset_expire,
|
||||
.clearprefetch = rdataset_clearprefetch,
|
||||
.setownercase = rdataset_setownercase,
|
||||
.getownercase = rdataset_getownercase,
|
||||
.getheader = rdataset_getheader,
|
||||
};
|
||||
|
|
@ -1147,20 +1144,6 @@ rdataset_clearprefetch(dns_rdataset_t *rdataset) {
|
|||
dns_db_unlocknode(header->node, isc_rwlocktype_write);
|
||||
}
|
||||
|
||||
static void
|
||||
rdataset_setownercase(dns_rdataset_t *rdataset, const dns_name_t *name) {
|
||||
dns_slabheader_t *header = dns_rdataset_getheader(rdataset);
|
||||
|
||||
/* The case could be set just once for the same header */
|
||||
if (CASESET(header)) {
|
||||
return;
|
||||
}
|
||||
|
||||
dns_db_locknode(header->node, isc_rwlocktype_write);
|
||||
dns_slabheader_setownercase(header, name);
|
||||
dns_db_unlocknode(header->node, isc_rwlocktype_write);
|
||||
}
|
||||
|
||||
static void
|
||||
rdataset_getownercase(const dns_rdataset_t *rdataset, dns_name_t *name) {
|
||||
dns_slabheader_t *header = dns_rdataset_getheader(rdataset);
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@
|
|||
#include <setjmp.h>
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
|
@ -137,7 +138,7 @@ ownercase_test_one(const char *str1, const char *str2) {
|
|||
assert_int_equal(result, ISC_R_SUCCESS);
|
||||
|
||||
/* Store the case from name1 */
|
||||
dns_rdataset_setownercase(&rdataset, name1);
|
||||
dns_slabheader_setownercase(&header, name1);
|
||||
|
||||
assert_true(CASESET(&header));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue