mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-05-28 14:21:45 +00:00
pimd, pim6d: Fix BSM packet process
Problem 1:
When route to BSR is having nexthop secondary address,
neighborship is built with primary address,
then pim_neighbor_find() fails, which cause drop of BSM
packet.
Fix 1:
Verify pim neighborship on the BSM received interface.
Problem 2:
Problem 2:
Source IP BSM address is primary address, where
as nexthop also can be primary or secondary address.
Fix 2:
Avoiding the check (nhaddr == src_ip) for PIMV6
Issue: #11957
Signed-off-by: Sarita Patra <saritap@vmware.com>
(cherry picked from commit 2c6a32f9be
)
This commit is contained in:
parent
0320f687e6
commit
ca163640f1
@ -320,12 +320,11 @@ bool pim_nht_bsr_rpf_check(struct pim_instance *pim, pim_addr bsr_addr,
|
||||
if (if_is_loopback(ifp) && if_is_loopback(src_ifp))
|
||||
return true;
|
||||
|
||||
nbr = pim_neighbor_find(ifp, znh->nexthop_addr);
|
||||
nbr = pim_neighbor_find(ifp, znh->nexthop_addr, true);
|
||||
if (!nbr)
|
||||
continue;
|
||||
|
||||
return znh->ifindex == src_ifp->ifindex &&
|
||||
(!pim_addr_cmp(znh->nexthop_addr, src_ip));
|
||||
return znh->ifindex == src_ifp->ifindex;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -380,12 +379,13 @@ bool pim_nht_bsr_rpf_check(struct pim_instance *pim, pim_addr bsr_addr,
|
||||
return true;
|
||||
|
||||
/* MRIB (IGP) may be pointing at a router where PIM is down */
|
||||
nbr = pim_neighbor_find(ifp, nhaddr);
|
||||
|
||||
nbr = pim_neighbor_find(ifp, nhaddr, true);
|
||||
|
||||
if (!nbr)
|
||||
continue;
|
||||
|
||||
return nh->ifindex == src_ifp->ifindex &&
|
||||
(!pim_addr_cmp(nhaddr, src_ip));
|
||||
return nh->ifindex == src_ifp->ifindex;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user