mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 07:37:54 +00:00
pimd: Lookup loopback based upon vrf correctly.
The vrf loopback ip address should be associated with the vrf device for vrf's, else use the loopback. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
6f439a7058
commit
896b2044c7
@ -903,6 +903,7 @@ struct in_addr pim_find_primary_addr(struct interface *ifp)
|
||||
int v4_addrs = 0;
|
||||
int v6_addrs = 0;
|
||||
struct pim_interface *pim_ifp = ifp->info;
|
||||
struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id);
|
||||
|
||||
if (pim_ifp && PIM_INADDR_ISNOT_ANY(pim_ifp->update_source)) {
|
||||
return pim_ifp->update_source;
|
||||
@ -940,7 +941,11 @@ struct in_addr pim_find_primary_addr(struct interface *ifp)
|
||||
if (!v4_addrs && v6_addrs && !if_is_loopback(ifp)) {
|
||||
struct interface *lo_ifp;
|
||||
// DBS - Come back and check here
|
||||
lo_ifp = if_lookup_by_name("lo", pimg->vrf_id);
|
||||
if (ifp->vrf_id == VRF_DEFAULT)
|
||||
lo_ifp = if_lookup_by_name("lo", vrf->vrf_id);
|
||||
else
|
||||
lo_ifp = if_lookup_by_name(vrf->name, vrf->vrf_id);
|
||||
|
||||
if (lo_ifp)
|
||||
return pim_find_primary_addr(lo_ifp);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user