]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2108] Add ZoneTable::setZoneData()
authorMukund Sivaraman <muks@isc.org>
Mon, 3 Sep 2012 08:24:51 +0000 (13:54 +0530)
committerMukund Sivaraman <muks@isc.org>
Mon, 3 Sep 2012 08:24:51 +0000 (13:54 +0530)
src/lib/datasrc/memory/zone_table.cc
src/lib/datasrc/memory/zone_table.h

index f9b2768e8d2ea228567b3103012967d035682aab..f2cddc0463beb6ce4b78f791006b82f2334bc74b 100644 (file)
@@ -132,6 +132,21 @@ ZoneTable::findZone(const Name& name) const {
     return (FindResult(my_result, node->getData()));
 }
 
+ZoneData*
+ZoneTable::setZoneData(const Name& name, ZoneData* data)
+{
+    ZoneTableNode* node(NULL);
+
+    ZoneTableTree::Result result(zones_->find(name, &node));
+
+    if ((result != ZoneTableTree::EXACTMATCH) &&
+        (result != ZoneTableTree::PARTIALMATCH)) {
+        return (NULL);
+    }
+
+    return (node->setData(data));
+}
+
 } // end of namespace memory
 } // end of namespace datasrc
 } // end of namespace isc
index 2faf606dff90b34ab34ee9ef5ff845e8c734d94e..617cb1ef69a772fb68379567c5bc4d132ee5d6f6 100644 (file)
@@ -185,6 +185,16 @@ public:
     /// \return A \c FindResult object enclosing the search result (see above).
     FindResult findZone(const isc::dns::Name& name) const;
 
+    /// Override the ZoneData for a node (zone) in the zone tree.
+    ///
+    /// \throw none
+    ///
+    /// \param name A domain name for which the zone data is set.
+    /// \param data The new zone data to set.
+    /// \return A \c ZoneData object containing the old data if the zone
+    /// was found, or \c NULL otherwise.
+    ZoneData* setZoneData(const isc::dns::Name& name, ZoneData* data);
+
 private:
     boost::interprocess::offset_ptr<ZoneTableTree> zones_;
 };