]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#714,!409] Only delete dangling global options when server deleted.
authorMarcin Siodelski <marcin@isc.org>
Wed, 3 Jul 2019 12:41:18 +0000 (14:41 +0200)
committerMarcin Siodelski <marcin@isc.org>
Thu, 4 Jul 2019 19:48:15 +0000 (15:48 -0400)
src/hooks/dhcp/mysql_cb/mysql_cb_dhcp4.cc
src/hooks/dhcp/mysql_cb/mysql_cb_dhcp6.cc

index 19c24ad8afdba212792896f385fdb8fad16f8a8e..8693edb7c51b9550bdda2a45ac1ec702ac7d9077 100644 (file)
@@ -115,7 +115,7 @@ public:
         DELETE_OPTION_DEF4_CODE_NAME,
         DELETE_ALL_OPTION_DEFS4,
         DELETE_OPTION4,
-        DELETE_ALL_OPTIONS4_UNASSIGNED,
+        DELETE_ALL_GLOBAL_OPTIONS4_UNASSIGNED,
         DELETE_OPTION4_SUBNET_ID,
         DELETE_OPTION4_POOL_RANGE,
         DELETE_OPTION4_SHARED_NETWORK,
@@ -1930,7 +1930,7 @@ public:
                                     MySqlBindingCollection());
 
             conn_.updateDeleteQuery(MySqlConfigBackendDHCPv4Impl::
-                                    DELETE_ALL_OPTIONS4_UNASSIGNED,
+                                    DELETE_ALL_GLOBAL_OPTIONS4_UNASSIGNED,
                                     MySqlBindingCollection());
             /// @todo delete option definitions.
         }
@@ -1970,7 +1970,7 @@ public:
                                     MySqlBindingCollection());
 
             conn_.updateDeleteQuery(MySqlConfigBackendDHCPv4Impl::
-                                    DELETE_ALL_OPTIONS4_UNASSIGNED,
+                                    DELETE_ALL_GLOBAL_OPTIONS4_UNASSIGNED,
                                     MySqlBindingCollection());
 
             /// @todo delete dangling option definitions.
@@ -2403,8 +2403,8 @@ TaggedStatementArray tagged_statements = { {
     },
 
     // Delete all options which are unassigned to any servers.
-    { MySqlConfigBackendDHCPv4Impl::DELETE_ALL_OPTIONS4_UNASSIGNED,
-      MYSQL_DELETE_OPTION_UNASSIGNED(dhcp4)
+    { MySqlConfigBackendDHCPv4Impl::DELETE_ALL_GLOBAL_OPTIONS4_UNASSIGNED,
+      MYSQL_DELETE_OPTION_UNASSIGNED(dhcp4, AND o.scope_id = 0)
     },
 
     // Delete single option from a subnet.
index ba617e4839aa11ac6171ab566a3ba03d9fc93f9a..fa46affb10efe85537ff82cf4c3d845c79a0c9da 100644 (file)
@@ -121,7 +121,7 @@ public:
         DELETE_OPTION_DEF6_CODE_NAME,
         DELETE_ALL_OPTION_DEFS6,
         DELETE_OPTION6,
-        DELETE_ALL_OPTIONS6_UNASSIGNED,
+        DELETE_ALL_GLOBAL_OPTIONS6_UNASSIGNED,
         DELETE_OPTION6_SUBNET_ID,
         DELETE_OPTION6_POOL_RANGE,
         DELETE_OPTION6_PD_POOL,
@@ -2247,7 +2247,7 @@ public:
                                     MySqlBindingCollection());
 
             conn_.updateDeleteQuery(MySqlConfigBackendDHCPv6Impl::
-                                    DELETE_ALL_OPTIONS6_UNASSIGNED,
+                                    DELETE_ALL_GLOBAL_OPTIONS6_UNASSIGNED,
                                     MySqlBindingCollection());
             /// @todo delete dangling option definitions.
         }
@@ -2287,7 +2287,7 @@ public:
                                     MySqlBindingCollection());
 
             conn_.updateDeleteQuery(MySqlConfigBackendDHCPv6Impl::
-                                    DELETE_ALL_OPTIONS6_UNASSIGNED,
+                                    DELETE_ALL_GLOBAL_OPTIONS6_UNASSIGNED,
                                     MySqlBindingCollection());
             /// @todo delete dangling option definitions.
         }
@@ -2761,9 +2761,9 @@ TaggedStatementArray tagged_statements = { {
       MYSQL_DELETE_OPTION(dhcp6, AND o.scope_id = 0  AND o.code = ? AND o.space = ?)
     },
 
-    // Delete all options which are unassigned to any servers.
-    { MySqlConfigBackendDHCPv6Impl::DELETE_ALL_OPTIONS6_UNASSIGNED,
-      MYSQL_DELETE_OPTION_UNASSIGNED(dhcp6)
+    // Delete all global options which are unassigned to any servers.
+    { MySqlConfigBackendDHCPv6Impl::DELETE_ALL_GLOBAL_OPTIONS6_UNASSIGNED,
+      MYSQL_DELETE_OPTION_UNASSIGNED(dhcp6, AND o.scope_id = 0)
     },
 
     // Delete single option from a subnet.