diff options
| author | Sarita Patra <saritap@vmware.com> | 2022-07-07 08:12:10 -0700 |
|---|---|---|
| committer | Sarita Patra <saritap@vmware.com> | 2023-06-04 22:23:56 -0700 |
| commit | cb809c0d6c006e570cd9052f4be7dbdce7337661 (patch) | |
| tree | 99abaf69f2ee70fc60a6e5880341a9ac02933aa7 /pimd/pim_igmpv3.c | |
| parent | 1bafbcb24a3e594b81a969ca673e368a72b994da (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.c | 3 |
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 |
