linux-cp: do ip6-ll cleanup on interface removal 78/41678/7
authorStanislav Zaikin <[email protected]>
Fri, 4 Oct 2024 15:43:37 +0000 (17:43 +0200)
committerMatthew Smith <[email protected]>
Thu, 1 May 2025 20:11:52 +0000 (20:11 +0000)
run a cleanup of ip6 mfib w/o depending on receiving a corresponding
netlink message

Type: fix

Change-Id: I98d5dbbbbb7a56d3ee6f5882b5d6465148049309
Signed-off-by: Stanislav Zaikin <[email protected]>
src/plugins/linux-cp/lcp_router.c

index 0efd53e..27f5335 100644 (file)
@@ -17,7 +17,6 @@
 #include <linux/if.h>
 #include <linux/mpls.h>
 
-//#include <vlib/vlib.h>
 #include <vlib/unix/plugin.h>
 #include <linux-cp/lcp_nl.h>
 #include <linux-cp/lcp_interface.h>
@@ -1543,6 +1542,12 @@ const nl_vft_t lcp_router_vft = {
                             .cb = lcp_router_route_sync_end },
 };
 
+static void
+lcp_lcp_router_interface_del_cb (lcp_itf_pair_t *lip)
+{
+  lcp_router_ip6_mroutes_add_del (lip->lip_phy_sw_if_index, 0);
+}
+
 static clib_error_t *
 lcp_router_init (vlib_main_t *vm)
 {
@@ -1550,6 +1555,12 @@ lcp_router_init (vlib_main_t *vm)
 
   nl_register_vft (&lcp_router_vft);
 
+  lcp_itf_pair_vft_t lcp_router_interface_del_vft = {
+    .pair_del_fn = lcp_lcp_router_interface_del_cb,
+  };
+
+  lcp_itf_pair_register_vft (&lcp_router_interface_del_vft);
+
   /*
    * allocate 2 route sources. The low priority source will be for
    * dynamic routes. If a dynamic route daemon (FRR) tries to remove its