mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-13 16:26:10 +00:00
pimd: force update inherited OIL when vxlan local membership is created
When local member is added the (*, G) entry may already be in a JOINED state. In that case the OIL is not updated i.e. pim_channel_add_oif is not happening for ipmr-lo. Because of this the traffic associated with the multicast vxlan tunnel is pulled down to the VTEP but not terminated by the kernel. This change force updates the OIL anytime ipmr-lo is added or removed as a local member. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
This commit is contained in:
parent
73db824993
commit
664b2a31d6
@ -533,6 +533,13 @@ static void pim_vxlan_term_mr_oif_add(struct pim_vxlan_sg *vxlan_sg)
|
|||||||
if (pim_ifchannel_local_membership_add(vxlan_sg->term_oif,
|
if (pim_ifchannel_local_membership_add(vxlan_sg->term_oif,
|
||||||
&vxlan_sg->sg)) {
|
&vxlan_sg->sg)) {
|
||||||
vxlan_sg->flags |= PIM_VXLAN_SGF_OIF_INSTALLED;
|
vxlan_sg->flags |= PIM_VXLAN_SGF_OIF_INSTALLED;
|
||||||
|
/* update the inherited OIL */
|
||||||
|
/* XXX - I don't see the inherited OIL updated when a local
|
||||||
|
* member is added. And that probably needs to be fixed. Till
|
||||||
|
* that happens we do a force update on the inherited OIL
|
||||||
|
* here.
|
||||||
|
*/
|
||||||
|
pim_upstream_inherited_olist(vxlan_sg->pim, vxlan_sg->up);
|
||||||
} else {
|
} else {
|
||||||
zlog_warn("vxlan SG %s term-oif %s add failed",
|
zlog_warn("vxlan SG %s term-oif %s add failed",
|
||||||
vxlan_sg->sg_str, vxlan_sg->term_oif->name);
|
vxlan_sg->sg_str, vxlan_sg->term_oif->name);
|
||||||
@ -550,6 +557,12 @@ static void pim_vxlan_term_mr_oif_del(struct pim_vxlan_sg *vxlan_sg)
|
|||||||
|
|
||||||
vxlan_sg->flags &= ~PIM_VXLAN_SGF_OIF_INSTALLED;
|
vxlan_sg->flags &= ~PIM_VXLAN_SGF_OIF_INSTALLED;
|
||||||
pim_ifchannel_local_membership_del(vxlan_sg->term_oif, &vxlan_sg->sg);
|
pim_ifchannel_local_membership_del(vxlan_sg->term_oif, &vxlan_sg->sg);
|
||||||
|
/* update the inherited OIL */
|
||||||
|
/* XXX - I don't see the inherited OIL updated when a local member
|
||||||
|
* is deleted. And that probably needs to be fixed. Till that happens
|
||||||
|
* we do a force update on the inherited OIL here.
|
||||||
|
*/
|
||||||
|
pim_upstream_inherited_olist(vxlan_sg->pim, vxlan_sg->up);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pim_vxlan_update_sg_entry_mlag(struct pim_instance *pim,
|
static void pim_vxlan_update_sg_entry_mlag(struct pim_instance *pim,
|
||||||
|
Loading…
Reference in New Issue
Block a user