network->setT1Percent(t1_percent);
}
+void
+BaseNetworkParser::parseHostReservationMode(const data::ConstElementPtr& network_data,
+ NetworkPtr& network) {
+ if (network_data->contains("reservation-mode")) {
+ try {
+ std::string hr_mode = getString(network_data, "reservation-mode");
+ network->setHostReservationMode(Network::hrModeFromString(hr_mode));
+ } catch (const BadValue& ex) {
+ isc_throw(DhcpConfigError, "invalid reservation-mode parameter: "
+ << ex.what() << " (" << getPosition("reservation-mode",
+ network_data) << ")");
+ }
+ }
+}
+
+
} // end of namespace isc::dhcp
} // end of namespace isc
/// invalid.
void parseTeePercents(const data::ConstElementPtr& network_data,
NetworkPtr& network);
+
+ /// @brief Parses host reservation mode.
+ //
+ /// @param shared_network_data Data element holding shared network
+ /// configuration to be parsed.
+ /// @param [out] network Pointer to a network in which parsed data is
+ /// to be stored.
+ void parseHostReservationMode(const data::ConstElementPtr& network_data,
+ NetworkPtr& network);
};
} // end of namespace isc::dhcp
}
// Let's set host reservation mode.
- if (params->contains("reservation-mode")) {
- try {
- std::string hr_mode = getString(params, "reservation-mode");
- subnet4->setHostReservationMode(Network::hrModeFromString(hr_mode));
- } catch (const BadValue& ex) {
- isc_throw(DhcpConfigError, "Failed to process specified value "
- " of reservation-mode parameter: " << ex.what()
- << "(" << getPosition("reservation-mode", params) << ")");
- }
- }
+ parseHostReservationMode(params, network);
// Try setting up client class.
if (params->contains("client-class")) {
// Let's set host reservation mode. If not specified, the default value of
// all will be used.
- if (params->contains("reservation-mode")) {
- try {
- std::string hr_mode = getString(params, "reservation-mode");
- subnet6->setHostReservationMode(Network::hrModeFromString(hr_mode));
- } catch (const BadValue& ex) {
- isc_throw(DhcpConfigError, "Failed to process specified value "
- " of reservation-mode parameter: " << ex.what()
- << "(" << getPosition("reservation-mode", params) << ")");
- }
- }
+ parseHostReservationMode(params, network);
// Try setting up client class.
if (params->contains("client-class")) {
}
}
+ // reservation-mode
+ parseHostReservationMode(shared_network_data, network);
+
parseTeePercents(shared_network_data, network);
} catch (const DhcpConfigError&) {
}
}
+ // reservation-mode
+ parseHostReservationMode(shared_network_data, network);
+
parseTeePercents(shared_network_data, network);
} catch (const std::exception& ex) {
EXPECT_EQ("/dev/null", network->getFilename().get());
EXPECT_EQ("10.0.0.1", network->getSiaddr().get().toText());
EXPECT_EQ("example.org", network->getSname().get());
+ EXPECT_EQ(Network::HR_OUT_OF_POOL, network->getHostReservationMode());
// Relay information.
auto relay_info = network->getRelayInfo();