From: Francis Dupont Date: Fri, 18 Dec 2020 11:07:36 +0000 (+0100) Subject: [#1585] Done (final phase) X-Git-Tag: Kea-1.9.4~103 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1e01e6004120627fcfceffe0e681adf5c803600;p=thirdparty%2Fkea.git [#1585] Done (final phase) --- diff --git a/src/lib/dhcpsrv/parsers/client_class_def_parser.cc b/src/lib/dhcpsrv/parsers/client_class_def_parser.cc index d57345d5f8..f097f53eb8 100644 --- a/src/lib/dhcpsrv/parsers/client_class_def_parser.cc +++ b/src/lib/dhcpsrv/parsers/client_class_def_parser.cc @@ -109,21 +109,20 @@ ClientClassDefParser::parse(ClientClassDictionaryPtr& class_dictionary, OptionDefParser parser(family); BOOST_FOREACH(ConstElementPtr option_def, option_defs->listValue()) { - OptionDefinitionTuple def; + OptionDefinitionPtr def = parser.parse(option_def); - def = parser.parse(option_def); // Verify if the defition is for an option which are // in a deferred processing list. - if (!LibDHCP::shouldDeferOptionUnpack(def.second, - def.first->getCode())) { + if (!LibDHCP::shouldDeferOptionUnpack(def->getOptionSpaceName(), + def->getCode())) { isc_throw(DhcpConfigError, "Not allowed option definition for code '" - << def.first->getCode() << "' in space '" - << def.second << "' at (" + << def->getCode() << "' in space '" + << def->getOptionSpaceName() << "' at (" << option_def->getPosition() << ")"); } try { - defs->add(def.first); + defs->add(def); } catch (const std::exception& ex) { // Sanity check: it should never happen isc_throw(DhcpConfigError, ex.what() << " (" diff --git a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc index 92215f405e..b6b0d6ef69 100644 --- a/src/lib/dhcpsrv/parsers/dhcp_parsers.cc +++ b/src/lib/dhcpsrv/parsers/dhcp_parsers.cc @@ -119,7 +119,7 @@ OptionDefParser::OptionDefParser(const uint16_t address_family) : address_family_(address_family) { } -std::pair +OptionDefinitionPtr OptionDefParser::parse(ConstElementPtr option_def) { // Check parameters. @@ -252,7 +252,7 @@ OptionDefParser::parse(ConstElementPtr option_def) { } // Option definition has been created successfully. - return make_pair(def, space); + return (def); } // ******************************** OptionDefListParser ************************ @@ -272,11 +272,9 @@ OptionDefListParser::parse(CfgOptionDefPtr storage, ConstElementPtr option_def_l OptionDefParser parser(address_family_); BOOST_FOREACH(ConstElementPtr option_def, option_def_list->listValue()) { - OptionDefinitionTuple def; - - def = parser.parse(option_def); + OptionDefinitionPtr def = parser.parse(option_def); try { - storage->add(def.first); + storage->add(def); } catch (const std::exception& ex) { // Append position if there is a failure. isc_throw(DhcpConfigError, ex.what() << " (" diff --git a/src/lib/dhcpsrv/parsers/dhcp_parsers.h b/src/lib/dhcpsrv/parsers/dhcp_parsers.h index 799ef7dc65..75b0689041 100644 --- a/src/lib/dhcpsrv/parsers/dhcp_parsers.h +++ b/src/lib/dhcpsrv/parsers/dhcp_parsers.h @@ -221,8 +221,6 @@ public: void parse(SrvConfig& srv_cfg, isc::data::ConstElementPtr value); }; -typedef std::pair OptionDefinitionTuple; - /// @brief Parser for a single option definition. /// /// This parser creates an instance of a single option definition. @@ -236,11 +234,10 @@ public: /// @brief Parses an entry that describes single option definition. /// /// @param option_def a configuration entry to be parsed. - /// @return tuple (option definition, option space) of the parsed structure + /// @return option definition of the parsed structure. /// /// @throw DhcpConfigError if parsing was unsuccessful. - OptionDefinitionTuple - parse(isc::data::ConstElementPtr option_def); + OptionDefinitionPtr parse(isc::data::ConstElementPtr option_def); private: /// @brief Address family: @c AF_INET or @c AF_INET6.