mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 08:50:26 +00:00
Merge pull request #4214 from donaldsharp/s_g_channel_deletion
pimd: Deletion of a ifchannel does not immediately mean remove from OIL
This commit is contained in:
commit
60f678ae0d
@ -135,9 +135,20 @@ void pim_ifchannel_delete(struct pim_ifchannel *ch)
|
||||
if (ch->upstream->flags & PIM_UPSTREAM_FLAG_MASK_SRC_IGMP)
|
||||
mask = PIM_OIF_FLAG_PROTO_IGMP;
|
||||
|
||||
/* SGRpt entry could have empty oil */
|
||||
pim_channel_del_oif(ch->upstream->channel_oil, ch->interface,
|
||||
mask);
|
||||
/*
|
||||
* A S,G RPT channel can have an empty oil, we also
|
||||
* need to take into account the fact that a ifchannel
|
||||
* might have been suppressing a *,G ifchannel from
|
||||
* being inherited. So let's figure out what
|
||||
* needs to be done here
|
||||
*/
|
||||
if (pim_upstream_evaluate_join_desired_interface(
|
||||
ch->upstream, ch, ch->parent))
|
||||
pim_channel_add_oif(ch->upstream->channel_oil,
|
||||
ch->interface, mask);
|
||||
else
|
||||
pim_channel_del_oif(ch->upstream->channel_oil,
|
||||
ch->interface, mask);
|
||||
/*
|
||||
* Do we have any S,G's that are inheriting?
|
||||
* Nuke from on high too.
|
||||
|
@ -1296,8 +1296,16 @@ void pim_forward_stop(struct pim_ifchannel *ch, bool install_it)
|
||||
install_it, up->channel_oil->installed);
|
||||
}
|
||||
|
||||
pim_channel_del_oif(up->channel_oil, ch->interface,
|
||||
PIM_OIF_FLAG_PROTO_PIM);
|
||||
/*
|
||||
* If a channel is being removed, check to see if we still need
|
||||
* to inherit the interface. If so make sure it is added in
|
||||
*/
|
||||
if (pim_upstream_evaluate_join_desired_interface(up, ch, ch->parent))
|
||||
pim_channel_add_oif(up->channel_oil, ch->interface,
|
||||
PIM_OIF_FLAG_PROTO_PIM);
|
||||
else
|
||||
pim_channel_del_oif(up->channel_oil, ch->interface,
|
||||
PIM_OIF_FLAG_PROTO_PIM);
|
||||
|
||||
if (install_it && !up->channel_oil->installed)
|
||||
pim_mroute_add(up->channel_oil, __PRETTY_FUNCTION__);
|
||||
|
Loading…
Reference in New Issue
Block a user