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_tib.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_tib.c')
| -rw-r--r-- | pimd/pim_tib.c | 2 |
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__); } |
