mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-30 21:45:37 +00:00
[master] Merge branch 'trac5020' (interfaces parser migrated to SimpleParser)
# Conflicts: # src/bin/dhcp4/json_config_parser.cc # src/bin/dhcp6/json_config_parser.cc
This commit is contained in:
@@ -418,10 +418,9 @@ DhcpConfigParser* createGlobalDhcp4ConfigParser(const std::string& config_id,
|
||||
(config_id.compare("dhcp4o6-port") == 0) ) {
|
||||
parser = new Uint32Parser(config_id,
|
||||
globalContext()->uint32_values_);
|
||||
} else if (config_id.compare("interfaces-config") == 0) {
|
||||
parser = new IfacesConfigParser4();
|
||||
} else if (config_id.compare("subnet4") == 0) {
|
||||
parser = new Subnets4ListConfigParser(config_id);
|
||||
// interface-config has been migrated to SimpleParser already.
|
||||
// option-data and option-def have been converted to SimpleParser already.
|
||||
} else if ((config_id.compare("next-server") == 0)) {
|
||||
parser = new StringParser(config_id,
|
||||
@@ -571,7 +570,6 @@ configureDhcp4Server(Dhcpv4Srv&, isc::data::ConstElementPtr config_set) {
|
||||
// Please do not change this order!
|
||||
ParserCollection independent_parsers;
|
||||
ParserPtr subnet_parser;
|
||||
ParserPtr iface_parser;
|
||||
ParserPtr leases_parser;
|
||||
ParserPtr client_classes_parser;
|
||||
|
||||
@@ -620,6 +618,11 @@ configureDhcp4Server(Dhcpv4Srv&, isc::data::ConstElementPtr config_set) {
|
||||
const std::map<std::string, ConstElementPtr>& values_map =
|
||||
mutable_cfg->mapValue();
|
||||
BOOST_FOREACH(config_pair, values_map) {
|
||||
// In principle we could have the following code structured as a series
|
||||
// of long if else if clauses. That would give a marginal performance
|
||||
// boost, but would make the code less readable. We had serious issues
|
||||
// with the parser code debugability, so I decided to keep it as a
|
||||
// series of independent ifs.
|
||||
|
||||
if (config_pair.first == "option-def") {
|
||||
// This is converted to SimpleParser and is handled already above.
|
||||
@@ -646,6 +649,14 @@ configureDhcp4Server(Dhcpv4Srv&, isc::data::ConstElementPtr config_set) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (config_pair.first == "interfaces-config") {
|
||||
IfacesConfigParser parser(AF_INET);
|
||||
CfgIfacePtr cfg_iface = CfgMgr::instance().getStagingCfg()->getCfgIface();
|
||||
parser.parse(cfg_iface, config_pair.second);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Legacy DhcpConfigParser stuff below
|
||||
ParserPtr parser(createGlobalDhcp4ConfigParser(config_pair.first,
|
||||
config_pair.second));
|
||||
LOG_DEBUG(dhcp4_logger, DBG_DHCP4_DETAIL, DHCP4_PARSER_CREATED)
|
||||
@@ -654,11 +665,6 @@ configureDhcp4Server(Dhcpv4Srv&, isc::data::ConstElementPtr config_set) {
|
||||
subnet_parser = parser;
|
||||
} else if (config_pair.first == "lease-database") {
|
||||
leases_parser = parser;
|
||||
} else if (config_pair.first == "interfaces-config") {
|
||||
// The interface parser is independent from any other
|
||||
// parser and can be run here before any other parsers.
|
||||
iface_parser = parser;
|
||||
parser->build(config_pair.second);
|
||||
} else if (config_pair.first == "hooks-libraries") {
|
||||
// Executing commit will alter currently-loaded hooks
|
||||
// libraries. Check if the supplied libraries are valid,
|
||||
|
Reference in New Issue
Block a user