mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-16 19:19:59 +00:00
Pim bug fixes (#4519)
Pim bug fixes Co-authored-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
This commit is contained in:
commit
ea1bdfc0e5
@ -133,7 +133,7 @@ void pim_ifchannel_delete(struct pim_ifchannel *ch)
|
|||||||
if (ch->upstream->channel_oil) {
|
if (ch->upstream->channel_oil) {
|
||||||
uint32_t mask = PIM_OIF_FLAG_PROTO_PIM;
|
uint32_t mask = PIM_OIF_FLAG_PROTO_PIM;
|
||||||
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;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A S,G RPT channel can have an empty oil, we also
|
* A S,G RPT channel can have an empty oil, we also
|
||||||
@ -142,13 +142,15 @@ void pim_ifchannel_delete(struct pim_ifchannel *ch)
|
|||||||
* being inherited. So let's figure out what
|
* being inherited. So let's figure out what
|
||||||
* needs to be done here
|
* needs to be done here
|
||||||
*/
|
*/
|
||||||
if (pim_upstream_evaluate_join_desired_interface(
|
if ((ch->sg.src.s_addr != INADDR_ANY) &&
|
||||||
ch->upstream, ch, ch->parent))
|
pim_upstream_evaluate_join_desired_interface(
|
||||||
|
ch->upstream, ch, ch->parent))
|
||||||
pim_channel_add_oif(ch->upstream->channel_oil,
|
pim_channel_add_oif(ch->upstream->channel_oil,
|
||||||
ch->interface, mask);
|
ch->interface,
|
||||||
else
|
PIM_OIF_FLAG_PROTO_STAR);
|
||||||
pim_channel_del_oif(ch->upstream->channel_oil,
|
|
||||||
ch->interface, mask);
|
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.
|
||||||
@ -227,6 +229,8 @@ void pim_ifchannel_delete_all(struct interface *ifp)
|
|||||||
while (!RB_EMPTY(pim_ifchannel_rb, &pim_ifp->ifchannel_rb)) {
|
while (!RB_EMPTY(pim_ifchannel_rb, &pim_ifp->ifchannel_rb)) {
|
||||||
ch = RB_ROOT(pim_ifchannel_rb, &pim_ifp->ifchannel_rb);
|
ch = RB_ROOT(pim_ifchannel_rb, &pim_ifp->ifchannel_rb);
|
||||||
|
|
||||||
|
pim_ifchannel_ifjoin_switch(__PRETTY_FUNCTION__,
|
||||||
|
ch, PIM_IFJOIN_NOINFO);
|
||||||
pim_ifchannel_delete(ch);
|
pim_ifchannel_delete(ch);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user