]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3436] Found a couple of spots missig position info
authorThomas Markwalder <tmark@isc.org>
Thu, 26 Jun 2014 15:58:00 +0000 (11:58 -0400)
committerThomas Markwalder <tmark@isc.org>
Thu, 26 Jun 2014 15:58:00 +0000 (11:58 -0400)
src/bin/d2/d2_cfg_mgr.cc
src/bin/d2/d2_config.cc
src/bin/d2/d_cfg_mgr.cc
src/bin/d2/tests/testdata/d2_cfg_tests.json

index c7571b525f4f7a923dc6be431209cab5a132d6ad..0739a0f4e401f0aa6c1d4fece5fedeb3aefa4c8c 100644 (file)
@@ -206,12 +206,21 @@ D2CfgMgr::buildParams(isc::data::ConstElementPtr params_config) {
     // We validate them here rather than just relying on D2Param constructor
     // so we can spit out config text position info with errors.
 
-    // Fetch and validate io_address.
+    // Fetch and validate ip_address.
     D2CfgContextPtr context = getD2CfgContext();
     isc::dhcp::StringStoragePtr strings = context->getStringStorage();
-    asiolink::IOAddress ip_address(strings->
-                                   getOptionalParam("ip_address",
-                                                    D2Params::DFT_IP_ADDRESS));
+    asiolink::IOAddress ip_address(D2Params::DFT_IP_ADDRESS);
+
+    std::string ip_address_str = strings->getOptionalParam("ip_address",
+                                                            D2Params::
+                                                            DFT_IP_ADDRESS);
+    try {
+        ip_address = asiolink::IOAddress(ip_address_str);
+    } catch (const std::exception& ex) {
+        isc_throw(D2CfgError, "IP address invalid : \""
+                  << ip_address_str << "\" : "
+                  << strings->getPosition("ip_address"));
+    }
 
     if ((ip_address.toText() == "0.0.0.0") || (ip_address.toText() == "::")) {
         isc_throw(D2CfgError, "IP address cannot be \"" << ip_address << "\" : "
index ddc2f84096a8b44301c68f5eeb96e50d3376e77a..aeb9d69bf81b3ae5aede8588ed50f2210ba8b9d5 100644 (file)
@@ -643,7 +643,8 @@ build(isc::data::ConstElementPtr server_list){
 
     // Domains must have at least one server.
     if (parsers_.size() == 0) {
-        isc_throw (D2CfgError, "Server List must contain at least one server");
+        isc_throw (D2CfgError, "Server List must contain at least one server"
+                   << " : " << server_list->getPosition());
     }
 }
 
index a6e61bf0e2d913f0614de9bbf17091b7ba9a334a..7abc0e44c11f9007e3e3ccf1d1c3438ba71c5373 100644 (file)
@@ -206,9 +206,10 @@ DCfgMgrBase::parseConfig(isc::data::ConstElementPtr config_set) {
                     objects_map.erase(it);
                 }
                 else {
-                    isc_throw(DCfgMgrBaseError, "Element:" << element_id <<
-                              " is listed in the parse order but is not "
-                              " present in the configuration");
+                    isc_throw(DCfgMgrBaseError,
+                               "Element required by parsing order is missing: "
+                               << element_id << " : "
+                               << config_set->getPosition());
                 }
             }
 
index fb41102137f9804d935b6469d9bb5ac59af1b0ac..4a7bfbde0abbf3a228eb77f20eaeecc81decde7a 100644 (file)
     }
 }
 
+#-----
+,{
+"description" : "D2.forward_ddns.dhcp_ddns.dns_servers.ip_address invalid address ",
+"should_fail" : true,
+"data" :
+    {
+    "forward_ddns" :
+    {
+        "ddns_domains" :
+        [
+            {
+            "name" : "four.example.com.",
+            "dns_servers" :
+                [
+                    {
+                    "ip_address" : "bogus"
+                    }
+                ]
+            }
+        ]
+    },
+    "reverse_ddns" : {},
+    "tsig_keys" : []
+    }
+}
+
+
 #-----
 ,{
 "description" : "D2.forward_ddns.dhcp_ddns.dns_servers.port valid value ",
     "tsig_keys" : []
     }
 }
+#-----
+,{
+"description" : "D2.reverse_ddns.dhcp_ddns.dns_servers.ip_address invalid value",
+"should_fail" : true,
+"data" :
+    {
+    "forward_ddns" : {},
+    "reverse_ddns" :
+    {
+        "ddns_domains" :
+        [
+            {
+            "name" : "2.0.192.in-addr.arpa.",
+            "dns_servers" :
+                [
+                    {
+                    "ip_address" : "bogus"
+                    }
+                ]
+            }
+        ]
+    },
+    "tsig_keys" : []
+    }
+}
+
 
 #-----
 ,{