]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[5305] Use weak pointer to reference a network from subnet.
authorMarcin Siodelski <marcin@isc.org>
Thu, 31 Aug 2017 15:02:17 +0000 (17:02 +0200)
committerMarcin Siodelski <marcin@isc.org>
Thu, 31 Aug 2017 15:02:17 +0000 (17:02 +0200)
src/lib/dhcpsrv/network.h
src/lib/dhcpsrv/subnet.h

index a5590522c95ac172539126f34ab2a7dc0047091f..3b8beaa63b71156ad68f2d87f6e1ebe9c5d16370 100644 (file)
@@ -12,6 +12,7 @@
 #include <dhcpsrv/cfg_option.h>
 #include <dhcpsrv/cfg_4o6.h>
 #include <boost/shared_ptr.hpp>
+#include <boost/weak_ptr.hpp>
 #include <string>
 
 namespace isc {
@@ -95,6 +96,9 @@ protected:
 /// @brief Pointer to the @ref Network object.
 typedef boost::shared_ptr<Network> NetworkPtr;
 
+/// @brief Weak pointer to the @ref Network object.
+typedef boost::weak_ptr<Network> WeakNetworkPtr;
+
 } // end of namespace isc::dhcp
 } // end of namespace isc
 
index 1d860fdc076f138f8e42dfed1de4a6e41125d7da..75d3fac1c34e715c0c580b8ec525702e45001ab5 100644 (file)
@@ -352,7 +352,7 @@ public:
     template<typename SharedNetworkPtrType>
     void getSharedNetwork(SharedNetworkPtrType& shared_network) const {
         shared_network = boost::dynamic_pointer_cast<
-            typename SharedNetworkPtrType::element_type>(shared_network_);
+            typename SharedNetworkPtrType::element_type>(shared_network_.lock());
     }
 
 private:
@@ -538,7 +538,8 @@ protected:
     /// See @ref HRMode type for details.
     HRMode host_reservation_mode_;
 
-    NetworkPtr shared_network_;
+    /// @brief Pointer to a shared network that subnet belongs to.
+    WeakNetworkPtr shared_network_;
 };
 
 /// @brief A generic pointer to either Subnet4 or Subnet6 object