// Parse Host Reservations for this subnet if any.
ConstElementPtr reservations = subnet->get("reservations");
if (reservations) {
- HostReservationsListParser<HostReservationParser4>
- parser(subnet_->getID());
- parser.parse(reservations);
+ HostReservationsListParser<HostReservationParser4> parser;
+ parser.parse(subnet_->getID(), reservations);
}
}
// Parse Host Reservations for this subnet if any.
ConstElementPtr reservations = subnet->get("reservations");
if (reservations) {
- HostReservationsListParser<HostReservationParser6>
- parser(subnet_->getID());
- parser.parse(reservations);
+ HostReservationsListParser<HostReservationParser6> parser;
+ parser.parse(subnet_->getID(), reservations);
}
}
}
namespace isc {
namespace dhcp {
-HostReservationParser::HostReservationParser(const SubnetID& subnet_id)
- : SimpleParser(), subnet_id_(subnet_id) {
-}
-
-
void
-HostReservationParser::parse(isc::data::ConstElementPtr reservation_data) {
- parseInternal(reservation_data);
+HostReservationParser::parse(const SubnetID& subnet_id,
+ isc::data::ConstElementPtr reservation_data) {
+ parseInternal(subnet_id, reservation_data);
}
void
-HostReservationParser::parseInternal(isc::data::ConstElementPtr reservation_data) {
+HostReservationParser::parseInternal(const SubnetID& subnet_id,
+ isc::data::ConstElementPtr reservation_data) {
std::string identifier;
std::string identifier_name;
std::string hostname;
return (getSupportedParameters(false).count(param_name) > 0);
}
-HostReservationParser4::HostReservationParser4(const SubnetID& subnet_id)
- : HostReservationParser(subnet_id) {
-}
-
void
-HostReservationParser4::parseInternal(isc::data::ConstElementPtr reservation_data) {
- HostReservationParser::parseInternal(reservation_data);
+HostReservationParser4::parseInternal(const SubnetID& subnet_id,
+ isc::data::ConstElementPtr reservation_data) {
+ HostReservationParser::parseInternal(subnet_id, reservation_data);
- host_->setIPv4SubnetID(subnet_id_);
+ host_->setIPv4SubnetID(subnet_id);
BOOST_FOREACH(ConfigPair element, reservation_data->mapValue()) {
// For 'option-data' element we will use another parser which
return (getSupportedParams4(identifiers_only));
}
-HostReservationParser6::HostReservationParser6(const SubnetID& subnet_id)
- : HostReservationParser(subnet_id) {
-}
-
void
-HostReservationParser6::parseInternal(isc::data::ConstElementPtr reservation_data) {
- HostReservationParser::parseInternal(reservation_data);
+HostReservationParser6::parseInternal(const SubnetID& subnet_id,
+ isc::data::ConstElementPtr reservation_data) {
+ HostReservationParser::parseInternal(subnet_id, reservation_data);
- host_->setIPv6SubnetID(subnet_id_);
+ host_->setIPv6SubnetID(subnet_id);
BOOST_FOREACH(ConfigPair element, reservation_data->mapValue()) {
// Parse option values. Note that the configuration option parser
class HostReservationParser : public isc::data::SimpleParser {
public:
- /// @brief Constructor.
- ///
- /// @param subnet_id Identifier of the subnet that the host is
- /// connected to.
- explicit HostReservationParser(const SubnetID& subnet_id);
-
/// @brief Destructor.
virtual ~HostReservationParser() { }
/// @brief Parses a single entry for host reservation.
///
+ /// @param subnet_id Identifier of the subnet that the host is
+ /// connected to.
/// @param reservation_data Data element holding map with a host
/// reservation configuration.
///
/// @throw DhcpConfigError If the configuration is invalid.
- void parse(isc::data::ConstElementPtr reservation_data);
+ void parse(const SubnetID& subnet_id,
+ isc::data::ConstElementPtr reservation_data);
protected:
/// This method is called by @ref parse and it can be overriden in the
/// derived classes to provide class specific parsing logic.
///
+ /// @param subnet_id Identifier of the subnet that the host is
+ /// connected to.
/// @param reservation_data Data element holding map with a host
/// reservation configuration.
///
/// @throw DhcpConfigError If the configuration is invalid.
- virtual void parseInternal(isc::data::ConstElementPtr reservation_data);
+ virtual void parseInternal(const SubnetID& subnet_id,
+ isc::data::ConstElementPtr reservation_data);
/// @brief Inserts @c host_ object to the staging configuration.
///
virtual const std::set<std::string>&
getSupportedParameters(const bool identifiers_only) const = 0;
- /// @brief Identifier of the subnet that the host is connected to.
- SubnetID subnet_id_;
-
/// @brief Holds a pointer to @c Host object representing a parsed
/// host reservation configuration.
HostPtr host_;
/// @brief Parser for a single host reservation for DHCPv4.
class HostReservationParser4 : public HostReservationParser {
-public:
-
- /// @brief Constructor.
- ///
- /// @param subnet_id Identifier of the subnet that the host is
- /// connected to.
- HostReservationParser4(const SubnetID& subnet_id);
-
protected:
/// @brief Parses a single host reservation for DHCPv4.
///
+ /// @param subnet_id Identifier of the subnet that the host is
+ /// connected to.
/// @param reservation_data Data element holding map with a host
/// reservation configuration.
///
/// @throw DhcpConfigError If the configuration is invalid.
- virtual void parseInternal(isc::data::ConstElementPtr reservation_data);
+ virtual void parseInternal(const SubnetID& subnet_id,
+ isc::data::ConstElementPtr reservation_data);
/// @brief Returns set of the supported parameters for DHCPv4.
///
/// @brief Parser for a single host reservation for DHCPv6.
class HostReservationParser6 : public HostReservationParser {
-public:
-
- /// @brief Constructor.
- ///
- /// @param subnet_id Identifier of the subnet that the host is
- /// connected to.
- HostReservationParser6(const SubnetID& subnet_id);
-
protected:
/// @brief Parses a single host reservation for DHCPv6.
///
+ /// @param subnet_id Identifier of the subnet that the host is
+ /// connected to.
/// @param reservation_data Data element holding map with a host
/// reservation configuration.
///
/// @throw DhcpConfigError If the configuration is invalid.
- virtual void parseInternal(isc::data::ConstElementPtr reservation_data);
+ virtual void parseInternal(const SubnetID& subnet_id,
+ isc::data::ConstElementPtr reservation_data);
/// @brief Returns set of the supported parameters for DHCPv6.
///
class HostReservationsListParser : public isc::data::SimpleParser {
public:
- /// @brief Constructor.
+ /// @brief Parses a list of host reservation entries for a subnet.
///
/// @param subnet_id Identifier of the subnet to which the reservations
/// belong.
- HostReservationsListParser(const SubnetID& subnet_id)
- : subnet_id_(subnet_id) {
- }
-
- /// @brief Parses a list of host reservation entries for a subnet.
- ///
/// @param hr_list Data element holding a list of host reservations.
/// Each host reservation is described by a map object.
///
/// @throw DhcpConfigError If the configuration if any of the reservations
/// is invalid.
- void parse(isc::data::ConstElementPtr hr_list) {
+ void parse(const SubnetID& subnet_id, isc::data::ConstElementPtr hr_list) {
BOOST_FOREACH(data::ConstElementPtr reservation, hr_list->listValue()) {
- HostReservationParserType parser(subnet_id_);
- parser.parse(reservation);
+ HostReservationParserType parser;
+ parser.parse(subnet_id, reservation);
}
}
-
-private:
-
- /// @brief Identifier of the subnet to whic the reservations belong.
- SubnetID subnet_id_;
-
};
}
ElementPtr config_element = Element::fromJSON(config);
- ParserType parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ ParserType parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
// Retrieve a host.
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config.str());
- HostReservationParser4 parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser4 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
template<typename ParserType>
void testInvalidConfig(const std::string& config) const {
ElementPtr config_element = Element::fromJSON(config);
- ParserType parser(SubnetID(10));
- EXPECT_THROW(parser.parse(config_element), DhcpConfigError);
+ ParserType parser;
+ EXPECT_THROW(parser.parse(SubnetID(10), config_element), DhcpConfigError);
}
/// @brief HW Address object used by tests.
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser4 parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser4 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser4 parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser4 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser4 parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser4 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser4 parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser4 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser6 parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser6 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser6 parser(SubnetID(12));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser6 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(12), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser6 parser(SubnetID(12));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser6 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(12), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser6 parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser6 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser4 parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser4 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config);
- HostReservationParser6 parser(SubnetID(10));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationParser6 parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(10), config_element));
// One host should have been added to the configuration.
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
ElementPtr config_element = Element::fromJSON(config);
- HostReservationsListParser<HostReservationParser4> parser(SubnetID(1));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationsListParser<HostReservationParser4> parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(1), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config.str());
- HostReservationsListParser<HostReservationParser4> parser(SubnetID(1));
- EXPECT_THROW(parser.parse(config_element), DhcpConfigError);
+ HostReservationsListParser<HostReservationParser4> parser;
+ EXPECT_THROW(parser.parse(SubnetID(1), config_element), DhcpConfigError);
}
}
ElementPtr config_element = Element::fromJSON(config);
// Parse configuration.
- HostReservationsListParser<HostReservationParser6> parser(SubnetID(2));
- ASSERT_NO_THROW(parser.parse(config_element));
+ HostReservationsListParser<HostReservationParser6> parser;
+ ASSERT_NO_THROW(parser.parse(SubnetID(2), config_element));
CfgHostsPtr cfg_hosts = CfgMgr::instance().getStagingCfg()->getCfgHosts();
HostCollection hosts;
ElementPtr config_element = Element::fromJSON(config.str());
- HostReservationsListParser<HostReservationParser6> parser(SubnetID(1));
- EXPECT_THROW(parser.parse(config_element), DhcpConfigError);
+ HostReservationsListParser<HostReservationParser6> parser;
+ EXPECT_THROW(parser.parse(SubnetID(1), config_element), DhcpConfigError);
}
}