2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-23 10:27:36 +00:00
kea/src/lib/dhcpsrv/parsers/simple_parser4.cc

589 lines
27 KiB
C++
Raw Normal View History

// Copyright (C) 2016-2025 Internet Systems Consortium, Inc. ("ISC")
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#include <config.h>
2020-04-16 14:42:34 +03:00
#include <cc/data.h>
#include <dhcpsrv/parsers/simple_parser4.h>
using namespace isc::data;
namespace isc {
namespace dhcp {
/// @brief This sets of arrays define the default values and
/// values inherited (derived) between various scopes.
///
/// Each of those is documented in @file simple_parser4.cc. This
/// is different than most other comments in Kea code. The reason
/// for placing those in .cc rather than .h file is that it
/// is expected to be one centralized place to look at for
/// the default values. This is expected to be looked at also by
/// people who are not skilled in C or C++, so they may be
2016-12-24 14:20:36 +01:00
/// confused with the differences between declaration and definition.
/// As such, there's one file to look at that hopefully is readable
/// without any C or C++ skills.
///
/// @{
/// @brief This table defines all global parameters in DHCPv4.
///
/// Boolean, integer, real and string types are for scalar parameters,
/// list and map types for entries.
/// Order follows global_param rule in bison grammar.
const SimpleKeywords SimpleParser4::GLOBAL4_PARAMETERS = {
2022-02-04 21:34:10 +01:00
{ "valid-lifetime", Element::integer },
{ "min-valid-lifetime", Element::integer },
{ "max-valid-lifetime", Element::integer },
{ "renew-timer", Element::integer },
{ "rebind-timer", Element::integer },
{ "decline-probation-period", Element::integer },
{ "subnet4", Element::list },
{ "shared-networks", Element::list },
{ "interfaces-config", Element::map },
{ "lease-database", Element::map },
{ "hosts-database", Element::map },
{ "hosts-databases", Element::list },
{ "host-reservation-identifiers", Element::list },
{ "client-classes", Element::list },
{ "option-def", Element::list },
{ "option-data", Element::list },
{ "hooks-libraries", Element::list },
{ "expired-leases-processing", Element::map },
{ "dhcp4o6-port", Element::integer },
2024-07-04 13:39:28 +02:00
{ "control-sockets", Element::list },
2022-02-04 21:34:10 +01:00
{ "dhcp-queue-control", Element::map },
{ "dhcp-ddns", Element::map },
{ "echo-client-id", Element::boolean },
{ "match-client-id", Element::boolean },
{ "authoritative", Element::boolean },
{ "next-server", Element::string },
{ "server-hostname", Element::string },
{ "boot-file-name", Element::string },
{ "user-context", Element::map },
{ "comment", Element::string },
{ "sanity-checks", Element::map },
{ "reservations", Element::list },
{ "config-control", Element::map },
{ "server-tag", Element::string },
{ "reservations-global", Element::boolean },
{ "reservations-in-subnet", Element::boolean },
{ "reservations-out-of-pool", Element::boolean },
{ "calculate-tee-times", Element::boolean },
{ "t1-percent", Element::real },
{ "t2-percent", Element::real },
{ "loggers", Element::list },
{ "hostname-char-set", Element::string },
{ "hostname-char-replacement", Element::string },
{ "ddns-send-updates", Element::boolean },
{ "ddns-override-no-update", Element::boolean },
{ "ddns-override-client-update", Element::boolean },
{ "ddns-replace-client-name", Element::string },
{ "ddns-generated-prefix", Element::string },
{ "ddns-qualifying-suffix", Element::string },
{ "store-extended-info", Element::boolean },
{ "statistic-default-sample-count", Element::integer },
{ "statistic-default-sample-age", Element::integer },
{ "multi-threading", Element::map },
{ "cache-threshold", Element::real },
{ "cache-max-age", Element::integer },
{ "early-global-reservations-lookup", Element::boolean },
{ "ip-reservations-unique", Element::boolean },
{ "reservations-lookup-first", Element::boolean },
{ "ddns-update-on-renew", Element::boolean },
{ "compatibility", Element::map },
{ "parked-packet-limit", Element::integer },
2022-11-18 10:21:20 +01:00
{ "allocator", Element::string },
{ "offer-lifetime", Element::integer },
{ "ddns-ttl-percent", Element::real },
[#2276] Initial impl ddns-resolution-conflict-mode New Files: src/bin/d2/check_exists_add.cc src/bin/d2/check_exists_add.h src/bin/d2/check_exists_remove.cc src/bin/d2/check_exists_remove.h src/bin/d2/simple_add_without_dhcid.cc src/bin/d2/simple_add_without_dhcid.h src/bin/d2/simple_remove_without_dhcid.cc src/bin/d2/simple_remove_without_dhcid.h src/bin/d2/tests/check_exists_add_unittests.cc src/bin/d2/tests/check_exists_remove_unittests.cc src/bin/d2/tests/simple_add_without_dhcid_unittests.cc src/bin/d2/tests/simple_remove_without_dhcid_unittests.cc Modified: doc/examples/kea4/all-keys.json doc/examples/kea4/with-ddns.json doc/examples/kea6/all-keys.json doc/examples/kea6/with-ddns.json src/bin/d2/Makefile.am src/bin/d2/check_exists_add.cc src/bin/d2/check_exists_add.h src/bin/d2/check_exists_remove.cc src/bin/d2/check_exists_remove.h src/bin/d2/d2_update_mgr.cc src/bin/d2/simple_add_without_dhcid.cc src/bin/d2/simple_add_without_dhcid.h src/bin/d2/simple_remove_without_dhcid.cc src/bin/d2/simple_remove_without_dhcid.h src/bin/d2/tests/Makefile.am src/bin/d2/tests/check_exists_add_unittests.cc src/bin/d2/tests/check_exists_remove_unittests.cc src/bin/d2/tests/d2_process_unittests.cc src/bin/d2/tests/d2_queue_mgr_unittests.cc src/bin/d2/tests/d2_update_mgr_unittests.cc src/bin/d2/tests/nc_add_unittests.cc src/bin/d2/tests/nc_remove_unittests.cc src/bin/d2/tests/simple_add_unittests.cc src/bin/d2/tests/simple_add_without_dhcid_unittests.cc src/bin/d2/tests/simple_remove_unittests.cc src/bin/d2/tests/simple_remove_without_dhcid_unittests.cc src/bin/dhcp4/dhcp4_lexer.cc src/bin/dhcp4/dhcp4_lexer.ll src/bin/dhcp4/dhcp4_parser.cc src/bin/dhcp4/dhcp4_parser.h src/bin/dhcp4/dhcp4_parser.yy src/bin/dhcp4/json_config_parser.cc src/bin/dhcp4/location.hh src/bin/dhcp4/parser_context.h src/bin/dhcp4/tests/config_parser_unittest.cc src/bin/dhcp4/tests/d2_unittest.cc src/bin/dhcp4/tests/fqdn_unittest.cc src/bin/dhcp4/tests/get_config_unittest.cc src/bin/dhcp6/dhcp6_lexer.cc src/bin/dhcp6/dhcp6_lexer.ll src/bin/dhcp6/dhcp6_parser.cc src/bin/dhcp6/dhcp6_parser.h src/bin/dhcp6/dhcp6_parser.yy src/bin/dhcp6/dhcp6_srv.cc src/bin/dhcp6/json_config_parser.cc src/bin/dhcp6/location.hh src/bin/dhcp6/parser_context.h src/bin/dhcp6/tests/config_parser_unittest.cc src/bin/dhcp6/tests/d2_unittest.cc src/bin/dhcp6/tests/fqdn_unittest.cc src/bin/dhcp6/tests/get_config_unittest.cc src/lib/d2srv/testutils/nc_test_utils.cc src/lib/d2srv/testutils/nc_test_utils.h src/lib/dhcp_ddns/ncr_msg.cc src/lib/dhcp_ddns/ncr_msg.h src/lib/dhcp_ddns/tests/ncr_udp_unittests.cc src/lib/dhcp_ddns/tests/ncr_unittests.cc src/lib/dhcpsrv/cfg_globals.cc src/lib/dhcpsrv/cfg_globals.h src/lib/dhcpsrv/ncr_generator.cc src/lib/dhcpsrv/network.cc src/lib/dhcpsrv/network.h src/lib/dhcpsrv/parsers/base_network_parser.cc src/lib/dhcpsrv/parsers/base_network_parser.h src/lib/dhcpsrv/parsers/simple_parser4.cc src/lib/dhcpsrv/parsers/simple_parser6.cc src/lib/dhcpsrv/srv_config.cc src/lib/dhcpsrv/srv_config.h src/lib/dhcpsrv/tests/d2_udp_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/ncr_generator_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/srv_config_unittest.cc
2023-05-31 13:51:19 -04:00
{ "ddns-conflict-resolution-mode", Element::string },
2024-03-30 10:23:23 +01:00
{ "stash-agent-options", Element::boolean },
[#2819] kea-dhcp4 supports ddns-ttl, min, and max Added support for ddns-ttl,ddns-ttl-min, and ddsn-ttl-max to global,shared-network, and subnet for kea-dhcp4 Changes to be committed: modified: doc/examples/kea4/all-keys.json modified: src/bin/dhcp4/dhcp4_lexer.cc modified: src/bin/dhcp4/dhcp4_lexer.ll modified: src/bin/dhcp4/dhcp4_parser.cc modified: src/bin/dhcp4/dhcp4_parser.h modified: src/bin/dhcp4/dhcp4_parser.yy modified: src/bin/dhcp4/json_config_parser.cc modified: src/bin/dhcp4/tests/config_parser_unittest.cc modified: src/bin/dhcp4/tests/fqdn_unittest.cc modified: src/bin/dhcp4/tests/get_config_unittest.cc modified: src/bin/dhcp6/json_config_parser.cc modified: src/lib/dhcpsrv/cb_ctl_dhcp4.cc modified: src/lib/dhcpsrv/cb_ctl_dhcp6.cc modified: src/lib/dhcpsrv/cfg_globals.cc modified: src/lib/dhcpsrv/cfg_globals.h modified: src/lib/dhcpsrv/dhcpsrv_messages.cc modified: src/lib/dhcpsrv/dhcpsrv_messages.h modified: src/lib/dhcpsrv/dhcpsrv_messages.mes modified: src/lib/dhcpsrv/ncr_generator.cc modified: src/lib/dhcpsrv/ncr_generator.h modified: src/lib/dhcpsrv/network.cc modified: src/lib/dhcpsrv/network.h modified: src/lib/dhcpsrv/parsers/base_network_parser.cc modified: src/lib/dhcpsrv/parsers/simple_parser4.cc modified: src/lib/dhcpsrv/parsers/simple_parser6.cc modified: src/lib/dhcpsrv/srv_config.cc modified: src/lib/dhcpsrv/srv_config.h modified: src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc modified: src/lib/dhcpsrv/tests/ncr_generator_unittest.cc modified: src/lib/dhcpsrv/tests/network_unittest.cc modified: src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc modified: src/lib/dhcpsrv/tests/srv_config_unittest.cc modified: src/lib/util/str.cc modified: src/lib/util/str.h
2024-11-19 15:23:08 -05:00
{ "ddns-ttl", Element::integer },
{ "ddns-ttl-min", Element::integer },
{ "ddns-ttl-max", Element::integer },
{ "adaptive-lease-time-threshold", Element::real },
};
/// @brief This table defines default global values for DHCPv4
///
/// Some of the global parameters defined in the global scope (i.e. directly
/// in Dhcp4) are optional. If not defined, the following values will be
/// used.
const SimpleDefaults SimpleParser4::GLOBAL4_DEFAULTS = {
2022-02-04 21:34:10 +01:00
{ "valid-lifetime", Element::integer, "7200" },
{ "decline-probation-period", Element::integer, "86400" }, // 24h
{ "dhcp4o6-port", Element::integer, "0" },
{ "echo-client-id", Element::boolean, "true" },
{ "match-client-id", Element::boolean, "true" },
{ "authoritative", Element::boolean, "false" },
{ "next-server", Element::string, "0.0.0.0" },
{ "server-hostname", Element::string, "" },
{ "boot-file-name", Element::string, "" },
{ "server-tag", Element::string, "" },
{ "reservations-global", Element::boolean, "false" },
{ "reservations-in-subnet", Element::boolean, "true" },
{ "reservations-out-of-pool", Element::boolean, "false" },
{ "calculate-tee-times", Element::boolean, "false" },
{ "t1-percent", Element::real, ".50" },
{ "t2-percent", Element::real, ".875" },
{ "ddns-send-updates", Element::boolean, "true" },
{ "ddns-override-no-update", Element::boolean, "false" },
{ "ddns-override-client-update", Element::boolean, "false" },
{ "ddns-replace-client-name", Element::string, "never" },
{ "ddns-generated-prefix", Element::string, "myhost" },
{ "ddns-qualifying-suffix", Element::string, "" },
{ "hostname-char-set", Element::string, "[^A-Za-z0-9.-]" },
{ "hostname-char-replacement", Element::string, "" },
{ "store-extended-info", Element::boolean, "false" },
{ "statistic-default-sample-count", Element::integer, "20" },
{ "statistic-default-sample-age", Element::integer, "0" },
{ "early-global-reservations-lookup", Element::boolean, "false" },
{ "ip-reservations-unique", Element::boolean, "true" },
{ "reservations-lookup-first", Element::boolean, "false" },
{ "ddns-update-on-renew", Element::boolean, "false" },
{ "parked-packet-limit", Element::integer, "256" },
2022-11-21 12:13:01 +01:00
{ "allocator", Element::string, "iterative" },
[#2276] Initial impl ddns-resolution-conflict-mode New Files: src/bin/d2/check_exists_add.cc src/bin/d2/check_exists_add.h src/bin/d2/check_exists_remove.cc src/bin/d2/check_exists_remove.h src/bin/d2/simple_add_without_dhcid.cc src/bin/d2/simple_add_without_dhcid.h src/bin/d2/simple_remove_without_dhcid.cc src/bin/d2/simple_remove_without_dhcid.h src/bin/d2/tests/check_exists_add_unittests.cc src/bin/d2/tests/check_exists_remove_unittests.cc src/bin/d2/tests/simple_add_without_dhcid_unittests.cc src/bin/d2/tests/simple_remove_without_dhcid_unittests.cc Modified: doc/examples/kea4/all-keys.json doc/examples/kea4/with-ddns.json doc/examples/kea6/all-keys.json doc/examples/kea6/with-ddns.json src/bin/d2/Makefile.am src/bin/d2/check_exists_add.cc src/bin/d2/check_exists_add.h src/bin/d2/check_exists_remove.cc src/bin/d2/check_exists_remove.h src/bin/d2/d2_update_mgr.cc src/bin/d2/simple_add_without_dhcid.cc src/bin/d2/simple_add_without_dhcid.h src/bin/d2/simple_remove_without_dhcid.cc src/bin/d2/simple_remove_without_dhcid.h src/bin/d2/tests/Makefile.am src/bin/d2/tests/check_exists_add_unittests.cc src/bin/d2/tests/check_exists_remove_unittests.cc src/bin/d2/tests/d2_process_unittests.cc src/bin/d2/tests/d2_queue_mgr_unittests.cc src/bin/d2/tests/d2_update_mgr_unittests.cc src/bin/d2/tests/nc_add_unittests.cc src/bin/d2/tests/nc_remove_unittests.cc src/bin/d2/tests/simple_add_unittests.cc src/bin/d2/tests/simple_add_without_dhcid_unittests.cc src/bin/d2/tests/simple_remove_unittests.cc src/bin/d2/tests/simple_remove_without_dhcid_unittests.cc src/bin/dhcp4/dhcp4_lexer.cc src/bin/dhcp4/dhcp4_lexer.ll src/bin/dhcp4/dhcp4_parser.cc src/bin/dhcp4/dhcp4_parser.h src/bin/dhcp4/dhcp4_parser.yy src/bin/dhcp4/json_config_parser.cc src/bin/dhcp4/location.hh src/bin/dhcp4/parser_context.h src/bin/dhcp4/tests/config_parser_unittest.cc src/bin/dhcp4/tests/d2_unittest.cc src/bin/dhcp4/tests/fqdn_unittest.cc src/bin/dhcp4/tests/get_config_unittest.cc src/bin/dhcp6/dhcp6_lexer.cc src/bin/dhcp6/dhcp6_lexer.ll src/bin/dhcp6/dhcp6_parser.cc src/bin/dhcp6/dhcp6_parser.h src/bin/dhcp6/dhcp6_parser.yy src/bin/dhcp6/dhcp6_srv.cc src/bin/dhcp6/json_config_parser.cc src/bin/dhcp6/location.hh src/bin/dhcp6/parser_context.h src/bin/dhcp6/tests/config_parser_unittest.cc src/bin/dhcp6/tests/d2_unittest.cc src/bin/dhcp6/tests/fqdn_unittest.cc src/bin/dhcp6/tests/get_config_unittest.cc src/lib/d2srv/testutils/nc_test_utils.cc src/lib/d2srv/testutils/nc_test_utils.h src/lib/dhcp_ddns/ncr_msg.cc src/lib/dhcp_ddns/ncr_msg.h src/lib/dhcp_ddns/tests/ncr_udp_unittests.cc src/lib/dhcp_ddns/tests/ncr_unittests.cc src/lib/dhcpsrv/cfg_globals.cc src/lib/dhcpsrv/cfg_globals.h src/lib/dhcpsrv/ncr_generator.cc src/lib/dhcpsrv/network.cc src/lib/dhcpsrv/network.h src/lib/dhcpsrv/parsers/base_network_parser.cc src/lib/dhcpsrv/parsers/base_network_parser.h src/lib/dhcpsrv/parsers/simple_parser4.cc src/lib/dhcpsrv/parsers/simple_parser6.cc src/lib/dhcpsrv/srv_config.cc src/lib/dhcpsrv/srv_config.h src/lib/dhcpsrv/tests/d2_udp_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/ncr_generator_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/srv_config_unittest.cc
2023-05-31 13:51:19 -04:00
{ "ddns-conflict-resolution-mode", Element::string, "check-with-dhcid" },
2024-03-30 10:23:23 +01:00
{ "stash-agent-options", Element::boolean, "false" },
{ "cache-threshold", Element::real, "0.25" },
};
const SimpleKeywords SimpleParser4::GLOBAL4_LIST_PARAMETERS = {
{ "host-reservation-identifiers", Element::list },
/* not yet supported
{ "interfaces-config.interfaces", Element::list },
*/
};
const SimpleKeywords SimpleParser4::GLOBAL4_LIST_PARAMETER_TYPES = {
{ "host-reservation-identifiers", Element::string },
/* not yet supported
{ "interfaces-config.interfaces", Element::string },
*/
};
/// @brief This table defines all option definition parameters.
///
/// Boolean, integer, real and string types are for scalar parameters,
/// list and map types for entries.
/// Order follows option_def_param rules in bison grammar.
const SimpleKeywords SimpleParser4::OPTION4_DEF_PARAMETERS = {
{ "name", Element::string },
{ "code", Element::integer },
{ "type", Element::string },
{ "record-types", Element::string },
{ "space", Element::string },
{ "encapsulate", Element::string },
{ "array", Element::boolean, },
{ "user-context", Element::map },
{ "comment", Element::string },
{ "metadata", Element::map }
};
/// @brief This table defines default values for option definitions in DHCPv4.
///
/// Dhcp4 may contain an array called option-def that enumerates new option
/// definitions. This array lists default values for those option definitions.
const SimpleDefaults SimpleParser4::OPTION4_DEF_DEFAULTS = {
{ "record-types", Element::string, ""},
2020-08-04 13:04:42 +02:00
{ "space", Element::string, "dhcp4"}, // DHCP4_OPTION_SPACE
{ "array", Element::boolean, "false"},
{ "encapsulate", Element::string, "" }
};
/// @brief This table defines all option parameters.
///
/// Boolean, integer, real and string types are for scalar parameters,
/// list and map types for entries.
/// Order follows option_param rules in bison grammar.
const SimpleKeywords SimpleParser4::OPTION4_PARAMETERS = {
{ "name", Element::string },
{ "data", Element::string },
{ "code", Element::integer },
{ "space", Element::string },
{ "csv-format", Element::boolean },
{ "always-send", Element::boolean },
{ "never-send", Element::boolean },
{ "user-context", Element::map },
{ "comment", Element::string },
{ "client-classes", Element::list },
{ "metadata", Element::map }
};
/// @brief This table defines default values for options in DHCPv4.
///
/// Dhcp4 usually contains option values (option-data) defined in global,
/// subnet, class or host reservations scopes. This array lists default values
/// for those option-data declarations.
const SimpleDefaults SimpleParser4::OPTION4_DEFAULTS = {
2020-08-04 13:04:42 +02:00
{ "space", Element::string, "dhcp4"}, // DHCP4_OPTION_SPACE
{ "csv-format", Element::boolean, "true"},
2023-03-06 17:34:30 +01:00
{ "always-send", Element::boolean, "false"},
{ "never-send", Element::boolean, "false"}
};
/// @brief This table defines all subnet parameters for DHCPv4.
///
/// Boolean, integer, real and string types are for scalar parameters,
/// list and map types for entries.
/// Order follows subnet4_param rule in bison grammar.
const SimpleKeywords SimpleParser4::SUBNET4_PARAMETERS = {
[#35,!517] Added DDDNS parameters to networks,subnets, and their parsers src/lib/dhcpsrv/network.* Network - added DDNS parameters: Optional members, getters, setters Network::toElement() - added DDNS parameters src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::parseDdnsParams() - new method to parse DDNS parameters BaseNetworkParser::parseLifetime() - fixed unitialized variables warning src/lib/dhcpsrv/parsers/dhcp_parsers.cc Subnet4ConfigParser::initSubnet() Subnet6ConfigParser::initSubnet() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/shared_network_parser.cc SharedNetwork4Parser::parse() SharedNetwork6Parser::parse() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/simple_parser4.cc SimpleParser4::GLOBAL4_PARAMETERS SimpleParser4::GLOBAL4_DEFAULTS SimpleParser4::SUBNET4_PARAMETERS SimpleParser4::INHERIT_TO_SUBNET4 SimpleParser4::SHARED_NETWORK4_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/parsers/simple_parser6.cc SimpleParser6::GLOBAL6_PARAMETERS SimpleParser6::GLOBAL6_DEFAULTS SimpleParser6::SUBNET6_PARAMETERS SimpleParser6::INHERIT_TO_SUBNET6 SimpleParser6::SHARED_NETWORK6_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests.
2019-09-26 08:33:41 -04:00
{ "valid-lifetime", Element::integer },
{ "min-valid-lifetime", Element::integer },
{ "max-valid-lifetime", Element::integer },
{ "renew-timer", Element::integer },
{ "rebind-timer", Element::integer },
{ "option-data", Element::list },
{ "pools", Element::list },
{ "subnet", Element::string },
{ "interface", Element::string },
{ "id", Element::integer },
{ "client-class", Element::string },
[#3592] modified in lib dhcp and dhcpsrv src/lib/dhcp/classify.* ClientClasses:intersects() - new function src/lib/dhcp/tests/classify_unittest.cc TEST(ClassifyTest, ClientClassesIntersects) - new test src/lib/dhcpsrv/cfg_option.cc OptionDescriptor::allowedForClientClasses() use inet intersects() function src/lib/dhcpsrv/dhcpsrv_messages.mes DHCPSRV_CLIENT_CLASS_DEPRECATED - new message src/lib/dhcpsrv/network.* Network - replaced client_class_ string with client_classes_ container Network::clientSupported() - uses new intersects() function Network::allowClientClass() - modified to insert Network::toElement() - updated src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::getClientClassesElem() - new function src/lib/dhcpsrv/parsers/dhcp_parsers.cc src/lib/dhcpsrv/parsers/shared_network_parser.cc Updated parsers to use BaseNetworkParser::getClientClassesElem() src/lib/dhcpsrv/parsers/simple_parser4.cc src/lib/dhcpsrv/parsers/simple_parser6.cc Added client-classes src/lib/dhcpsrv/pool.* replaced client_class_ string with client_classes_ container Pool::clientSupported()- use new intersects() function src/lib/dhcpsrv/shared_network.cc ShareNetwork::getPreferredSubnet() - updated src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc Updated tests src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc TEST_F(DhcpParserTest, deprecatedClientClassSubnet4) TEST_F(DhcpParserTest, deprecatedClientClassSubnet6) { TEST_F(DhcpParserTest, deprecatedClientClassPool4) { TEST_F(DhcpParserTest, deprecatedClientClassPool6) { src/lib/dhcpsrv/tests/network_unittest.cc Removed inheritance support check src/lib/dhcpsrv/tests/pool_unittest.cc Updated tests src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc TEST_F(SharedNetwork4ParserTest, deprecatedClientClass) TEST_F(SharedNetwork6ParserTest, deprecatedClientClass) src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests src/lib/dhcpsrv/testutils/generic_cb_dhcp4_unittest.cc src/lib/dhcpsrv/testutils/generic_cb_dhcp6_unittest.cc Updated tests
2024-10-30 14:31:18 -04:00
{ "client-classes", Element::list },
[#35,!517] Added DDDNS parameters to networks,subnets, and their parsers src/lib/dhcpsrv/network.* Network - added DDNS parameters: Optional members, getters, setters Network::toElement() - added DDNS parameters src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::parseDdnsParams() - new method to parse DDNS parameters BaseNetworkParser::parseLifetime() - fixed unitialized variables warning src/lib/dhcpsrv/parsers/dhcp_parsers.cc Subnet4ConfigParser::initSubnet() Subnet6ConfigParser::initSubnet() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/shared_network_parser.cc SharedNetwork4Parser::parse() SharedNetwork6Parser::parse() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/simple_parser4.cc SimpleParser4::GLOBAL4_PARAMETERS SimpleParser4::GLOBAL4_DEFAULTS SimpleParser4::SUBNET4_PARAMETERS SimpleParser4::INHERIT_TO_SUBNET4 SimpleParser4::SHARED_NETWORK4_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/parsers/simple_parser6.cc SimpleParser6::GLOBAL6_PARAMETERS SimpleParser6::GLOBAL6_DEFAULTS SimpleParser6::SUBNET6_PARAMETERS SimpleParser6::INHERIT_TO_SUBNET6 SimpleParser6::SHARED_NETWORK6_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests.
2019-09-26 08:33:41 -04:00
{ "require-client-classes", Element::list },
{ "evaluate-additional-classes", Element::list },
[#35,!517] Added DDDNS parameters to networks,subnets, and their parsers src/lib/dhcpsrv/network.* Network - added DDNS parameters: Optional members, getters, setters Network::toElement() - added DDNS parameters src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::parseDdnsParams() - new method to parse DDNS parameters BaseNetworkParser::parseLifetime() - fixed unitialized variables warning src/lib/dhcpsrv/parsers/dhcp_parsers.cc Subnet4ConfigParser::initSubnet() Subnet6ConfigParser::initSubnet() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/shared_network_parser.cc SharedNetwork4Parser::parse() SharedNetwork6Parser::parse() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/simple_parser4.cc SimpleParser4::GLOBAL4_PARAMETERS SimpleParser4::GLOBAL4_DEFAULTS SimpleParser4::SUBNET4_PARAMETERS SimpleParser4::INHERIT_TO_SUBNET4 SimpleParser4::SHARED_NETWORK4_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/parsers/simple_parser6.cc SimpleParser6::GLOBAL6_PARAMETERS SimpleParser6::GLOBAL6_DEFAULTS SimpleParser6::SUBNET6_PARAMETERS SimpleParser6::INHERIT_TO_SUBNET6 SimpleParser6::SHARED_NETWORK6_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests.
2019-09-26 08:33:41 -04:00
{ "reservations", Element::list },
{ "reservations-global", Element::boolean },
2020-11-11 11:06:18 +02:00
{ "reservations-in-subnet", Element::boolean },
{ "reservations-out-of-pool", Element::boolean },
[#35,!517] Added DDDNS parameters to networks,subnets, and their parsers src/lib/dhcpsrv/network.* Network - added DDNS parameters: Optional members, getters, setters Network::toElement() - added DDNS parameters src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::parseDdnsParams() - new method to parse DDNS parameters BaseNetworkParser::parseLifetime() - fixed unitialized variables warning src/lib/dhcpsrv/parsers/dhcp_parsers.cc Subnet4ConfigParser::initSubnet() Subnet6ConfigParser::initSubnet() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/shared_network_parser.cc SharedNetwork4Parser::parse() SharedNetwork6Parser::parse() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/simple_parser4.cc SimpleParser4::GLOBAL4_PARAMETERS SimpleParser4::GLOBAL4_DEFAULTS SimpleParser4::SUBNET4_PARAMETERS SimpleParser4::INHERIT_TO_SUBNET4 SimpleParser4::SHARED_NETWORK4_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/parsers/simple_parser6.cc SimpleParser6::GLOBAL6_PARAMETERS SimpleParser6::GLOBAL6_DEFAULTS SimpleParser6::SUBNET6_PARAMETERS SimpleParser6::INHERIT_TO_SUBNET6 SimpleParser6::SHARED_NETWORK6_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests.
2019-09-26 08:33:41 -04:00
{ "relay", Element::map },
{ "match-client-id", Element::boolean },
{ "authoritative", Element::boolean },
{ "next-server", Element::string },
{ "server-hostname", Element::string },
{ "boot-file-name", Element::string },
{ "4o6-interface", Element::string },
{ "4o6-interface-id", Element::string },
{ "4o6-subnet", Element::string },
{ "user-context", Element::map },
{ "comment", Element::string },
{ "calculate-tee-times", Element::boolean },
{ "t1-percent", Element::real },
{ "t2-percent", Element::real },
{ "ddns-send-updates", Element::boolean },
{ "ddns-override-no-update", Element::boolean },
{ "ddns-override-client-update", Element::boolean },
{ "ddns-replace-client-name", Element::string },
{ "ddns-generated-prefix", Element::string },
{ "ddns-qualifying-suffix", Element::string },
{ "hostname-char-set", Element::string },
{ "hostname-char-replacement", Element::string },
{ "store-extended-info", Element::boolean },
{ "metadata", Element::map },
{ "cache-threshold", Element::real },
{ "cache-max-age", Element::integer },
{ "ddns-update-on-renew", Element::boolean },
{ "allocator", Element::string },
{ "offer-lifetime", Element::integer },
{ "ddns-ttl-percent", Element::real },
[#2276] Initial impl ddns-resolution-conflict-mode New Files: src/bin/d2/check_exists_add.cc src/bin/d2/check_exists_add.h src/bin/d2/check_exists_remove.cc src/bin/d2/check_exists_remove.h src/bin/d2/simple_add_without_dhcid.cc src/bin/d2/simple_add_without_dhcid.h src/bin/d2/simple_remove_without_dhcid.cc src/bin/d2/simple_remove_without_dhcid.h src/bin/d2/tests/check_exists_add_unittests.cc src/bin/d2/tests/check_exists_remove_unittests.cc src/bin/d2/tests/simple_add_without_dhcid_unittests.cc src/bin/d2/tests/simple_remove_without_dhcid_unittests.cc Modified: doc/examples/kea4/all-keys.json doc/examples/kea4/with-ddns.json doc/examples/kea6/all-keys.json doc/examples/kea6/with-ddns.json src/bin/d2/Makefile.am src/bin/d2/check_exists_add.cc src/bin/d2/check_exists_add.h src/bin/d2/check_exists_remove.cc src/bin/d2/check_exists_remove.h src/bin/d2/d2_update_mgr.cc src/bin/d2/simple_add_without_dhcid.cc src/bin/d2/simple_add_without_dhcid.h src/bin/d2/simple_remove_without_dhcid.cc src/bin/d2/simple_remove_without_dhcid.h src/bin/d2/tests/Makefile.am src/bin/d2/tests/check_exists_add_unittests.cc src/bin/d2/tests/check_exists_remove_unittests.cc src/bin/d2/tests/d2_process_unittests.cc src/bin/d2/tests/d2_queue_mgr_unittests.cc src/bin/d2/tests/d2_update_mgr_unittests.cc src/bin/d2/tests/nc_add_unittests.cc src/bin/d2/tests/nc_remove_unittests.cc src/bin/d2/tests/simple_add_unittests.cc src/bin/d2/tests/simple_add_without_dhcid_unittests.cc src/bin/d2/tests/simple_remove_unittests.cc src/bin/d2/tests/simple_remove_without_dhcid_unittests.cc src/bin/dhcp4/dhcp4_lexer.cc src/bin/dhcp4/dhcp4_lexer.ll src/bin/dhcp4/dhcp4_parser.cc src/bin/dhcp4/dhcp4_parser.h src/bin/dhcp4/dhcp4_parser.yy src/bin/dhcp4/json_config_parser.cc src/bin/dhcp4/location.hh src/bin/dhcp4/parser_context.h src/bin/dhcp4/tests/config_parser_unittest.cc src/bin/dhcp4/tests/d2_unittest.cc src/bin/dhcp4/tests/fqdn_unittest.cc src/bin/dhcp4/tests/get_config_unittest.cc src/bin/dhcp6/dhcp6_lexer.cc src/bin/dhcp6/dhcp6_lexer.ll src/bin/dhcp6/dhcp6_parser.cc src/bin/dhcp6/dhcp6_parser.h src/bin/dhcp6/dhcp6_parser.yy src/bin/dhcp6/dhcp6_srv.cc src/bin/dhcp6/json_config_parser.cc src/bin/dhcp6/location.hh src/bin/dhcp6/parser_context.h src/bin/dhcp6/tests/config_parser_unittest.cc src/bin/dhcp6/tests/d2_unittest.cc src/bin/dhcp6/tests/fqdn_unittest.cc src/bin/dhcp6/tests/get_config_unittest.cc src/lib/d2srv/testutils/nc_test_utils.cc src/lib/d2srv/testutils/nc_test_utils.h src/lib/dhcp_ddns/ncr_msg.cc src/lib/dhcp_ddns/ncr_msg.h src/lib/dhcp_ddns/tests/ncr_udp_unittests.cc src/lib/dhcp_ddns/tests/ncr_unittests.cc src/lib/dhcpsrv/cfg_globals.cc src/lib/dhcpsrv/cfg_globals.h src/lib/dhcpsrv/ncr_generator.cc src/lib/dhcpsrv/network.cc src/lib/dhcpsrv/network.h src/lib/dhcpsrv/parsers/base_network_parser.cc src/lib/dhcpsrv/parsers/base_network_parser.h src/lib/dhcpsrv/parsers/simple_parser4.cc src/lib/dhcpsrv/parsers/simple_parser6.cc src/lib/dhcpsrv/srv_config.cc src/lib/dhcpsrv/srv_config.h src/lib/dhcpsrv/tests/d2_udp_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/ncr_generator_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/srv_config_unittest.cc
2023-05-31 13:51:19 -04:00
{ "ddns-conflict-resolution-mode", Element::string },
[#2819] kea-dhcp4 supports ddns-ttl, min, and max Added support for ddns-ttl,ddns-ttl-min, and ddsn-ttl-max to global,shared-network, and subnet for kea-dhcp4 Changes to be committed: modified: doc/examples/kea4/all-keys.json modified: src/bin/dhcp4/dhcp4_lexer.cc modified: src/bin/dhcp4/dhcp4_lexer.ll modified: src/bin/dhcp4/dhcp4_parser.cc modified: src/bin/dhcp4/dhcp4_parser.h modified: src/bin/dhcp4/dhcp4_parser.yy modified: src/bin/dhcp4/json_config_parser.cc modified: src/bin/dhcp4/tests/config_parser_unittest.cc modified: src/bin/dhcp4/tests/fqdn_unittest.cc modified: src/bin/dhcp4/tests/get_config_unittest.cc modified: src/bin/dhcp6/json_config_parser.cc modified: src/lib/dhcpsrv/cb_ctl_dhcp4.cc modified: src/lib/dhcpsrv/cb_ctl_dhcp6.cc modified: src/lib/dhcpsrv/cfg_globals.cc modified: src/lib/dhcpsrv/cfg_globals.h modified: src/lib/dhcpsrv/dhcpsrv_messages.cc modified: src/lib/dhcpsrv/dhcpsrv_messages.h modified: src/lib/dhcpsrv/dhcpsrv_messages.mes modified: src/lib/dhcpsrv/ncr_generator.cc modified: src/lib/dhcpsrv/ncr_generator.h modified: src/lib/dhcpsrv/network.cc modified: src/lib/dhcpsrv/network.h modified: src/lib/dhcpsrv/parsers/base_network_parser.cc modified: src/lib/dhcpsrv/parsers/simple_parser4.cc modified: src/lib/dhcpsrv/parsers/simple_parser6.cc modified: src/lib/dhcpsrv/srv_config.cc modified: src/lib/dhcpsrv/srv_config.h modified: src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc modified: src/lib/dhcpsrv/tests/ncr_generator_unittest.cc modified: src/lib/dhcpsrv/tests/network_unittest.cc modified: src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc modified: src/lib/dhcpsrv/tests/srv_config_unittest.cc modified: src/lib/util/str.cc modified: src/lib/util/str.h
2024-11-19 15:23:08 -05:00
{ "ddns-ttl", Element::integer },
{ "ddns-ttl-min", Element::integer },
{ "ddns-ttl-max", Element::integer },
{ "adaptive-lease-time-threshold", Element::real },
};
/// @brief This table defines default values for each IPv4 subnet.
///
/// Note: When updating this array, please also update SHARED_SUBNET4_DEFAULTS
/// below. In most cases, those two should be kept in sync, except cases
/// where a parameter can be derived from shared-networks, but is not
/// defined on global level. Currently there in only one such parameter:
/// interface.
const SimpleDefaults SimpleParser4::SUBNET4_DEFAULTS = {
{ "interface", Element::string, "" },
{ "4o6-interface", Element::string, "" },
{ "4o6-interface-id", Element::string, "" },
{ "4o6-subnet", Element::string, "" },
};
/// @brief This table defines default values for each IPv4 subnet that is
/// part of a shared network
///
/// This is mostly the same as @ref SUBNET4_DEFAULTS, except one parameter
/// that can be derived from shared-network, but cannot from global scope.
/// This is: interface.
const SimpleDefaults SimpleParser4::SHARED_SUBNET4_DEFAULTS = {
{ "4o6-interface", Element::string, "" },
{ "4o6-interface-id", Element::string, "" },
{ "4o6-subnet", Element::string, "" },
};
2023-06-15 19:36:55 +03:00
/// @brief This table defines default values for each IPv4 shared network.
const SimpleDefaults SimpleParser4::SHARED_NETWORK4_DEFAULTS = {
{ "interface", Element::string, "" }
};
/// @brief List of parameters that can be inherited from the global to subnet4 scope.
///
/// Some parameters may be defined on both global (directly in Dhcp4) and
/// subnet (Dhcp4/subnet4/...) scope. If not defined in the subnet scope,
/// the value is being inherited (derived) from the global scope. This
/// array lists all of such parameters.
///
/// This list is also used for inheriting from global to shared networks
/// and from shared networks to subnets within it.
const ParamsList SimpleParser4::INHERIT_TO_SUBNET4 = {
"rebind-timer",
"relay",
"renew-timer",
"valid-lifetime",
"min-valid-lifetime",
"max-valid-lifetime",
"calculate-tee-times",
"t1-percent",
"t2-percent",
"store-extended-info",
"cache-threshold",
2022-11-18 10:21:20 +01:00
"cache-max-age",
"allocator",
"offer-lifetime",
"adaptive-lease-time-threshold",
};
/// @brief This table defines all pool parameters.
///
/// Boolean, integer, real and string types are for scalar parameters,
/// list and map types for entries.
/// Order follows pool_param rules in bison grammar.
const SimpleKeywords SimpleParser4::POOL4_PARAMETERS = {
{ "pool", Element::string },
{ "pool-id", Element::integer },
{ "option-data", Element::list },
{ "client-class", Element::string },
{ "client-classes", Element::list },
{ "require-client-classes", Element::list },
{ "evaluate-additional-classes", Element::list },
{ "user-context", Element::map },
{ "comment", Element::string },
{ "ddns-send-updates", Element::boolean },
{ "ddns-override-no-update", Element::boolean },
{ "ddns-override-client-update", Element::boolean },
{ "ddns-replace-client-name", Element::string },
{ "ddns-generated-prefix", Element::string },
{ "ddns-qualifying-suffix", Element::string },
{ "hostname-char-set", Element::string },
{ "hostname-char-replacement", Element::string },
{ "ddns-update-on-renew", Element::boolean },
{ "ddns-ttl-percent", Element::real },
{ "ddns-conflict-resolution-mode", Element::string },
{ "ddns-ttl", Element::integer },
{ "ddns-ttl-min", Element::integer },
{ "ddns-ttl-max", Element::integer },
{ "metadata", Element::map }
};
/// @brief This table defines all shared network parameters for DHCPv4.
///
/// Boolean, integer, real and string types are for scalar parameters,
/// list and map types for entries.
/// Order follows shared_network_param rule in bison grammar.
const SimpleKeywords SimpleParser4::SHARED_NETWORK4_PARAMETERS = {
[#35,!517] Added DDDNS parameters to networks,subnets, and their parsers src/lib/dhcpsrv/network.* Network - added DDNS parameters: Optional members, getters, setters Network::toElement() - added DDNS parameters src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::parseDdnsParams() - new method to parse DDNS parameters BaseNetworkParser::parseLifetime() - fixed unitialized variables warning src/lib/dhcpsrv/parsers/dhcp_parsers.cc Subnet4ConfigParser::initSubnet() Subnet6ConfigParser::initSubnet() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/shared_network_parser.cc SharedNetwork4Parser::parse() SharedNetwork6Parser::parse() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/simple_parser4.cc SimpleParser4::GLOBAL4_PARAMETERS SimpleParser4::GLOBAL4_DEFAULTS SimpleParser4::SUBNET4_PARAMETERS SimpleParser4::INHERIT_TO_SUBNET4 SimpleParser4::SHARED_NETWORK4_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/parsers/simple_parser6.cc SimpleParser6::GLOBAL6_PARAMETERS SimpleParser6::GLOBAL6_DEFAULTS SimpleParser6::SUBNET6_PARAMETERS SimpleParser6::INHERIT_TO_SUBNET6 SimpleParser6::SHARED_NETWORK6_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests.
2019-09-26 08:33:41 -04:00
{ "name", Element::string },
{ "subnet4", Element::list },
{ "interface", Element::string },
{ "renew-timer", Element::integer },
{ "rebind-timer", Element::integer },
{ "option-data", Element::list },
{ "match-client-id", Element::boolean },
{ "authoritative", Element::boolean },
{ "next-server", Element::string },
{ "server-hostname", Element::string },
{ "boot-file-name", Element::string },
{ "relay", Element::map },
{ "reservations-global", Element::boolean },
2020-11-11 11:06:18 +02:00
{ "reservations-in-subnet", Element::boolean },
{ "reservations-out-of-pool", Element::boolean },
[#35,!517] Added DDDNS parameters to networks,subnets, and their parsers src/lib/dhcpsrv/network.* Network - added DDNS parameters: Optional members, getters, setters Network::toElement() - added DDNS parameters src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::parseDdnsParams() - new method to parse DDNS parameters BaseNetworkParser::parseLifetime() - fixed unitialized variables warning src/lib/dhcpsrv/parsers/dhcp_parsers.cc Subnet4ConfigParser::initSubnet() Subnet6ConfigParser::initSubnet() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/shared_network_parser.cc SharedNetwork4Parser::parse() SharedNetwork6Parser::parse() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/simple_parser4.cc SimpleParser4::GLOBAL4_PARAMETERS SimpleParser4::GLOBAL4_DEFAULTS SimpleParser4::SUBNET4_PARAMETERS SimpleParser4::INHERIT_TO_SUBNET4 SimpleParser4::SHARED_NETWORK4_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/parsers/simple_parser6.cc SimpleParser6::GLOBAL6_PARAMETERS SimpleParser6::GLOBAL6_DEFAULTS SimpleParser6::SUBNET6_PARAMETERS SimpleParser6::INHERIT_TO_SUBNET6 SimpleParser6::SHARED_NETWORK6_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests.
2019-09-26 08:33:41 -04:00
{ "client-class", Element::string },
[#3592] modified in lib dhcp and dhcpsrv src/lib/dhcp/classify.* ClientClasses:intersects() - new function src/lib/dhcp/tests/classify_unittest.cc TEST(ClassifyTest, ClientClassesIntersects) - new test src/lib/dhcpsrv/cfg_option.cc OptionDescriptor::allowedForClientClasses() use inet intersects() function src/lib/dhcpsrv/dhcpsrv_messages.mes DHCPSRV_CLIENT_CLASS_DEPRECATED - new message src/lib/dhcpsrv/network.* Network - replaced client_class_ string with client_classes_ container Network::clientSupported() - uses new intersects() function Network::allowClientClass() - modified to insert Network::toElement() - updated src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::getClientClassesElem() - new function src/lib/dhcpsrv/parsers/dhcp_parsers.cc src/lib/dhcpsrv/parsers/shared_network_parser.cc Updated parsers to use BaseNetworkParser::getClientClassesElem() src/lib/dhcpsrv/parsers/simple_parser4.cc src/lib/dhcpsrv/parsers/simple_parser6.cc Added client-classes src/lib/dhcpsrv/pool.* replaced client_class_ string with client_classes_ container Pool::clientSupported()- use new intersects() function src/lib/dhcpsrv/shared_network.cc ShareNetwork::getPreferredSubnet() - updated src/lib/dhcpsrv/tests/cfg_subnets4_unittest.cc src/lib/dhcpsrv/tests/cfg_subnets6_unittest.cc Updated tests src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc TEST_F(DhcpParserTest, deprecatedClientClassSubnet4) TEST_F(DhcpParserTest, deprecatedClientClassSubnet6) { TEST_F(DhcpParserTest, deprecatedClientClassPool4) { TEST_F(DhcpParserTest, deprecatedClientClassPool6) { src/lib/dhcpsrv/tests/network_unittest.cc Removed inheritance support check src/lib/dhcpsrv/tests/pool_unittest.cc Updated tests src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc TEST_F(SharedNetwork4ParserTest, deprecatedClientClass) TEST_F(SharedNetwork6ParserTest, deprecatedClientClass) src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests src/lib/dhcpsrv/testutils/generic_cb_dhcp4_unittest.cc src/lib/dhcpsrv/testutils/generic_cb_dhcp6_unittest.cc Updated tests
2024-10-30 14:31:18 -04:00
{ "client-classes", Element::list },
[#35,!517] Added DDDNS parameters to networks,subnets, and their parsers src/lib/dhcpsrv/network.* Network - added DDNS parameters: Optional members, getters, setters Network::toElement() - added DDNS parameters src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::parseDdnsParams() - new method to parse DDNS parameters BaseNetworkParser::parseLifetime() - fixed unitialized variables warning src/lib/dhcpsrv/parsers/dhcp_parsers.cc Subnet4ConfigParser::initSubnet() Subnet6ConfigParser::initSubnet() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/shared_network_parser.cc SharedNetwork4Parser::parse() SharedNetwork6Parser::parse() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/simple_parser4.cc SimpleParser4::GLOBAL4_PARAMETERS SimpleParser4::GLOBAL4_DEFAULTS SimpleParser4::SUBNET4_PARAMETERS SimpleParser4::INHERIT_TO_SUBNET4 SimpleParser4::SHARED_NETWORK4_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/parsers/simple_parser6.cc SimpleParser6::GLOBAL6_PARAMETERS SimpleParser6::GLOBAL6_DEFAULTS SimpleParser6::SUBNET6_PARAMETERS SimpleParser6::INHERIT_TO_SUBNET6 SimpleParser6::SHARED_NETWORK6_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests.
2019-09-26 08:33:41 -04:00
{ "require-client-classes", Element::list },
{ "evaluate-additional-classes", Element::list },
[#35,!517] Added DDDNS parameters to networks,subnets, and their parsers src/lib/dhcpsrv/network.* Network - added DDNS parameters: Optional members, getters, setters Network::toElement() - added DDNS parameters src/lib/dhcpsrv/parsers/base_network_parser.* BaseNetworkParser::parseDdnsParams() - new method to parse DDNS parameters BaseNetworkParser::parseLifetime() - fixed unitialized variables warning src/lib/dhcpsrv/parsers/dhcp_parsers.cc Subnet4ConfigParser::initSubnet() Subnet6ConfigParser::initSubnet() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/shared_network_parser.cc SharedNetwork4Parser::parse() SharedNetwork6Parser::parse() - added call to parseDdnsParms(). src/lib/dhcpsrv/parsers/simple_parser4.cc SimpleParser4::GLOBAL4_PARAMETERS SimpleParser4::GLOBAL4_DEFAULTS SimpleParser4::SUBNET4_PARAMETERS SimpleParser4::INHERIT_TO_SUBNET4 SimpleParser4::SHARED_NETWORK4_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/parsers/simple_parser6.cc SimpleParser6::GLOBAL6_PARAMETERS SimpleParser6::GLOBAL6_DEFAULTS SimpleParser6::SUBNET6_PARAMETERS SimpleParser6::INHERIT_TO_SUBNET6 SimpleParser6::SHARED_NETWORK6_PARAMETERS - added DDNS parameters src/lib/dhcpsrv/tests/cfg_shared_networks4_unittest.cc src/lib/dhcpsrv/tests/cfg_shared_networks6_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc src/lib/dhcpsrv/tests/shared_network_unittest.cc src/lib/dhcpsrv/tests/subnet_unittest.cc Updated tests.
2019-09-26 08:33:41 -04:00
{ "valid-lifetime", Element::integer },
{ "min-valid-lifetime", Element::integer },
{ "max-valid-lifetime", Element::integer },
{ "user-context", Element::map },
{ "comment", Element::string },
{ "calculate-tee-times", Element::boolean },
{ "t1-percent", Element::real },
{ "t2-percent", Element::real },
{ "ddns-send-updates", Element::boolean },
{ "ddns-override-no-update", Element::boolean },
{ "ddns-override-client-update", Element::boolean },
{ "ddns-replace-client-name", Element::string },
{ "ddns-generated-prefix", Element::string },
{ "ddns-qualifying-suffix", Element::string },
{ "hostname-char-set", Element::string },
{ "hostname-char-replacement", Element::string },
{ "store-extended-info", Element::boolean },
{ "metadata", Element::map },
{ "cache-threshold", Element::real },
{ "cache-max-age", Element::integer },
{ "ddns-update-on-renew", Element::boolean },
{ "allocator", Element::string },
{ "offer-lifetime", Element::integer },
{ "ddns-ttl-percent", Element::real },
[#2276] Initial impl ddns-resolution-conflict-mode New Files: src/bin/d2/check_exists_add.cc src/bin/d2/check_exists_add.h src/bin/d2/check_exists_remove.cc src/bin/d2/check_exists_remove.h src/bin/d2/simple_add_without_dhcid.cc src/bin/d2/simple_add_without_dhcid.h src/bin/d2/simple_remove_without_dhcid.cc src/bin/d2/simple_remove_without_dhcid.h src/bin/d2/tests/check_exists_add_unittests.cc src/bin/d2/tests/check_exists_remove_unittests.cc src/bin/d2/tests/simple_add_without_dhcid_unittests.cc src/bin/d2/tests/simple_remove_without_dhcid_unittests.cc Modified: doc/examples/kea4/all-keys.json doc/examples/kea4/with-ddns.json doc/examples/kea6/all-keys.json doc/examples/kea6/with-ddns.json src/bin/d2/Makefile.am src/bin/d2/check_exists_add.cc src/bin/d2/check_exists_add.h src/bin/d2/check_exists_remove.cc src/bin/d2/check_exists_remove.h src/bin/d2/d2_update_mgr.cc src/bin/d2/simple_add_without_dhcid.cc src/bin/d2/simple_add_without_dhcid.h src/bin/d2/simple_remove_without_dhcid.cc src/bin/d2/simple_remove_without_dhcid.h src/bin/d2/tests/Makefile.am src/bin/d2/tests/check_exists_add_unittests.cc src/bin/d2/tests/check_exists_remove_unittests.cc src/bin/d2/tests/d2_process_unittests.cc src/bin/d2/tests/d2_queue_mgr_unittests.cc src/bin/d2/tests/d2_update_mgr_unittests.cc src/bin/d2/tests/nc_add_unittests.cc src/bin/d2/tests/nc_remove_unittests.cc src/bin/d2/tests/simple_add_unittests.cc src/bin/d2/tests/simple_add_without_dhcid_unittests.cc src/bin/d2/tests/simple_remove_unittests.cc src/bin/d2/tests/simple_remove_without_dhcid_unittests.cc src/bin/dhcp4/dhcp4_lexer.cc src/bin/dhcp4/dhcp4_lexer.ll src/bin/dhcp4/dhcp4_parser.cc src/bin/dhcp4/dhcp4_parser.h src/bin/dhcp4/dhcp4_parser.yy src/bin/dhcp4/json_config_parser.cc src/bin/dhcp4/location.hh src/bin/dhcp4/parser_context.h src/bin/dhcp4/tests/config_parser_unittest.cc src/bin/dhcp4/tests/d2_unittest.cc src/bin/dhcp4/tests/fqdn_unittest.cc src/bin/dhcp4/tests/get_config_unittest.cc src/bin/dhcp6/dhcp6_lexer.cc src/bin/dhcp6/dhcp6_lexer.ll src/bin/dhcp6/dhcp6_parser.cc src/bin/dhcp6/dhcp6_parser.h src/bin/dhcp6/dhcp6_parser.yy src/bin/dhcp6/dhcp6_srv.cc src/bin/dhcp6/json_config_parser.cc src/bin/dhcp6/location.hh src/bin/dhcp6/parser_context.h src/bin/dhcp6/tests/config_parser_unittest.cc src/bin/dhcp6/tests/d2_unittest.cc src/bin/dhcp6/tests/fqdn_unittest.cc src/bin/dhcp6/tests/get_config_unittest.cc src/lib/d2srv/testutils/nc_test_utils.cc src/lib/d2srv/testutils/nc_test_utils.h src/lib/dhcp_ddns/ncr_msg.cc src/lib/dhcp_ddns/ncr_msg.h src/lib/dhcp_ddns/tests/ncr_udp_unittests.cc src/lib/dhcp_ddns/tests/ncr_unittests.cc src/lib/dhcpsrv/cfg_globals.cc src/lib/dhcpsrv/cfg_globals.h src/lib/dhcpsrv/ncr_generator.cc src/lib/dhcpsrv/network.cc src/lib/dhcpsrv/network.h src/lib/dhcpsrv/parsers/base_network_parser.cc src/lib/dhcpsrv/parsers/base_network_parser.h src/lib/dhcpsrv/parsers/simple_parser4.cc src/lib/dhcpsrv/parsers/simple_parser6.cc src/lib/dhcpsrv/srv_config.cc src/lib/dhcpsrv/srv_config.h src/lib/dhcpsrv/tests/d2_udp_unittest.cc src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc src/lib/dhcpsrv/tests/ncr_generator_unittest.cc src/lib/dhcpsrv/tests/network_unittest.cc src/lib/dhcpsrv/tests/srv_config_unittest.cc
2023-05-31 13:51:19 -04:00
{ "ddns-conflict-resolution-mode", Element::string },
[#2819] kea-dhcp4 supports ddns-ttl, min, and max Added support for ddns-ttl,ddns-ttl-min, and ddsn-ttl-max to global,shared-network, and subnet for kea-dhcp4 Changes to be committed: modified: doc/examples/kea4/all-keys.json modified: src/bin/dhcp4/dhcp4_lexer.cc modified: src/bin/dhcp4/dhcp4_lexer.ll modified: src/bin/dhcp4/dhcp4_parser.cc modified: src/bin/dhcp4/dhcp4_parser.h modified: src/bin/dhcp4/dhcp4_parser.yy modified: src/bin/dhcp4/json_config_parser.cc modified: src/bin/dhcp4/tests/config_parser_unittest.cc modified: src/bin/dhcp4/tests/fqdn_unittest.cc modified: src/bin/dhcp4/tests/get_config_unittest.cc modified: src/bin/dhcp6/json_config_parser.cc modified: src/lib/dhcpsrv/cb_ctl_dhcp4.cc modified: src/lib/dhcpsrv/cb_ctl_dhcp6.cc modified: src/lib/dhcpsrv/cfg_globals.cc modified: src/lib/dhcpsrv/cfg_globals.h modified: src/lib/dhcpsrv/dhcpsrv_messages.cc modified: src/lib/dhcpsrv/dhcpsrv_messages.h modified: src/lib/dhcpsrv/dhcpsrv_messages.mes modified: src/lib/dhcpsrv/ncr_generator.cc modified: src/lib/dhcpsrv/ncr_generator.h modified: src/lib/dhcpsrv/network.cc modified: src/lib/dhcpsrv/network.h modified: src/lib/dhcpsrv/parsers/base_network_parser.cc modified: src/lib/dhcpsrv/parsers/simple_parser4.cc modified: src/lib/dhcpsrv/parsers/simple_parser6.cc modified: src/lib/dhcpsrv/srv_config.cc modified: src/lib/dhcpsrv/srv_config.h modified: src/lib/dhcpsrv/tests/dhcp_parsers_unittest.cc modified: src/lib/dhcpsrv/tests/ncr_generator_unittest.cc modified: src/lib/dhcpsrv/tests/network_unittest.cc modified: src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc modified: src/lib/dhcpsrv/tests/srv_config_unittest.cc modified: src/lib/util/str.cc modified: src/lib/util/str.h
2024-11-19 15:23:08 -05:00
{ "ddns-ttl", Element::integer },
{ "ddns-ttl-min", Element::integer },
{ "ddns-ttl-max", Element::integer },
{ "adaptive-lease-time-threshold", Element::real },
};
/// @brief This table defines default values for interfaces for DHCPv4.
const SimpleDefaults SimpleParser4::IFACE4_DEFAULTS = {
{ "re-detect", Element::boolean, "true" }
};
/// @brief This table defines default values for dhcp-queue-control in DHCPv4.
const SimpleDefaults SimpleParser4::DHCP_QUEUE_CONTROL4_DEFAULTS = {
{ "enable-queue", Element::boolean, "false"},
{ "queue-type", Element::string, "kea-ring4"},
2020-08-03 16:19:21 +02:00
{ "capacity", Element::integer, "64"}
};
2020-04-09 00:42:32 +03:00
/// @brief This table defines default values for multi-threading in DHCPv4.
const SimpleDefaults SimpleParser4::DHCP_MULTI_THREADING4_DEFAULTS = {
2023-02-06 22:22:43 +02:00
{ "enable-multi-threading", Element::boolean, "true" },
2020-04-09 15:41:34 +03:00
{ "thread-pool-size", Element::integer, "0" },
2020-04-15 15:25:07 +03:00
{ "packet-queue-size", Element::integer, "64" }
2020-04-09 00:42:32 +03:00
};
/// @brief This defines default values for sanity checking for DHCPv4.
const SimpleDefaults SimpleParser4::SANITY_CHECKS4_DEFAULTS = {
{ "lease-checks", Element::string, "warn" }
};
/// @}
/// ---------------------------------------------------------------------------
/// --- end of default values -------------------------------------------------
/// ---------------------------------------------------------------------------
size_t SimpleParser4::setAllDefaults(ElementPtr global) {
size_t cnt = 0;
// Set global defaults first.
cnt = setDefaults(global, GLOBAL4_DEFAULTS);
// Now set the defaults for each specified option definition
ConstElementPtr option_defs = global->get("option-def");
if (option_defs) {
cnt += setListDefaults(option_defs, OPTION4_DEF_DEFAULTS);
}
// Set the defaults for option data
ConstElementPtr options = global->get("option-data");
if (options) {
cnt += setListDefaults(options, OPTION4_DEFAULTS);
}
// Now set the defaults for defined subnets
ConstElementPtr subnets = global->get("subnet4");
if (subnets) {
cnt += setListDefaults(subnets, SUBNET4_DEFAULTS);
}
// Set the defaults for interfaces config
ConstElementPtr ifaces_cfg = global->get("interfaces-config");
if (ifaces_cfg) {
ElementPtr mutable_cfg = boost::const_pointer_cast<Element>(ifaces_cfg);
cnt += setDefaults(mutable_cfg, IFACE4_DEFAULTS);
}
// Set defaults for shared networks
ConstElementPtr shared = global->get("shared-networks");
if (shared) {
for (auto const& net : shared->listValue()) {
cnt += setDefaults(net, SHARED_NETWORK4_DEFAULTS);
ConstElementPtr subs = net->get("subnet4");
if (subs) {
cnt += setListDefaults(subs, SHARED_SUBNET4_DEFAULTS);
}
}
}
// Set the defaults for dhcp-queue-control. If the element isn't there
// we'll add it.
ConstElementPtr queue_control = global->get("dhcp-queue-control");
ElementPtr mutable_cfg;
if (queue_control) {
mutable_cfg = boost::const_pointer_cast<Element>(queue_control);
} else {
mutable_cfg = Element::createMap();
global->set("dhcp-queue-control", mutable_cfg);
}
cnt += setDefaults(mutable_cfg, DHCP_QUEUE_CONTROL4_DEFAULTS);
2020-04-09 00:42:32 +03:00
// Set the defaults for multi-threading. If the element isn't there
// we'll add it.
ConstElementPtr multi_threading = global->get("multi-threading");
if (multi_threading) {
mutable_cfg = boost::const_pointer_cast<Element>(multi_threading);
2020-04-09 00:42:32 +03:00
} else {
mutable_cfg = Element::createMap();
global->set("multi-threading", mutable_cfg);
}
cnt += setDefaults(mutable_cfg, DHCP_MULTI_THREADING4_DEFAULTS);
// Set the defaults for sanity-checks. If the element isn't
// there we'll add it.
ConstElementPtr sanity_checks = global->get("sanity-checks");
if (sanity_checks) {
mutable_cfg = boost::const_pointer_cast<Element>(sanity_checks);
} else {
mutable_cfg = Element::createMap();
global->set("sanity-checks", mutable_cfg);
}
cnt += setDefaults(mutable_cfg, SANITY_CHECKS4_DEFAULTS);
return (cnt);
}
size_t SimpleParser4::deriveParameters(ElementPtr global) {
size_t cnt = 0;
// Now derive global parameters into subnets.
ConstElementPtr subnets = global->get("subnet4");
if (subnets) {
for (auto const& single_subnet : subnets->listValue()) {
cnt += SimpleParser::deriveParams(global, single_subnet,
INHERIT_TO_SUBNET4);
}
}
// Deriving parameters for shared networks is a bit more involved.
// First, the shared-network level derives from global, and then
// subnets within derive from it.
ConstElementPtr shared = global->get("shared-networks");
if (shared) {
for (auto const& net : shared->listValue()) {
// First try to inherit the parameters from shared network,
// if defined there.
// Then try to inherit them from global.
cnt += SimpleParser::deriveParams(global, net,
INHERIT_TO_SUBNET4);
// Now we need to go thrugh all the subnets in this net.
subnets = net->get("subnet4");
if (subnets) {
for (auto const& single_subnet : subnets->listValue()) {
cnt += SimpleParser::deriveParams(net, single_subnet,
INHERIT_TO_SUBNET4);
}
}
}
}
return (cnt);
}
} // namespace dhcp
} // namespace isc