linux-cp: Cleanup any existing pairs when an interface is deleted 48/33948/2
authorNeale Ranns <neale@graphiant.com>
Mon, 4 Oct 2021 15:28:47 +0000 (15:28 +0000)
committerMatthew Smith <mgsmith@netgate.com>
Wed, 3 Nov 2021 12:56:11 +0000 (12:56 +0000)
Type: fix

This only happens when the user deletes the physical before they delete the pair, that's not supoosed to be the case, but don't crash if it is.

Signed-off-by: Neale Ranns <neale@graphiant.com>
Change-Id: I8c2317b360d897775dde23833d04430f88531cbd

src/plugins/linux-cp/lcp_interface.c

index 6eb9406..b42e5cb 100644 (file)
@@ -510,6 +510,23 @@ lcp_itf_pair_delete (u32 phy_sw_if_index)
   return 0;
 }
 
+/**
+ * lcp_itf_interface_add_del
+ *
+ * Registered to receive interface Add and delete notifications
+ */
+static clib_error_t *
+lcp_itf_interface_add_del (vnet_main_t *vnm, u32 sw_if_index, u32 is_add)
+{
+  if (!is_add)
+    /* remove any interface pair we have for this interface */
+    lcp_itf_pair_delete (sw_if_index);
+
+  return (NULL);
+}
+
+VNET_SW_INTERFACE_ADD_DEL_FUNCTION (lcp_itf_interface_add_del);
+
 void
 lcp_itf_pair_walk (lcp_itf_pair_walk_cb_t cb, void *ctx)
 {