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>
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)) {
/* warning only */
}
- source_channel_oil_detach(source);
-
/*
notice that listnode_delete() can't be moved
into igmp_source_free() because the later is
per-interface (S,G) state.
*/
pim_ifchannel_local_membership_del(oif, &sg);
+
+ pim_channel_oil_del(*oilp, __func__);
}