]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3464] DHCPv4 parsers updated, fix in common parsers.
authorTomek Mrugalski <tomasz@isc.org>
Mon, 28 Jul 2014 01:47:35 +0000 (21:47 -0400)
committerTomek Mrugalski <tomasz@isc.org>
Mon, 28 Jul 2014 01:47:35 +0000 (21:47 -0400)
src/bin/dhcp4/json_config_parser.cc
src/lib/dhcpsrv/dhcp_parsers.cc

index ddacb7a7cce707035cef969076efc793553c611d..2faf1df9beb77241f0fa5af8ae4fe60e8cd349f3 100644 (file)
@@ -152,6 +152,18 @@ protected:
     }
 };
 
+class Pools4ListParser : public PoolsListParser {
+public:
+    Pools4ListParser(const std::string& dummy, PoolStoragePtr pools)
+        :PoolsListParser(dummy, pools) {
+    }
+
+protected:
+    virtual ParserPtr poolParserMaker(PoolStoragePtr storage) {
+        return (ParserPtr(new Pool4Parser("pool", storage)));
+    }
+};
+
 /// @brief This class parses a single IPv4 subnet.
 ///
 /// This is the IPv4 derivation of the SubnetConfigParser class and it parses
@@ -227,8 +239,8 @@ protected:
                    (config_id.compare("client-class") == 0) ||
                    (config_id.compare("next-server") == 0)) {
             parser = new StringParser(config_id, string_values_);
-        } else if (config_id.compare("pool") == 0) {
-            parser = new Pool4Parser(config_id, pools_);
+        } else if (config_id.compare("pools") == 0) {
+            parser = new Pools4ListParser(config_id, pools_);
         } else if (config_id.compare("relay") == 0) {
             parser = new RelayInfoParser(config_id, relay_info_, Option::V4);
         } else if (config_id.compare("option-data") == 0) {
index 856b0ec955d198382c6dd75a01cb32a6b0685577..12e22983c3ac1324493fc72ebba1460e4b137416 100644 (file)
@@ -992,6 +992,11 @@ PoolParser::build(ConstElementPtr pool_structure) {
 
     ConstElementPtr text_pool = pool_structure->get("pool");
 
+    if (!text_pool) {
+        isc_throw(DhcpConfigError, "Mandatory 'pool' entry missing in "
+                  "definition: (" << text_pool->getPosition() << ")");
+    }
+
     // That should be a single pool representation. It should contain
     // text is form prefix/len or first - last. Note that spaces
     // are allowed