summaryrefslogtreecommitdiff
path: root/pimd/pim_igmpv3.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_igmpv3.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_igmpv3.c')
-rw-r--r--pimd/pim_igmpv3.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/pimd/pim_igmpv3.c b/pimd/pim_igmpv3.c
index 15078dd1ec..96f97f1d12 100644
--- a/pimd/pim_igmpv3.c
+++ b/pimd/pim_igmpv3.c
@@ -355,6 +355,7 @@ void igmp_source_delete(struct gm_source *source)
source_timer_off(group, source);
igmp_source_forward_stop(source);
+ source->source_channel_oil = NULL;
/* sanity check that forwarding has been disabled */
if (IGMP_SOURCE_TEST_FORWARDING(source->source_flags)) {
@@ -371,8 +372,6 @@ void igmp_source_delete(struct gm_source *source)
/* warning only */
}
- source_channel_oil_detach(source);
-
/*
notice that listnode_delete() can't be moved
into igmp_source_free() because the later is