mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-17 22:55:43 +00:00
zebra: Pass in vrf to rib_match_ipv4_multicast
Pass around the vrf_id to rib_match_ipv4_multicast so that proper lookup can be maintained. Not really needed yet, but future fixing now. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
d71f1c4e6f
commit
f86a2b82fe
@ -354,7 +354,7 @@ extern int rib_delete (afi_t afi, safi_t safi, vrf_id_t vrf_id, int type,
|
|||||||
|
|
||||||
extern struct rib *rib_match (afi_t afi, safi_t safi, vrf_id_t, union g_addr *,
|
extern struct rib *rib_match (afi_t afi, safi_t safi, vrf_id_t, union g_addr *,
|
||||||
struct route_node **rn_out);
|
struct route_node **rn_out);
|
||||||
extern struct rib *rib_match_ipv4_multicast (struct in_addr addr,
|
extern struct rib *rib_match_ipv4_multicast (vrf_id_t vrf_id, struct in_addr addr,
|
||||||
struct route_node **rn_out);
|
struct route_node **rn_out);
|
||||||
|
|
||||||
extern struct rib *rib_lookup_ipv4 (struct prefix_ipv4 *, vrf_id_t);
|
extern struct rib *rib_lookup_ipv4 (struct prefix_ipv4 *, vrf_id_t);
|
||||||
|
@ -824,7 +824,7 @@ rib_match (afi_t afi, safi_t safi, vrf_id_t vrf_id,
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct rib *
|
struct rib *
|
||||||
rib_match_ipv4_multicast (struct in_addr addr, struct route_node **rn_out)
|
rib_match_ipv4_multicast (vrf_id_t vrf_id, struct in_addr addr, struct route_node **rn_out)
|
||||||
{
|
{
|
||||||
struct rib *rib = NULL, *mrib = NULL, *urib = NULL;
|
struct rib *rib = NULL, *mrib = NULL, *urib = NULL;
|
||||||
struct route_node *m_rn = NULL, *u_rn = NULL;
|
struct route_node *m_rn = NULL, *u_rn = NULL;
|
||||||
@ -833,18 +833,18 @@ rib_match_ipv4_multicast (struct in_addr addr, struct route_node **rn_out)
|
|||||||
switch (ipv4_multicast_mode)
|
switch (ipv4_multicast_mode)
|
||||||
{
|
{
|
||||||
case MCAST_MRIB_ONLY:
|
case MCAST_MRIB_ONLY:
|
||||||
return rib_match (AFI_IP, SAFI_MULTICAST, VRF_DEFAULT, &gaddr, rn_out);
|
return rib_match (AFI_IP, SAFI_MULTICAST, vrf_id, &gaddr, rn_out);
|
||||||
case MCAST_URIB_ONLY:
|
case MCAST_URIB_ONLY:
|
||||||
return rib_match (AFI_IP, SAFI_UNICAST, VRF_DEFAULT, &gaddr, rn_out);
|
return rib_match (AFI_IP, SAFI_UNICAST, vrf_id, &gaddr, rn_out);
|
||||||
case MCAST_NO_CONFIG:
|
case MCAST_NO_CONFIG:
|
||||||
case MCAST_MIX_MRIB_FIRST:
|
case MCAST_MIX_MRIB_FIRST:
|
||||||
rib = mrib = rib_match (AFI_IP, SAFI_MULTICAST, VRF_DEFAULT, &gaddr, &m_rn);
|
rib = mrib = rib_match (AFI_IP, SAFI_MULTICAST, vrf_id, &gaddr, &m_rn);
|
||||||
if (!mrib)
|
if (!mrib)
|
||||||
rib = urib = rib_match (AFI_IP, SAFI_UNICAST, VRF_DEFAULT, &gaddr, &u_rn);
|
rib = urib = rib_match (AFI_IP, SAFI_UNICAST, vrf_id, &gaddr, &u_rn);
|
||||||
break;
|
break;
|
||||||
case MCAST_MIX_DISTANCE:
|
case MCAST_MIX_DISTANCE:
|
||||||
mrib = rib_match (AFI_IP, SAFI_MULTICAST, VRF_DEFAULT, &gaddr, &m_rn);
|
mrib = rib_match (AFI_IP, SAFI_MULTICAST, vrf_id, &gaddr, &m_rn);
|
||||||
urib = rib_match (AFI_IP, SAFI_UNICAST, VRF_DEFAULT, &gaddr, &u_rn);
|
urib = rib_match (AFI_IP, SAFI_UNICAST, vrf_id, &gaddr, &u_rn);
|
||||||
if (mrib && urib)
|
if (mrib && urib)
|
||||||
rib = urib->distance < mrib->distance ? urib : mrib;
|
rib = urib->distance < mrib->distance ? urib : mrib;
|
||||||
else if (mrib)
|
else if (mrib)
|
||||||
@ -853,8 +853,8 @@ rib_match_ipv4_multicast (struct in_addr addr, struct route_node **rn_out)
|
|||||||
rib = urib;
|
rib = urib;
|
||||||
break;
|
break;
|
||||||
case MCAST_MIX_PFXLEN:
|
case MCAST_MIX_PFXLEN:
|
||||||
mrib = rib_match (AFI_IP, SAFI_MULTICAST, VRF_DEFAULT, &gaddr, &m_rn);
|
mrib = rib_match (AFI_IP, SAFI_MULTICAST, vrf_id, &gaddr, &m_rn);
|
||||||
urib = rib_match (AFI_IP, SAFI_UNICAST, VRF_DEFAULT, &gaddr, &u_rn);
|
urib = rib_match (AFI_IP, SAFI_UNICAST, vrf_id, &gaddr, &u_rn);
|
||||||
if (mrib && urib)
|
if (mrib && urib)
|
||||||
rib = u_rn->p.prefixlen > m_rn->p.prefixlen ? urib : mrib;
|
rib = u_rn->p.prefixlen > m_rn->p.prefixlen ? urib : mrib;
|
||||||
else if (mrib)
|
else if (mrib)
|
||||||
|
@ -311,7 +311,7 @@ DEFUN (show_ip_rpf_addr,
|
|||||||
return CMD_WARNING;
|
return CMD_WARNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
rib = rib_match_ipv4_multicast (addr, &rn);
|
rib = rib_match_ipv4_multicast (VRF_DEFAULT, addr, &rn);
|
||||||
|
|
||||||
if (rib)
|
if (rib)
|
||||||
vty_show_ip_route_detail (vty, rn, 1);
|
vty_show_ip_route_detail (vty, rn, 1);
|
||||||
|
@ -1346,7 +1346,7 @@ zread_ipv4_nexthop_lookup_mrib (struct zserv *client, u_short length, struct zeb
|
|||||||
struct rib *rib;
|
struct rib *rib;
|
||||||
|
|
||||||
addr.s_addr = stream_get_ipv4 (client->ibuf);
|
addr.s_addr = stream_get_ipv4 (client->ibuf);
|
||||||
rib = rib_match_ipv4_multicast (addr, NULL);
|
rib = rib_match_ipv4_multicast (zvrf->vrf_id, addr, NULL);
|
||||||
return zsend_ipv4_nexthop_lookup_mrib (client, addr, rib, zvrf);
|
return zsend_ipv4_nexthop_lookup_mrib (client, addr, rib, zvrf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user