mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 11:48:50 +00:00
pimd: Fix handling of *,G on RP to allow prune of S,G to go out
When on the RP we received a prune *,G for an established S,G If join_desired is no longer true we need to prune and reset some timers, in addition to removing the inherited interface from the olist. This was not happening because we were just removing the inherited oif from the *,G. Ticket: CM-14561 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
0b6817c5e7
commit
a118e71d0e
@ -274,12 +274,16 @@ void pim_ifchannel_ifjoin_switch(const char *caller,
|
||||
continue;
|
||||
|
||||
if (!pim_upstream_evaluate_join_desired (child))
|
||||
pim_channel_del_oif (c_oil, ch->interface, PIM_OIF_FLAG_PROTO_STAR);
|
||||
{
|
||||
pim_channel_del_oif (c_oil, ch->interface, PIM_OIF_FLAG_PROTO_STAR);
|
||||
pim_upstream_update_join_desired (child);
|
||||
}
|
||||
|
||||
/*
|
||||
* If the S,G has no if channel and the c_oil still
|
||||
* has output here then the *,G was supplying the implied
|
||||
* if channel. So remove it.
|
||||
* I think this is dead code now. is it?
|
||||
*/
|
||||
if (!ch && c_oil->oil.mfcc_ttls[pim_ifp->mroute_vif_index])
|
||||
pim_channel_del_oif (c_oil, ch->interface, PIM_OIF_FLAG_PROTO_STAR);
|
||||
@ -297,7 +301,7 @@ void pim_ifchannel_ifjoin_switch(const char *caller,
|
||||
if (pim_upstream_evaluate_join_desired (child))
|
||||
{
|
||||
pim_channel_add_oif (child->channel_oil, ch->interface, PIM_OIF_FLAG_PROTO_STAR);
|
||||
pim_upstream_switch (child, PIM_UPSTREAM_JOINED);
|
||||
pim_upstream_update_join_desired (child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user