create dns_rdatatype_atcname to split records that can appear along side CNAME from DNSSEC; dns_rdatatype_iszonecutauth allowed too many types
(cherry picked from commit f4ceb12b69)
This commit is contained in:
+4
-2
@@ -796,8 +796,10 @@ static isc_result_t
|
||||
cname_compatibility_action(void *data, dns_rdataset_t *rrset) {
|
||||
UNUSED(data);
|
||||
if (rrset->type != dns_rdatatype_cname &&
|
||||
! dns_rdatatype_isdnssec(rrset->type))
|
||||
! dns_rdatatype_atcname(rrset->type))
|
||||
{
|
||||
return (ISC_R_EXISTS);
|
||||
}
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
@@ -2844,7 +2846,7 @@ update_action(isc_task_t *task, isc_event_t *event) {
|
||||
dns_rdatatype_cname, 0,
|
||||
&flag));
|
||||
if (flag &&
|
||||
! dns_rdatatype_isdnssec(rdata.type))
|
||||
! dns_rdatatype_atcname(rdata.type))
|
||||
{
|
||||
update_log(client, zone,
|
||||
LOGLEVEL_PROTOCOL,
|
||||
|
||||
@@ -586,7 +586,6 @@ dns_rdatatype_isknown(dns_rdatatype_t type);
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
isc_result_t
|
||||
dns_rdata_additionaldata(dns_rdata_t *rdata, dns_additionaldatafunc_t add,
|
||||
void *arg);
|
||||
@@ -679,6 +678,16 @@ dns_rdatatype_atparent(dns_rdatatype_t type);
|
||||
*
|
||||
*/
|
||||
|
||||
bool
|
||||
dns_rdatatype_atcname(dns_rdatatype_t type);
|
||||
/*%<
|
||||
* Return true iff rdata of type 'type' can appear beside a cname.
|
||||
*
|
||||
* Requires:
|
||||
* \li 'type' is a valid rdata type.
|
||||
*
|
||||
*/
|
||||
|
||||
unsigned int
|
||||
dns_rdatatype_attributes(dns_rdatatype_t rdtype);
|
||||
/*%<
|
||||
@@ -707,10 +716,12 @@ dns_rdatatype_attributes(dns_rdatatype_t rdtype);
|
||||
#define DNS_RDATATYPEATTR_UNKNOWN 0x00000040U
|
||||
/*% Is META, and can only be in a question section */
|
||||
#define DNS_RDATATYPEATTR_QUESTIONONLY 0x00000080U
|
||||
/*% is META, and can NOT be in a question section */
|
||||
/*% Is META, and can NOT be in a question section */
|
||||
#define DNS_RDATATYPEATTR_NOTQUESTION 0x00000100U
|
||||
/*% Is present at zone cuts in the parent, not the child */
|
||||
#define DNS_RDATATYPEATTR_ATPARENT 0x00000200U
|
||||
/*% Can exist along side a CNAME */
|
||||
#define DNS_RDATATYPEATTR_ATCNAME 0x00000400U
|
||||
|
||||
dns_rdatatype_t
|
||||
dns_rdata_covers(dns_rdata_t *rdata);
|
||||
|
||||
+11
-2
@@ -2299,6 +2299,14 @@ dns_rdatatype_questiononly(dns_rdatatype_t type) {
|
||||
return (false);
|
||||
}
|
||||
|
||||
bool
|
||||
dns_rdatatype_atcname(dns_rdatatype_t type) {
|
||||
if ((dns_rdatatype_attributes(type) & DNS_RDATATYPEATTR_ATCNAME) != 0) {
|
||||
return (true);
|
||||
}
|
||||
return (false);
|
||||
}
|
||||
|
||||
bool
|
||||
dns_rdatatype_atparent(dns_rdatatype_t type) {
|
||||
if ((dns_rdatatype_attributes(type) & DNS_RDATATYPEATTR_ATPARENT) != 0)
|
||||
@@ -2326,10 +2334,11 @@ dns_rdatatype_isdnssec(dns_rdatatype_t type) {
|
||||
|
||||
bool
|
||||
dns_rdatatype_iszonecutauth(dns_rdatatype_t type) {
|
||||
if ((dns_rdatatype_attributes(type)
|
||||
& (DNS_RDATATYPEATTR_DNSSEC | DNS_RDATATYPEATTR_ZONECUTAUTH))
|
||||
if ((dns_rdatatype_attributes(type) & DNS_RDATATYPEATTR_ZONECUTAUTH)
|
||||
!= 0)
|
||||
{
|
||||
return (true);
|
||||
}
|
||||
return (false);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
#define RDATA_GENERIC_DS_43_C
|
||||
|
||||
#define RRTYPE_DS_ATTRIBUTES \
|
||||
(DNS_RDATATYPEATTR_DNSSEC|DNS_RDATATYPEATTR_ATPARENT)
|
||||
( DNS_RDATATYPEATTR_DNSSEC | DNS_RDATATYPEATTR_ZONECUTAUTH | \
|
||||
DNS_RDATATYPEATTR_ATPARENT )
|
||||
|
||||
#include <isc/sha1.h>
|
||||
#include <isc/sha2.h>
|
||||
|
||||
@@ -16,7 +16,8 @@
|
||||
|
||||
#include <dst/dst.h>
|
||||
|
||||
#define RRTYPE_KEY_ATTRIBUTES (0)
|
||||
#define RRTYPE_KEY_ATTRIBUTES \
|
||||
( DNS_RDATATYPEATTR_ATCNAME | DNS_RDATATYPEATTR_ZONECUTAUTH )
|
||||
|
||||
static inline isc_result_t
|
||||
generic_fromtext_key(ARGS_FROMTEXT) {
|
||||
|
||||
@@ -18,7 +18,9 @@
|
||||
* The attributes do not include DNS_RDATATYPEATTR_SINGLETON
|
||||
* because we must be able to handle a parent/child NSEC pair.
|
||||
*/
|
||||
#define RRTYPE_NSEC_ATTRIBUTES (DNS_RDATATYPEATTR_DNSSEC)
|
||||
#define RRTYPE_NSEC_ATTRIBUTES \
|
||||
( DNS_RDATATYPEATTR_DNSSEC | DNS_RDATATYPEATTR_ZONECUTAUTH | \
|
||||
DNS_RDATATYPEATTR_ATCNAME )
|
||||
|
||||
static inline isc_result_t
|
||||
fromtext_nsec(ARGS_FROMTEXT) {
|
||||
|
||||
@@ -14,7 +14,9 @@
|
||||
#ifndef RDATA_GENERIC_RRSIG_46_C
|
||||
#define RDATA_GENERIC_RRSIG_46_C
|
||||
|
||||
#define RRTYPE_RRSIG_ATTRIBUTES (DNS_RDATATYPEATTR_DNSSEC)
|
||||
#define RRTYPE_RRSIG_ATTRIBUTES \
|
||||
( DNS_RDATATYPEATTR_DNSSEC | DNS_RDATATYPEATTR_ZONECUTAUTH | \
|
||||
DNS_RDATATYPEATTR_ATCNAME )
|
||||
|
||||
static inline isc_result_t
|
||||
fromtext_rrsig(ARGS_FROMTEXT) {
|
||||
|
||||
@@ -865,6 +865,7 @@ dns_rdataslab_merge
|
||||
dns_rdataslab_size
|
||||
dns_rdataslab_subtract
|
||||
dns_rdataslab_tordataset
|
||||
dns_rdatatype_atcname
|
||||
dns_rdatatype_atparent
|
||||
dns_rdatatype_attributes
|
||||
dns_rdatatype_format
|
||||
|
||||
Reference in New Issue
Block a user