]> git.puffer.fish Git - mirror/frr.git/commitdiff
pim6d: fix clear ipv6 mroute 11559/head
authorSarita Patra <saritap@vmware.com>
Thu, 7 Jul 2022 15:03:45 +0000 (08:03 -0700)
committerSarita Patra <saritap@vmware.com>
Wed, 3 Aug 2022 14:47:36 +0000 (07:47 -0700)
Signed-off-by: Sarita Patra <saritap@vmware.com>
pimd/pim6_mld.c
pimd/pim6_mld.h
pimd/pim_cmd_common.c

index 255fd62ba7b17c923bc12a2334af7d43e70f44f3..c5c98d8024515c7576a0aad115d94941dd1d986c 100644 (file)
@@ -2280,6 +2280,22 @@ void gm_ifp_update(struct interface *ifp)
        }
 }
 
+void gm_group_delete(struct gm_if *gm_ifp)
+{
+       struct gm_sg *sg, *sg_start;
+
+       sg_start = gm_sgs_first(gm_ifp->sgs);
+
+       /* clean up all mld groups */
+       frr_each_from (gm_sgs, gm_ifp->sgs, sg, sg_start) {
+               THREAD_OFF(sg->t_sg_expire);
+               if (sg->oil)
+                       pim_channel_oil_del(sg->oil, __func__);
+               gm_sgs_del(gm_ifp->sgs, sg);
+               gm_sg_free(sg);
+       }
+}
+
 /*
  * CLI (show commands only)
  */
index 9c7a6370072ef8c69a9db01227a356a2f2d540f0..95523c2922b6b7c2a2a858b85ecc8bd5c3daa9db 100644 (file)
@@ -352,6 +352,7 @@ struct gm_if {
 #if PIM_IPV == 6
 extern void gm_ifp_update(struct interface *ifp);
 extern void gm_ifp_teardown(struct interface *ifp);
+extern void gm_group_delete(struct gm_if *gm_ifp);
 #else
 static inline void gm_ifp_update(struct interface *ifp)
 {
index b7bd7375c595218db0c8b0837b51887e60a1d5b3..b59fac700566f961caa42eb8111d2a6c0a40ee6a 100644 (file)
@@ -56,6 +56,7 @@
 #include "pim_addr.h"
 #include "pim_static.h"
 #include "pim_util.h"
+#include "pim6_mld.h"
 
 /**
  * Get current node VRF name.
@@ -3994,6 +3995,12 @@ void clear_mroute(struct pim_instance *pim)
                                igmp_group_delete(grp);
                        }
                }
+#else
+               struct gm_if *gm_ifp;
+
+               gm_ifp = pim_ifp->mld;
+               if (gm_ifp)
+                       gm_group_delete(gm_ifp);
 #endif
        }