Skip to content

Commit a0ce088

Browse files
author
Razvan Becheriu
committed
[#3719] explicit type cast for bind calls
1 parent 3c7b4fa commit a0ce088

File tree

4 files changed

+13
-13
lines changed

4 files changed

+13
-13
lines changed

src/lib/dhcpsrv/network.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ typedef std::function<ConstCfgGlobalsPtr()> FetchNetworkGlobalsFn;
151151
/// in a well known form, so as the @c Network accessors can use them.
152152
class Network : public virtual isc::data::StampedElement,
153153
public virtual isc::data::UserContext,
154-
public isc::data::CfgToElement {
154+
public virtual isc::data::CfgToElement {
155155
public:
156156
/// @brief Holds optional information about relay.
157157
///

src/lib/dhcpsrv/parsers/dhcp_parsers.cc

+6-6
Original file line numberDiff line numberDiff line change
@@ -897,11 +897,11 @@ Subnet4ConfigParser::initSubnet(data::ConstElementPtr params,
897897

898898
// Setup client class list.
899899
getClientClassesElem(params, std::bind(&Network::allowClientClass,
900-
subnet4, ph::_1));
900+
boost::dynamic_pointer_cast<Network>(subnet4), ph::_1));
901901

902902
// Setup additional class list.
903903
getAdditionalClassesElem(params, std::bind(&Network::addAdditionalClass,
904-
subnet4, ph::_1));
904+
boost::dynamic_pointer_cast<Network>(subnet4), ph::_1));
905905

906906
// 4o6 specific parameter: 4o6-interface.
907907
if (params->contains("4o6-interface")) {
@@ -1179,12 +1179,12 @@ PdPoolParser::parse(PoolStoragePtr pools, ConstElementPtr pd_pool,
11791179
// Setup client class list.
11801180
BaseNetworkParser::getClientClassesElem(pd_pool,
11811181
std::bind(&Pool::allowClientClass,
1182-
pool_, ph::_1));
1182+
boost::dynamic_pointer_cast<Pool>(pool_), ph::_1));
11831183

11841184
// Setup additional class list.
11851185
BaseNetworkParser::getAdditionalClassesElem(pd_pool,
11861186
std::bind(&Pool::addAdditionalClass,
1187-
pool_, ph::_1));
1187+
boost::dynamic_pointer_cast<Pool>(pool_), ph::_1));
11881188

11891189
// Add the local pool to the external storage ptr.
11901190
pools->push_back(pool_);
@@ -1415,11 +1415,11 @@ Subnet6ConfigParser::initSubnet(data::ConstElementPtr params,
14151415

14161416
// Setup client class list.
14171417
getClientClassesElem(params, std::bind(&Network::allowClientClass,
1418-
subnet6, ph::_1));
1418+
boost::dynamic_pointer_cast<Network>(subnet6), ph::_1));
14191419

14201420
// Setup additional class list.
14211421
getAdditionalClassesElem(params, std::bind(&Network::addAdditionalClass,
1422-
subnet6, ph::_1));
1422+
boost::dynamic_pointer_cast<Network>(subnet6), ph::_1));
14231423

14241424
/// client-class processing is now generic and handled in the common
14251425
/// code (see isc::data::SubnetConfigParser::createSubnet)

src/lib/dhcpsrv/parsers/shared_network_parser.cc

+4-4
Original file line numberDiff line numberDiff line change
@@ -161,12 +161,12 @@ SharedNetwork4Parser::parse(const data::ConstElementPtr& shared_network_data,
161161
// Setup additional class list.
162162
getClientClassesElem(shared_network_data,
163163
std::bind(&Network::allowClientClass,
164-
shared_network, ph::_1));
164+
boost::dynamic_pointer_cast<Network>(shared_network), ph::_1));
165165

166166
// Setup additional class list.
167167
getAdditionalClassesElem(shared_network_data,
168168
std::bind(&Network::addAdditionalClass,
169-
shared_network, ph::_1));
169+
boost::dynamic_pointer_cast<Network>(shared_network), ph::_1));
170170

171171
if (shared_network_data->contains("relay")) {
172172
auto relay_parms = shared_network_data->get("relay");
@@ -319,12 +319,12 @@ SharedNetwork6Parser::parse(const data::ConstElementPtr& shared_network_data,
319319
// Setup additional class list.
320320
getClientClassesElem(shared_network_data,
321321
std::bind(&Network::allowClientClass,
322-
shared_network, ph::_1));
322+
boost::dynamic_pointer_cast<Network>(shared_network), ph::_1));
323323

324324
// Setup additional class list.
325325
getAdditionalClassesElem(shared_network_data,
326326
std::bind(&Network::addAdditionalClass,
327-
shared_network, ph::_1));
327+
boost::dynamic_pointer_cast<Network>(shared_network), ph::_1));
328328

329329
if (shared_network_data->contains("subnet6")) {
330330
auto json = shared_network_data->get("subnet6");

src/lib/dhcpsrv/subnet.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,7 @@ typedef boost::shared_ptr<Subnet4> Subnet4Ptr;
465465
/// This class represents an IPv4 subnet.
466466
/// @note Subnet and Network use virtual inheritance to avoid
467467
/// a diamond issue with UserContext
468-
class Subnet4 : public Subnet, public Network4, public boost::enable_shared_from_this<Subnet4> {
468+
class Subnet4 : public virtual Subnet, public virtual Network4, public boost::enable_shared_from_this<Subnet4> {
469469
public:
470470

471471
/// @brief Constructor with all parameters.
@@ -630,7 +630,7 @@ typedef boost::shared_ptr<Subnet6> Subnet6Ptr;
630630
/// This class represents an IPv6 subnet.
631631
/// @note Subnet and Network use virtual inheritance to avoid
632632
/// a diamond issue with UserContext
633-
class Subnet6 : public Subnet, public Network6, public boost::enable_shared_from_this<Subnet6> {
633+
class Subnet6 : public virtual Subnet, public virtual Network6, public boost::enable_shared_from_this<Subnet6> {
634634
public:
635635

636636
/// @brief Constructor with all parameters.

0 commit comments

Comments
 (0)