From: Mukund Sivaraman Date: Mon, 3 Sep 2012 08:24:51 +0000 (+0530) Subject: [2108] Add ZoneTable::setZoneData() X-Git-Tag: trac2351_base~70^2~122 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=061fbc119bccfb8cf5afe7eb3e8a6228d8956168;p=thirdparty%2Fkea.git [2108] Add ZoneTable::setZoneData() --- diff --git a/src/lib/datasrc/memory/zone_table.cc b/src/lib/datasrc/memory/zone_table.cc index f9b2768e8d..f2cddc0463 100644 --- a/src/lib/datasrc/memory/zone_table.cc +++ b/src/lib/datasrc/memory/zone_table.cc @@ -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 diff --git a/src/lib/datasrc/memory/zone_table.h b/src/lib/datasrc/memory/zone_table.h index 2faf606dff..617cb1ef69 100644 --- a/src/lib/datasrc/memory/zone_table.h +++ b/src/lib/datasrc/memory/zone_table.h @@ -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 zones_; };