[svn] commit: r3511 - in /branches/trac408/src/lib/nsas: nameserver_address_store.cc tests/nameserver_address_store_unittest.cc
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Nov 12 19:36:08 UTC 2010
Author: vorner
Date: Fri Nov 12 19:36:08 2010
New Revision: 3511
Log:
Feed nameservers into a list
Modified:
branches/trac408/src/lib/nsas/nameserver_address_store.cc
branches/trac408/src/lib/nsas/tests/nameserver_address_store_unittest.cc
Modified: branches/trac408/src/lib/nsas/nameserver_address_store.cc
==============================================================================
--- branches/trac408/src/lib/nsas/nameserver_address_store.cc (original)
+++ branches/trac408/src/lib/nsas/nameserver_address_store.cc Fri Nov 12 19:36:08 2010
@@ -17,6 +17,7 @@
#include <boost/shared_ptr.hpp>
#include <config.h>
+#include <dns/rdataclass.h>
#include "hash_deleter.h"
#include "nsas_entry_compare.h"
@@ -57,8 +58,8 @@
// One function to call new on both ZoneEntry and NameserverEntry
template<class T>
shared_ptr<T>
-newT(const std::string& zone, uint16_t class_code) {
- return (shared_ptr<T>(new T(zone, class_code)));
+newT(const std::string& name, uint16_t class_code) {
+ return (shared_ptr<T>(new T(name, class_code)));
}
}
@@ -91,6 +92,18 @@
isc_throw(NotNS, "Authority section with non-NS RR type: " <<
authority.getType().toText());
}
+ // Make sure the name servers exist
+ RdataIteratorPtr ns(authority.getRdataIterator());
+ for (ns->first(); !ns->isLast(); ns->next()) {
+ Name nsName(dynamic_cast<const rdata::generic::NS&>(
+ ns->getCurrent()).getNSName());
+ pair<bool, NameserverPtr> ns_lookup(
+ nameserver_hash_.getOrAdd(HashKey(nsName.toText(), class_code),
+ bind(newT<NameserverEntry>, nsName.toText(), class_code)));
+ if (ns_lookup.first) { // Is it a new nameserver?
+ // TODO Fill in the values from additional section
+ }
+ }
} else { // Was already here
zone_lru_.touch(zone_ptr);
// TODO Do we update the TTL and nameservers here?
@@ -100,7 +113,7 @@
}
void NameserverAddressStore::processZone(ZonePtr) {
-
+
}
} // namespace nsas
Modified: branches/trac408/src/lib/nsas/tests/nameserver_address_store_unittest.cc
==============================================================================
--- branches/trac408/src/lib/nsas/tests/nameserver_address_store_unittest.cc (original)
+++ branches/trac408/src/lib/nsas/tests/nameserver_address_store_unittest.cc Fri Nov 12 19:36:08 2010
@@ -103,7 +103,7 @@
}
// A nameserver serving data
- authority_->addRdata(rdata::generic::NS(Name("ns.example.com.")));
+ authority_->addRdata(ConstRdataPtr(new rdata::generic::NS(Name("ns.example.com."))));
// This is reused because of convenience, clear it just in case
NSASCallback::results.clear();
More information about the bind10-changes
mailing list