]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#3719] explicit type cast for bind calls
authorRazvan Becheriu <razvan@isc.org>
Tue, 21 Jan 2025 19:04:30 +0000 (21:04 +0200)
committerRazvan Becheriu <razvan@isc.org>
Tue, 21 Jan 2025 19:04:30 +0000 (21:04 +0200)
src/lib/dhcpsrv/network.h
src/lib/dhcpsrv/parsers/dhcp_parsers.cc
src/lib/dhcpsrv/parsers/shared_network_parser.cc
src/lib/dhcpsrv/subnet.h

index 8d4d94b49f09800f4d12302ed651a36d4961aabc..69af817f3f42f5bf7676d3814d3bc364190d4c40 100644 (file)
@@ -151,7 +151,7 @@ typedef std::function<ConstCfgGlobalsPtr()> FetchNetworkGlobalsFn;
 /// in a well known form, so as the @c Network accessors can use them.
 class Network : public virtual isc::data::StampedElement,
                 public virtual isc::data::UserContext,
-                public isc::data::CfgToElement {
+                public virtual isc::data::CfgToElement {
 public:
     /// @brief Holds optional information about relay.
     ///
index 2d6e0631d5286b2faffb038db99f3c72f7353d37..3a32a662a4eef8c9ad8069a394e21da2b11fa058 100644 (file)
@@ -897,11 +897,11 @@ Subnet4ConfigParser::initSubnet(data::ConstElementPtr params,
 
     // Setup client class list.
     getClientClassesElem(params, std::bind(&Network::allowClientClass,
-                                           subnet4, ph::_1));
+                                           boost::dynamic_pointer_cast<Network>(subnet4), ph::_1));
 
     // Setup additional class list.
     getAdditionalClassesElem(params, std::bind(&Network::addAdditionalClass,
-                                               subnet4, ph::_1));
+                                               boost::dynamic_pointer_cast<Network>(subnet4), ph::_1));
 
     // 4o6 specific parameter: 4o6-interface.
     if (params->contains("4o6-interface")) {
@@ -1179,12 +1179,12 @@ PdPoolParser::parse(PoolStoragePtr pools, ConstElementPtr pd_pool,
     // Setup client class list.
     BaseNetworkParser::getClientClassesElem(pd_pool,
                                             std::bind(&Pool::allowClientClass,
-                                                      pool_, ph::_1));
+                                                      boost::dynamic_pointer_cast<Pool>(pool_), ph::_1));
 
     // Setup additional class list.
     BaseNetworkParser::getAdditionalClassesElem(pd_pool,
                                                 std::bind(&Pool::addAdditionalClass,
-                                                          pool_, ph::_1));
+                                                          boost::dynamic_pointer_cast<Pool>(pool_), ph::_1));
 
     // Add the local pool to the external storage ptr.
     pools->push_back(pool_);
@@ -1415,11 +1415,11 @@ Subnet6ConfigParser::initSubnet(data::ConstElementPtr params,
 
     // Setup client class list.
     getClientClassesElem(params, std::bind(&Network::allowClientClass,
-                                           subnet6, ph::_1));
+                                           boost::dynamic_pointer_cast<Network>(subnet6), ph::_1));
 
     // Setup additional class list.
     getAdditionalClassesElem(params, std::bind(&Network::addAdditionalClass,
-                                               subnet6, ph::_1));
+                                               boost::dynamic_pointer_cast<Network>(subnet6), ph::_1));
 
     /// client-class processing is now generic and handled in the common
     /// code (see isc::data::SubnetConfigParser::createSubnet)
index 100eef35e3c0b7b81466c26dc9afc6d60b0dffc5..a22303bd680460f21e5316e0af0f11298ed4a21a 100644 (file)
@@ -161,12 +161,12 @@ SharedNetwork4Parser::parse(const data::ConstElementPtr& shared_network_data,
         // Setup additional class list.
         getClientClassesElem(shared_network_data,
                              std::bind(&Network::allowClientClass,
-                                       shared_network, ph::_1));
+                                       boost::dynamic_pointer_cast<Network>(shared_network), ph::_1));
 
         // Setup additional class list.
         getAdditionalClassesElem(shared_network_data,
                                  std::bind(&Network::addAdditionalClass,
-                                           shared_network, ph::_1));
+                                           boost::dynamic_pointer_cast<Network>(shared_network), ph::_1));
 
         if (shared_network_data->contains("relay")) {
             auto relay_parms = shared_network_data->get("relay");
@@ -319,12 +319,12 @@ SharedNetwork6Parser::parse(const data::ConstElementPtr& shared_network_data,
         // Setup additional class list.
         getClientClassesElem(shared_network_data,
                              std::bind(&Network::allowClientClass,
-                                       shared_network, ph::_1));
+                                       boost::dynamic_pointer_cast<Network>(shared_network), ph::_1));
 
         // Setup additional class list.
         getAdditionalClassesElem(shared_network_data,
                                  std::bind(&Network::addAdditionalClass,
-                                           shared_network, ph::_1));
+                                           boost::dynamic_pointer_cast<Network>(shared_network), ph::_1));
 
         if (shared_network_data->contains("subnet6")) {
             auto json = shared_network_data->get("subnet6");
index 5eb4224ffcb91c7d3a1b41335ff15c1745145ec6..669883eb913259643597278086e3b1798b9b0e84 100644 (file)
@@ -465,7 +465,7 @@ typedef boost::shared_ptr<Subnet4> Subnet4Ptr;
 /// This class represents an IPv4 subnet.
 /// @note Subnet and Network use virtual inheritance to avoid
 /// a diamond issue with UserContext
-class Subnet4 : public Subnet, public Network4, public boost::enable_shared_from_this<Subnet4> {
+class Subnet4 : public virtual Subnet, public virtual Network4, public boost::enable_shared_from_this<Subnet4> {
 public:
 
     /// @brief Constructor with all parameters.
@@ -630,7 +630,7 @@ typedef boost::shared_ptr<Subnet6> Subnet6Ptr;
 /// This class represents an IPv6 subnet.
 /// @note Subnet and Network use virtual inheritance to avoid
 /// a diamond issue with UserContext
-class Subnet6 : public Subnet, public Network6, public boost::enable_shared_from_this<Subnet6> {
+class Subnet6 : public virtual Subnet, public virtual Network6, public boost::enable_shared_from_this<Subnet6> {
 public:
 
     /// @brief Constructor with all parameters.