mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-17 20:09:38 +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)
|
if (ch->upstream->flags & PIM_UPSTREAM_FLAG_MASK_SRC_IGMP)
|
||||||
mask = PIM_OIF_FLAG_PROTO_IGMP;
|
mask = PIM_OIF_FLAG_PROTO_IGMP;
|
||||||
|
|
||||||
/* SGRpt entry could have empty oil */
|
/*
|
||||||
pim_channel_del_oif(ch->upstream->channel_oil, ch->interface,
|
* A S,G RPT channel can have an empty oil, we also
|
||||||
mask);
|
* 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?
|
* Do we have any S,G's that are inheriting?
|
||||||
* Nuke from on high too.
|
* Nuke from on high too.
|
||||||
|
@ -1296,6 +1296,14 @@ void pim_forward_stop(struct pim_ifchannel *ch, bool install_it)
|
|||||||
install_it, up->channel_oil->installed);
|
install_it, up->channel_oil->installed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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_channel_del_oif(up->channel_oil, ch->interface,
|
||||||
PIM_OIF_FLAG_PROTO_PIM);
|
PIM_OIF_FLAG_PROTO_PIM);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user