]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#1585] Done (final phase)
authorFrancis Dupont <fdupont@isc.org>
Fri, 18 Dec 2020 11:07:36 +0000 (12:07 +0100)
committerFrancis Dupont <fdupont@isc.org>
Mon, 11 Jan 2021 14:28:01 +0000 (15:28 +0100)
src/lib/dhcpsrv/parsers/client_class_def_parser.cc
src/lib/dhcpsrv/parsers/dhcp_parsers.cc
src/lib/dhcpsrv/parsers/dhcp_parsers.h

index d57345d5f8403f8b288b8c2a3bae88e1ead5dfab..f097f53eb84ee4def7eff8a8485c1313badb9d58 100644 (file)
@@ -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() << " ("
index 92215f405e4b6984ddde090e38baf27080a6bc31..b6b0d6ef698b48a28ee96375d3b8050ba067900a 100644 (file)
@@ -119,7 +119,7 @@ OptionDefParser::OptionDefParser(const uint16_t address_family)
     : address_family_(address_family) {
 }
 
-std::pair<isc::dhcp::OptionDefinitionPtr, std::string>
+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() << " ("
index 799ef7dc6542124f5565990a856fdbec02914a04..75b0689041e3e6b0ad6d73f0f02ce7daf67442b0 100644 (file)
@@ -221,8 +221,6 @@ public:
     void parse(SrvConfig& srv_cfg, isc::data::ConstElementPtr value);
 };
 
-typedef std::pair<isc::dhcp::OptionDefinitionPtr, std::string> 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.