summaryrefslogtreecommitdiff
path: root/pimd/pim_tib.c
diff options
context:
space:
mode:
authorSarita Patra <saritap@vmware.com>2022-07-07 08:12:10 -0700
committerSarita Patra <saritap@vmware.com>2023-06-04 22:23:56 -0700
commitcb809c0d6c006e570cd9052f4be7dbdce7337661 (patch)
tree99abaf69f2ee70fc60a6e5880341a9ac02933aa7 /pimd/pim_tib.c
parent1bafbcb24a3e594b81a969ca673e368a72b994da (diff)
pim6d: Clear channel_oil on prune
Receiver---LHR---RP Problem: In LHR, ipv6 pim state remains after MLD prune received. Root Cause: When LHR receives join, it creates (*,G) channel oil with oil_ref_count = 2. The channel_oil is used by gm_sg sg->oil and upstream->channel_oil. When LHR receives prune, currently upstream->channel_oil is deleted and gm_sg sg->oil still present. Due to this channel_oil is still present with oil_ref_count = 1 Fix: When LHR receives prune, upstream->channel_oil and pim_sg sg->oil needs to be deleted. Issue: #11249 Signed-off-by: Sarita Patra <saritap@vmware.com>
Diffstat (limited to 'pimd/pim_tib.c')
-rw-r--r--pimd/pim_tib.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/pimd/pim_tib.c b/pimd/pim_tib.c
index 6ffea868d8..4081786c1e 100644
--- a/pimd/pim_tib.c
+++ b/pimd/pim_tib.c
@@ -163,4 +163,6 @@ void tib_sg_gm_prune(struct pim_instance *pim, pim_sgaddr sg,
per-interface (S,G) state.
*/
pim_ifchannel_local_membership_del(oif, &sg);
+
+ pim_channel_oil_del(*oilp, __func__);
}