16 #include <boost/bind.hpp>
17 #include <boost/scoped_ptr.hpp>
33 using namespace boost;
46 const NameComparisonResult cmp_result =
47 rrset->getName().compare(*origin);
48 if (cmp_result.getRelation() != NameComparisonResult::EQUAL &&
49 cmp_result.getRelation() != NameComparisonResult::SUBDOMAIN) {
50 isc_throw(MasterLoadError,
"Out-of-zone data for " << *origin
51 <<
"/" << rrset->getClass() <<
": " << rrset->getName());
53 if (rrset->getType() == RRType::SOA() &&
54 cmp_result.getRelation() != NameComparisonResult::EQUAL) {
55 isc_throw(MasterLoadError,
"SOA not at top of zone: "
62 template <
typename InputType>
64 loadHelper(InputType input,
const Name& origin,
67 RRCollator rr_collator(boost::bind(callbackWrapper, _1,
69 MasterLoader loader(input, origin, zone_class,
70 MasterLoaderCallbacks::getNullCallbacks(),
71 rr_collator.getCallback());
74 }
catch (
const MasterLoaderError& ex) {
85 if ((filename == NULL) || (*filename ==
'\0')) {
89 loadHelper<const char*>(filename, origin, zone_class, callback);
96 loadHelper<istream&>(input, origin, zone_class, callback);