summaryrefslogtreecommitdiffstats
path: root/src/lib/yang
diff options
context:
space:
mode:
authorAndrei Pavel <andrei@isc.org>2023-05-10 17:49:45 +0200
committerAndrei Pavel <andrei@isc.org>2023-05-16 14:38:17 +0200
commit2181cef68d6b49d68e4acb8f1c31f0cf978e2c26 (patch)
treecc5deba98fd2031728026915210536e8fe8dc6ed /src/lib/yang
parent[#2822] add check-for-json-errors-in-doc.sh to CI (diff)
downloadkea-2181cef68d6b49d68e4acb8f1c31f0cf978e2c26.tar.xz
kea-2181cef68d6b49d68e4acb8f1c31f0cf978e2c26.zip
[#2832] add missing YANG nodes
- allocator - ddns-ttl-percent - exclude-first-last-24, - ignore-dhcp-server-Identifier - offer-lifetime - pd-allocator - read-timeout - tcp-user-timeout - write-timeout Removed obsolete YANG nodes: contact-points, keyspace.
Diffstat (limited to 'src/lib/yang')
-rw-r--r--src/lib/yang/translator_class.cc2
-rw-r--r--src/lib/yang/translator_config.cc17
-rw-r--r--src/lib/yang/translator_database.cc6
-rw-r--r--src/lib/yang/translator_shared_network.cc8
-rw-r--r--src/lib/yang/translator_subnet.cc8
-rw-r--r--src/lib/yang/yang_revisions.h6
6 files changed, 44 insertions, 3 deletions
diff --git a/src/lib/yang/translator_class.cc b/src/lib/yang/translator_class.cc
index 7d3ec40189..eff8da89b4 100644
--- a/src/lib/yang/translator_class.cc
+++ b/src/lib/yang/translator_class.cc
@@ -75,6 +75,7 @@ TranslatorClass::getClassKea(DataNode const& data_node) {
if (model_ == KEA_DHCP4_SERVER) {
checkAndGetLeaf(result, data_node, "boot-file-name");
checkAndGetLeaf(result, data_node, "next-server");
+ checkAndGetLeaf(result, data_node, "offer-lifetime");
checkAndGetLeaf(result, data_node, "server-hostname");
ConstElementPtr defs = getOptionDefList(data_node);
@@ -127,6 +128,7 @@ TranslatorClass::setClassKea(string const& xpath, ConstElementPtr elem) {
if (model_ == KEA_DHCP4_SERVER) {
checkAndSetLeaf(elem, xpath, "boot-file-name", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "next-server", LeafBaseType::String);
+ checkAndSetLeaf(elem, xpath, "offer-lifetime", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "server-hostname", LeafBaseType::String);
ConstElementPtr defs = elem->get("option-def");
diff --git a/src/lib/yang/translator_config.cc b/src/lib/yang/translator_config.cc
index 13a29d82bf..c560b526b7 100644
--- a/src/lib/yang/translator_config.cc
+++ b/src/lib/yang/translator_config.cc
@@ -187,6 +187,8 @@ ElementPtr
TranslatorConfig::getServerKeaDhcpCommon(DataNode const& data_node) {
ElementPtr result = Element::createMap();
+ checkAndGetLeaf(result, data_node, "allocator");
+ checkAndGetLeaf(result, data_node, "cache-max-age");
checkAndGetLeaf(result, data_node, "cache-max-age");
checkAndGetLeaf(result, data_node, "cache-threshold");
checkAndGetLeaf(result, data_node, "calculate-tee-times");
@@ -197,6 +199,7 @@ TranslatorConfig::getServerKeaDhcpCommon(DataNode const& data_node) {
checkAndGetLeaf(result, data_node, "ddns-qualifying-suffix");
checkAndGetLeaf(result, data_node, "ddns-replace-client-name");
checkAndGetLeaf(result, data_node, "ddns-send-updates");
+ checkAndGetLeaf(result, data_node, "ddns-ttl-percent");
checkAndGetLeaf(result, data_node, "ddns-update-on-renew");
checkAndGetLeaf(result, data_node, "ddns-use-conflict-resolution");
checkAndGetLeaf(result, data_node, "decline-probation-period");
@@ -234,6 +237,8 @@ TranslatorConfig::getServerKeaDhcpCommon(DataNode const& data_node) {
checkAndGet(result, data_node, "compatibility",
[&](DataNode const& node) -> ElementPtr const {
ElementPtr compatibility(Element::createMap());
+ checkAndGetLeaf(compatibility, node, "exclude-first-last-24");
+ checkAndGetLeaf(compatibility, node, "ignore-dhcp-server-identifier");
checkAndGetLeaf(compatibility, node, "ignore-rai-link-selection");
checkAndGetLeaf(compatibility, node, "lenient-option-parsing");
return compatibility;
@@ -337,6 +342,7 @@ TranslatorConfig::getServerKeaDhcp4() {
checkAndGetLeaf(result, config, "echo-client-id");
checkAndGetLeaf(result, config, "match-client-id");
checkAndGetLeaf(result, config, "next-server");
+ checkAndGetLeaf(result, config, "offer-lifetime");
checkAndGetLeaf(result, config, "server-hostname");
// Handle interfaces.
@@ -371,6 +377,7 @@ TranslatorConfig::getServerKeaDhcp6() {
checkAndGetLeaf(result, config, "mac-sources");
checkAndGetLeaf(result, config, "max-preferred-lifetime");
checkAndGetLeaf(result, config, "min-preferred-lifetime");
+ checkAndGetLeaf(result, config, "pd-allocator");
checkAndGetLeaf(result, config, "preferred-lifetime");
checkAndGetLeaf(result, config, "relay-supplied-options");
@@ -486,6 +493,7 @@ TranslatorConfig::setConfigKea6(ConstElementPtr elem) {
void
TranslatorConfig::setServerKeaDhcpCommon(string const& xpath,
ConstElementPtr elem) {
+ checkAndSetLeaf(elem, xpath, "allocator", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "cache-max-age", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "cache-threshold", LeafBaseType::Dec64);
checkAndSetLeaf(elem, xpath, "calculate-tee-times", LeafBaseType::Bool);
@@ -495,6 +503,7 @@ TranslatorConfig::setServerKeaDhcpCommon(string const& xpath,
checkAndSetLeaf(elem, xpath, "ddns-qualifying-suffix", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "ddns-replace-client-name", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "ddns-send-updates", LeafBaseType::Bool);
+ checkAndSetLeaf(elem, xpath, "ddns-ttl-percent", LeafBaseType::Dec64);
checkAndSetLeaf(elem, xpath, "ddns-update-on-renew", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "ddns-use-conflict-resolution", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "dhcp4o6-port", LeafBaseType::Uint16);
@@ -661,8 +670,15 @@ TranslatorConfig::setServerKeaDhcp4(ConstElementPtr elem) {
checkAndSetLeaf(elem, xpath, "echo-client-id", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "match-client-id", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "next-server", LeafBaseType::String);
+ checkAndSetLeaf(elem, xpath, "offer-lifetime", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "server-hostname", LeafBaseType::String);
+ ConstElementPtr compatibility(elem->get("compatibility"));
+ if (compatibility) {
+ checkAndSetLeaf(compatibility, xpath + "/compatibility", "exclude-first-last-24", LeafBaseType::Bool);
+ checkAndSetLeaf(compatibility, xpath + "/compatibility", "ignore-dhcp-server-identifier", LeafBaseType::Bool);
+ }
+
ConstElementPtr if_config = elem->get("interfaces-config");
if (if_config) {
string const if_cfg_xpath(xpath + "/interfaces-config");
@@ -691,6 +707,7 @@ TranslatorConfig::setServerKeaDhcp6(ConstElementPtr elem) {
checkAndSetLeaf(elem, xpath, "data-directory", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "max-preferred-lifetime", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "min-preferred-lifetime", LeafBaseType::Uint32);
+ checkAndSetLeaf(elem, xpath, "pd-allocator", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "preferred-lifetime", LeafBaseType::Uint32);
checkAndSetLeafList(elem, xpath, "mac-sources", LeafBaseType::String);
diff --git a/src/lib/yang/translator_database.cc b/src/lib/yang/translator_database.cc
index 1e6bb6e4cd..e75c47c735 100644
--- a/src/lib/yang/translator_database.cc
+++ b/src/lib/yang/translator_database.cc
@@ -66,10 +66,13 @@ TranslatorDatabase::getDatabaseKea(DataNode const& data_node) {
checkAndGetLeaf(result, data_node, "password");
checkAndGetLeaf(result, data_node, "persist");
checkAndGetLeaf(result, data_node, "port");
+ checkAndGetLeaf(result, data_node, "read-timeout");
checkAndGetLeaf(result, data_node, "readonly");
checkAndGetLeaf(result, data_node, "reconnect-wait-time");
+ checkAndGetLeaf(result, data_node, "tcp-user-timeout");
checkAndGetLeaf(result, data_node, "trust-anchor");
checkAndGetLeaf(result, data_node, "user");
+ checkAndGetLeaf(result, data_node, "write-timeout");
checkAndGetAndJsonifyLeaf(result, data_node, "user-context");
@@ -118,9 +121,12 @@ TranslatorDatabase::setDatabaseKea(string const& xpath,
checkAndSetLeaf(elem, xpath, "persist", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "port", LeafBaseType::Uint16);
checkAndSetLeaf(elem, xpath, "readonly", LeafBaseType::Bool);
+ checkAndSetLeaf(elem, xpath, "read-timeout", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "reconnect-wait-time", LeafBaseType::Uint32);
+ checkAndSetLeaf(elem, xpath, "tcp-user-timeout", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "trust-anchor", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "user", LeafBaseType::String);
+ checkAndSetLeaf(elem, xpath, "write-timeout", LeafBaseType::Uint32);
checkAndSetUserContext(elem, xpath);
diff --git a/src/lib/yang/translator_shared_network.cc b/src/lib/yang/translator_shared_network.cc
index ad5d121ffc..bc1aa284e0 100644
--- a/src/lib/yang/translator_shared_network.cc
+++ b/src/lib/yang/translator_shared_network.cc
@@ -67,6 +67,7 @@ TranslatorSharedNetwork::getSharedNetworkKea(DataNode const& data_node,
getMandatoryLeaf(result, data_node, "name");
+ checkAndGetLeaf(result, data_node, "allocator");
checkAndGetLeaf(result, data_node, "cache-max-age");
checkAndGetLeaf(result, data_node, "cache-threshold");
checkAndGetLeaf(result, data_node, "calculate-tee-times");
@@ -77,6 +78,7 @@ TranslatorSharedNetwork::getSharedNetworkKea(DataNode const& data_node,
checkAndGetLeaf(result, data_node, "ddns-qualifying-suffix");
checkAndGetLeaf(result, data_node, "ddns-replace-client-name");
checkAndGetLeaf(result, data_node, "ddns-send-updates");
+ checkAndGetLeaf(result, data_node, "ddns-ttl-percent");
checkAndGetLeaf(result, data_node, "ddns-update-on-renew");
checkAndGetLeaf(result, data_node, "ddns-use-conflict-resolution");
checkAndGetLeaf(result, data_node, "hostname-char-replacement");
@@ -119,6 +121,7 @@ TranslatorSharedNetwork::getSharedNetworkKea(DataNode const& data_node,
checkAndGetLeaf(result, data_node, "interface-id");
checkAndGetLeaf(result, data_node, "max-preferred-lifetime");
checkAndGetLeaf(result, data_node, "min-preferred-lifetime");
+ checkAndGetLeaf(result, data_node, "pd-allocator");
checkAndGetLeaf(result, data_node, "preferred-lifetime");
checkAndGetLeaf(result, data_node, "rapid-commit");
} else if (subsel == "subnet4") {
@@ -126,6 +129,7 @@ TranslatorSharedNetwork::getSharedNetworkKea(DataNode const& data_node,
checkAndGetLeaf(result, data_node, "boot-file-name");
checkAndGetLeaf(result, data_node, "match-client-id");
checkAndGetLeaf(result, data_node, "next-server");
+ checkAndGetLeaf(result, data_node, "offer-lifetime");
checkAndGetLeaf(result, data_node, "server-hostname");
}
@@ -158,6 +162,7 @@ TranslatorSharedNetwork::setSharedNetworkKea(string const& xpath,
string const& subsel) {
// Skip key "name".
+ checkAndSetLeaf(elem, xpath, "allocator", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "cache-max-age", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "cache-threshold", LeafBaseType::Dec64);
checkAndSetLeaf(elem, xpath, "calculate-tee-times", LeafBaseType::Bool);
@@ -168,6 +173,7 @@ TranslatorSharedNetwork::setSharedNetworkKea(string const& xpath,
checkAndSetLeaf(elem, xpath, "ddns-qualifying-suffix", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "ddns-replace-client-name", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "ddns-send-updates", LeafBaseType::Bool);
+ checkAndSetLeaf(elem, xpath, "ddns-ttl-percent", LeafBaseType::Dec64);
checkAndSetLeaf(elem, xpath, "ddns-update-on-renew", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "ddns-use-conflict-resolution", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "hostname-char-replacement", LeafBaseType::String);
@@ -217,6 +223,7 @@ TranslatorSharedNetwork::setSharedNetworkKea(string const& xpath,
checkAndSetLeaf(elem, xpath, "interface-id", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "max-preferred-lifetime", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "min-preferred-lifetime", LeafBaseType::Uint32);
+ checkAndSetLeaf(elem, xpath, "pd-allocator", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "preferred-lifetime", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "rapid-commit", LeafBaseType::Bool);
} else {
@@ -224,6 +231,7 @@ TranslatorSharedNetwork::setSharedNetworkKea(string const& xpath,
checkAndSetLeaf(elem, xpath, "boot-file-name", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "match-client-id", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "next-server", LeafBaseType::String);
+ checkAndSetLeaf(elem, xpath, "offer-lifetime", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "server-hostname", LeafBaseType::String);
}
}
diff --git a/src/lib/yang/translator_subnet.cc b/src/lib/yang/translator_subnet.cc
index ae9c0f654f..15a2e6ae96 100644
--- a/src/lib/yang/translator_subnet.cc
+++ b/src/lib/yang/translator_subnet.cc
@@ -100,6 +100,7 @@ TranslatorSubnet::getSubnetKea(DataNode const& data_node) {
getMandatoryLeaf(result, data_node, "id");
getMandatoryLeaf(result, data_node, "subnet");
+ checkAndGetLeaf(result, data_node, "allocator");
checkAndGetLeaf(result, data_node, "cache-max-age");
checkAndGetLeaf(result, data_node, "cache-threshold");
checkAndGetLeaf(result, data_node, "calculate-tee-times");
@@ -110,6 +111,7 @@ TranslatorSubnet::getSubnetKea(DataNode const& data_node) {
checkAndGetLeaf(result, data_node, "ddns-qualifying-suffix");
checkAndGetLeaf(result, data_node, "ddns-replace-client-name");
checkAndGetLeaf(result, data_node, "ddns-send-updates");
+ checkAndGetLeaf(result, data_node, "ddns-ttl-percent");
checkAndGetLeaf(result, data_node, "ddns-update-on-renew");
checkAndGetLeaf(result, data_node, "ddns-use-conflict-resolution");
checkAndGetLeaf(result, data_node, "hostname-char-replacement");
@@ -157,6 +159,7 @@ TranslatorSubnet::getSubnetKea(DataNode const& data_node) {
checkAndGetLeaf(result, data_node, "interface-id");
checkAndGetLeaf(result, data_node, "max-preferred-lifetime");
checkAndGetLeaf(result, data_node, "min-preferred-lifetime");
+ checkAndGetLeaf(result, data_node, "pd-allocator");
checkAndGetLeaf(result, data_node, "preferred-lifetime");
checkAndGetLeaf(result, data_node, "rapid-commit");
@@ -169,6 +172,7 @@ TranslatorSubnet::getSubnetKea(DataNode const& data_node) {
checkAndGetLeaf(result, data_node, "boot-file-name");
checkAndGetLeaf(result, data_node, "match-client-id");
checkAndGetLeaf(result, data_node, "next-server");
+ checkAndGetLeaf(result, data_node, "offer-lifetime");
checkAndGetLeaf(result, data_node, "server-hostname");
checkAndGetDivergingLeaf(result, data_node, "4o6-interface", "subnet-4o6-interface");
@@ -240,6 +244,7 @@ TranslatorSubnet::setSubnetKea(string const& xpath, ConstElementPtr elem) {
}
setItem(xpath + "/subnet", subnet, LeafBaseType::String);
+ checkAndSetLeaf(elem, xpath, "allocator", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "cache-max-age", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "cache-threshold", LeafBaseType::Dec64);
checkAndSetLeaf(elem, xpath, "calculate-tee-times", LeafBaseType::Bool);
@@ -250,6 +255,7 @@ TranslatorSubnet::setSubnetKea(string const& xpath, ConstElementPtr elem) {
checkAndSetLeaf(elem, xpath, "ddns-qualifying-suffix", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "ddns-replace-client-name", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "ddns-send-updates", LeafBaseType::Bool);
+ checkAndSetLeaf(elem, xpath, "ddns-ttl-percent", LeafBaseType::Dec64);
checkAndSetLeaf(elem, xpath, "ddns-update-on-renew", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "ddns-use-conflict-resolution", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "hostname-char-replacement", LeafBaseType::String);
@@ -299,6 +305,7 @@ TranslatorSubnet::setSubnetKea(string const& xpath, ConstElementPtr elem) {
checkAndSetLeaf(elem, xpath, "interface-id", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "max-preferred-lifetime", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "min-preferred-lifetime", LeafBaseType::Uint32);
+ checkAndSetLeaf(elem, xpath, "pd-allocator", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "preferred-lifetime", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "rapid-commit", LeafBaseType::Bool);
@@ -311,6 +318,7 @@ TranslatorSubnet::setSubnetKea(string const& xpath, ConstElementPtr elem) {
checkAndSetLeaf(elem, xpath, "boot-file-name", LeafBaseType::String);
checkAndSetLeaf(elem, xpath, "match-client-id", LeafBaseType::Bool);
checkAndSetLeaf(elem, xpath, "next-server", LeafBaseType::String);
+ checkAndSetLeaf(elem, xpath, "offer-lifetime", LeafBaseType::Uint32);
checkAndSetLeaf(elem, xpath, "server-hostname", LeafBaseType::String);
checkAndSetDivergingLeaf(elem, xpath, "4o6-interface", "subnet-4o6-interface", LeafBaseType::String);
diff --git a/src/lib/yang/yang_revisions.h b/src/lib/yang/yang_revisions.h
index 36fd06ce3c..ebd9c5a1c5 100644
--- a/src/lib/yang/yang_revisions.h
+++ b/src/lib/yang/yang_revisions.h
@@ -22,9 +22,9 @@ static const std::unordered_map<std::string, std::string> YANG_REVISIONS = {
{ "ietf-dhcpv6-options", "2018-09-04" },
{ "ietf-dhcpv6-server", "2018-09-04" },
{ "kea-types", "2019-08-12" },
- { "kea-dhcp-types", "2022-12-27" },
- { "kea-dhcp4-server", "2022-12-27" },
- { "kea-dhcp6-server", "2022-12-27" },
+ { "kea-dhcp-types", "2023-05-31" },
+ { "kea-dhcp4-server", "2023-05-31" },
+ { "kea-dhcp6-server", "2023-05-31" },
{ "kea-ctrl-agent", "2019-08-12" },
{ "kea-dhcp-ddns", "2022-07-27" }
}; // YANG_REVISIONS