/// 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.
///
// 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")) {
// 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_);
// 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)
// 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");
// 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");
/// 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.
/// 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.