]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[500-strengthen-option-def-parser] Updating bound 0 500-strengthen-option-def-parser
authorFrancis Dupont <fdupont@isc.org>
Wed, 10 Apr 2019 17:32:28 +0000 (19:32 +0200)
committerFrancis Dupont <fdupont@isc.org>
Wed, 10 Apr 2019 21:07:46 +0000 (17:07 -0400)
src/bin/dhcp4/json_config_parser.cc
src/lib/dhcpsrv/parsers/dhcp_parsers.cc
src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc

index 049f06ab7e5cfa17b1ef1f2508c91e6a31b37fc8..cbb6425e67f47e0539fd206642a2e5eee36595f8 100644 (file)
@@ -667,101 +667,5 @@ configureDhcp4Server(Dhcpv4Srv& server, isc::data::ConstElementPtr config_set,
     return (answer);
 }
 
-void databaseConfigFetch(const SrvConfigPtr& srv_cfg) {
-
-    ConfigBackendDHCPv4Mgr& mgr = ConfigBackendDHCPv4Mgr::instance();
-
-    // Close any existing CB databasess, then open all in srv_cfg (if any)
-    if (!databaseConfigConnect(srv_cfg)) {
-        // There are no CB databases so we're done
-        return;
-    }
-
-    LOG_INFO(dhcp4_logger, DHCP4_CONFIG_FETCH);
-
-    // For now we find data based on first backend that has it.
-    BackendSelector backend_selector(BackendSelector::Type::UNSPEC);
-
-    // Use the server_tag if set, otherwise use ALL.
-    std::string server_tag = srv_cfg->getServerTag();
-    ServerSelector& server_selector = (server_tag.empty()? ServerSelector::ALL()
-                                                         : ServerSelector::ONE(server_tag));
-    // Create the external config into which we'll fetch backend config data.
-    SrvConfigPtr external_cfg = CfgMgr::instance().createExternalCfg();
-
-    // First let's fetch the globals and add them to external config.
-    data::StampedValueCollection globals;
-    globals = mgr.getPool()->getAllGlobalParameters4(backend_selector, server_selector);
-    addGlobalsToConfig(external_cfg, globals);
-
-    // Now we fetch the option definitions and add them.
-    OptionDefContainer option_defs = mgr.getPool()->getAllOptionDefs4(backend_selector,
-                                                                      server_selector);
-    for (auto option_def = option_defs.begin(); option_def != option_defs.end(); ++option_def) {
-        external_cfg->getCfgOptionDef()->add((*option_def), (*option_def)->getOptionSpaceName());
-    }
-
-    // Next fetch the options. They are returned as a container of OptionDescriptors.
-    OptionContainer options = mgr.getPool()->getAllOptions4(backend_selector, server_selector);
-    for (auto option = options.begin(); option != options.end(); ++option) {
-        external_cfg->getCfgOption()->add((*option), (*option).space_name_);
-    }
-
-    // Now fetch the shared networks.
-    SharedNetwork4Collection networks = mgr.getPool()->getAllSharedNetworks4(backend_selector,
-                                                                             server_selector);
-    for (auto network = networks.begin(); network != networks.end(); ++network) {
-        external_cfg->getCfgSharedNetworks4()->add((*network));
-    }
-
-    // Next we fetch subnets.
-    Subnet4Collection subnets = mgr.getPool()->getAllSubnets4(backend_selector, server_selector);
-    for (auto subnet = subnets.begin(); subnet != subnets.end(); ++subnet) {
-        external_cfg->getCfgSubnets4()->add((*subnet));
-    }
-
-    // Now we merge the fecthed configuration into the staging configuration.
-    CfgMgr::instance().mergeIntoStagingCfg(external_cfg->getSequence());
-    LOG_INFO(dhcp4_logger, DHCP4_CONFIG_MERGED);
-}
-
-bool databaseConfigConnect(const SrvConfigPtr& srv_cfg) {
-    // We need to get rid of any existing backends.  These would be any
-    // opened by previous configuration cycle.
-    ConfigBackendDHCPv4Mgr& mgr = ConfigBackendDHCPv4Mgr::instance();
-    mgr.delAllBackends();
-
-    // Fetch the config-control info.
-    ConstConfigControlInfoPtr config_ctl = srv_cfg->getConfigControlInfo();
-    if (!config_ctl || config_ctl->getConfigDatabases().empty()) {
-        // No config dbs, nothing to do.
-        return (false);
-    }
-
-    // Iterate over the configured DBs and instantiate them.
-    for (auto db : config_ctl->getConfigDatabases()) {
-        LOG_INFO(dhcp4_logger, DHCP4_OPEN_CONFIG_DB)
-                 .arg(db.redactedAccessString());
-        mgr.addBackend(db.getAccessString());
-    }
-
-    // Let the caller know we have opened DBs.
-    return (true);
-}
-
-
-void addGlobalsToConfig(SrvConfigPtr external_cfg, data::StampedValueCollection& cb_globals) {
-    const auto& index = cb_globals.get<StampedValueNameIndexTag>();
-    for (auto cb_global = index.begin(); cb_global != index.end(); ++cb_global) {
-
-        if ((*cb_global)->amNull()) {
-            continue;
-        }
-
-        external_cfg->addConfiguredGlobal((*cb_global)->getName(),
-                                          (*cb_global)->getElementValue());
-    }
-}
-
 }; // end of isc::dhcp namespace
 }; // end of isc namespace
index ea8ad59ea3705345f776c07e91d5755e39c1ab25..acbee86c1069234cf5a7e035ae40868934705317 100644 (file)
@@ -135,9 +135,6 @@ OptionDefParser::parse(ConstElementPtr option_def) {
     if (code64 < 0) {
         isc_throw(DhcpConfigError, "option code must not be negative "
                   "(" << getPosition("code", option_def) << ")");
-    } else if (code64 == 0) {
-        isc_throw(DhcpConfigError, "option code must not be zero "
-                  "(" << getPosition("code", option_def) << ")");
     } else if (address_family_ == AF_INET &&
                code64 > std::numeric_limits<uint8_t>::max()) {
         isc_throw(DhcpConfigError, "invalid option code '" << code64
index 949c7f7070306e4830ff73b290152d8200073fb6..89d020e9ea968febd3f1056cc4c88e5a617db231 100644 (file)
@@ -736,21 +736,6 @@ TEST_F(ParseConfigTest, badCodeOptionDefTest) {
         ASSERT_NE(0, rcode);
     }
 
-    {
-        SCOPED_TRACE("zero code");
-        std::string config =
-            "{ \"option-def\": [ {"
-            "      \"name\": \"zero\","
-            "      \"code\": 0,"
-            "      \"type\": \"ipv6-address\","
-            "      \"space\": \"isc\""
-            "  } ]"
-            "}";
-
-        int rcode = parseConfiguration(config, true);
-        ASSERT_NE(0, rcode);
-    }
-
     {
         SCOPED_TRACE("out of range code (v6)");
         std::string config =