[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