]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[65-libyang-config-adaptor] Added removal of empty relay supplied option list
authorFrancis Dupont <fdupont@isc.org>
Sat, 20 Oct 2018 23:54:03 +0000 (01:54 +0200)
committerTomek Mrugalski <tomasz@isc.org>
Mon, 22 Oct 2018 18:28:37 +0000 (20:28 +0200)
src/lib/yang/adaptor_config.cc
src/lib/yang/adaptor_config.h

index 52979beb56d4ddf8eb0df625210920a832451eb7..9761bcd3ce40995cabacbc332585e8bbbe0e8bde 100644 (file)
@@ -390,6 +390,16 @@ AdaptorConfig::updateDatabase(ConstElementPtr dhcp) {
     mutable_dhcp->set("hosts-databases", list);
 }
 
+void
+AdaptorConfig::relaySuppliedOptions(ConstElementPtr dhcp) {
+    ConstElementPtr options = dhcp->get("relay-supplied-options");
+    if (!options || (options->size() > 0)) {
+        return;
+    }
+    ElementPtr mutable_dhcp = boost::const_pointer_cast<Element>(dhcp);
+    mutable_dhcp->remove("relay-supplied-options");
+}
+
 void
 AdaptorConfig::preProcess(ConstElementPtr dhcp, const string& subsel,
                           const string& space) {
@@ -473,6 +483,10 @@ AdaptorConfig::preProcess(ConstElementPtr dhcp, const string& subsel,
     requireClassesSharedNetworks(networks, subsel);
 
     updateDatabase(dhcp);
+
+    if (space == "dhcp6") {
+        relaySuppliedOptions(dhcp);
+    }
 }
 
 void
index dcc6e59c2e3d4c8316779293299d44121582820b..263de26ecaeec86d20b56f0f1030ce643c323d6d 100644 (file)
@@ -165,16 +165,22 @@ protected:
 
     /// @brief Process require client classes in a pool list.
     ///
+    /// Remove empty require client class list.
+    ///
     /// @param pools The pool list.
     static void requireClassesPools(isc::data::ConstElementPtr pools);
 
     /// @brief Process require client classes in a subnet list.
     ///
+    /// Remove empty require client class lists.
+    ///
     /// @param subnets The subnet list.
     static void requireClassesSubnets(isc::data::ConstElementPtr subnets);
 
     /// @brief Process require client classes in a shared network list.
     ///
+    /// Remove empty require client class lists.
+    ///
     /// @param networks The shared network list.
     /// @param subsel The subnet list name.
     static void requireClassesSharedNetworks(isc::data::ConstElementPtr networks,
@@ -216,6 +222,13 @@ protected:
     /// @param dhcp The DHCP server.
     static void updateDatabase(isc::data::ConstElementPtr dhcp);
 
+    /// @brief Update relay supplied options.
+    ///
+    /// Remove empty relay supplied option list.
+    ///
+    /// @param dhcp The DHCPv6 server.
+    static void relaySuppliedOptions(isc::data::ConstElementPtr dhcp);
+
     /// @brief Pre process a configuration.
     ///
     /// Assign subnet IDs, check and set default in options.