* or we can determine whether there is data or not at the name.
* If the name does not exist return the wildcard name.
*
+ * Return DNS_R_DNAME when the NSEC indicates that name is covered by
+ * a DNAME. 'wild' is not set in this case.
+ *
* Return ISC_R_IGNORE when the NSEC is not the appropriate one.
*/
}
if (relation == dns_namereln_subdomain &&
- (dns_nsec_typepresent(&rdata, dns_rdatatype_dname) ||
- dns_nsec_typepresent(&rdata, dns_rdatatype_ns)) &&
+ dns_nsec_typepresent(&rdata, dns_rdatatype_ns) &&
!dns_nsec_typepresent(&rdata, dns_rdatatype_soa))
{
/*
return (ISC_R_IGNORE);
}
+ if (relation == dns_namereln_subdomain &&
+ dns_nsec_typepresent(&rdata, dns_rdatatype_dname))
+ {
+ (*logit)(arg, ISC_LOG_DEBUG(3),
+ "nsec proves covered by dname");
+ *exists = ISC_FALSE;
+ return (DNS_R_DNAME);
+ }
+
result = dns_rdata_tostruct(&rdata, &nsec, NULL);
if (result != ISC_R_SUCCESS)
return (result);