isc_throw(AddError, "multiple RRs of singleton type for "
<< rrset->getName());
}
+ // NSEC3PARAM is not a "singleton" per protocol, but this
+ // implementation doesn't request it be so at the moment.
+ if (rrset->getType() == RRType::NSEC3PARAM() &&
+ rrset->getRdataCount() > 1) {
+ isc_throw(AddError, "Multiple NSEC3PARAM RDATA is given for "
+ << rrset->getName() << " which isn't supported");
+ }
NameComparisonResult compare(origin_.compare(rrset->getName()));
if (compare.getRelation() != NameComparisonResult::SUPERDOMAIN &&
InMemoryZoneFinder::AddError);
}
+TEST_F(InMemoryZoneFinderTest, multiNSEC3PARAM) {
+ // In this current implementation multiple NSEC3PARAM isn't supported.
+ RRsetPtr nsec3param(new RRset(Name("example.org"), RRClass::IN(),
+ RRType::NSEC3PARAM(), RRTTL(300)));
+ nsec3param->addRdata(generic::NSEC3PARAM("1 0 12 aabbccdd"));
+ nsec3param->addRdata(generic::NSEC3PARAM("1 1 1 ddccbbaa"));
+ EXPECT_THROW(zone_finder_.add(nsec3param), InMemoryZoneFinder::AddError);
+}
+
// TODO
// - parameter consistency
// - existence of NSEC3PARAM