mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-08 14:04:32 +00:00
Quagga: vrf_id not being set correctly
Several routing protocols use the zapi_ipv[4|6] api to talk to zebra. There are some instances where the api.vrf_id was not being set. Since the practice is to declare the api structure on the stack, the data inside is not being set to 0. As such random vrf_id values were being passed to zebrad causing rage and confusion. Ticket: CM-8287 Reviewed-by: CCR-3841 Testing: Test suites no longer crashing and burning Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
f1121188c7
commit
1a1f4efab3
@ -177,6 +177,7 @@ kernel_route_v4(int add,
|
|||||||
quagga_prefix.prefixlen = plen - 96; /* our plen is for v4mapped's addr */
|
quagga_prefix.prefixlen = plen - 96; /* our plen is for v4mapped's addr */
|
||||||
apply_mask_ipv4(&quagga_prefix);
|
apply_mask_ipv4(&quagga_prefix);
|
||||||
|
|
||||||
|
api.vrf_id = VRF_DEFAULT;
|
||||||
api.type = ZEBRA_ROUTE_BABEL;
|
api.type = ZEBRA_ROUTE_BABEL;
|
||||||
api.flags = 0;
|
api.flags = 0;
|
||||||
api.message = 0;
|
api.message = 0;
|
||||||
@ -229,6 +230,7 @@ kernel_route_v6(int add, const unsigned char *pref, unsigned short plen,
|
|||||||
quagga_prefix.prefixlen = plen;
|
quagga_prefix.prefixlen = plen;
|
||||||
apply_mask_ipv6(&quagga_prefix);
|
apply_mask_ipv6(&quagga_prefix);
|
||||||
|
|
||||||
|
api.vrf_id = VRF_DEFAULT;
|
||||||
api.type = ZEBRA_ROUTE_BABEL;
|
api.type = ZEBRA_ROUTE_BABEL;
|
||||||
api.flags = 0;
|
api.flags = 0;
|
||||||
api.message = 0;
|
api.message = 0;
|
||||||
|
@ -517,6 +517,7 @@ ospf6_zebra_add_discard (struct ospf6_route *request)
|
|||||||
{
|
{
|
||||||
if (!CHECK_FLAG (request->flag, OSPF6_ROUTE_BLACKHOLE_ADDED))
|
if (!CHECK_FLAG (request->flag, OSPF6_ROUTE_BLACKHOLE_ADDED))
|
||||||
{
|
{
|
||||||
|
api.vrf_id = VRF_DEFAULT;
|
||||||
api.type = ZEBRA_ROUTE_OSPF6;
|
api.type = ZEBRA_ROUTE_OSPF6;
|
||||||
api.flags = ZEBRA_FLAG_BLACKHOLE;
|
api.flags = ZEBRA_FLAG_BLACKHOLE;
|
||||||
api.instance = 0;
|
api.instance = 0;
|
||||||
@ -561,7 +562,7 @@ ospf6_zebra_delete_discard (struct ospf6_route *request)
|
|||||||
{
|
{
|
||||||
if (CHECK_FLAG (request->flag, OSPF6_ROUTE_BLACKHOLE_ADDED))
|
if (CHECK_FLAG (request->flag, OSPF6_ROUTE_BLACKHOLE_ADDED))
|
||||||
{
|
{
|
||||||
|
api.vrf_id = VRF_DEFAULT;
|
||||||
api.type = ZEBRA_ROUTE_OSPF6;
|
api.type = ZEBRA_ROUTE_OSPF6;
|
||||||
api.flags = ZEBRA_FLAG_BLACKHOLE;
|
api.flags = ZEBRA_FLAG_BLACKHOLE;
|
||||||
api.instance = 0;
|
api.instance = 0;
|
||||||
|
@ -70,13 +70,14 @@ rip_zebra_ipv4_add (struct prefix_ipv4 *p, struct in_addr *nexthop,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
rip_zebra_ipv4_delete (struct prefix_ipv4 *p, struct in_addr *nexthop,
|
rip_zebra_ipv4_delete (struct prefix_ipv4 *p, struct in_addr *nexthop,
|
||||||
u_int32_t metric)
|
u_int32_t metric)
|
||||||
{
|
{
|
||||||
struct zapi_ipv4 api;
|
struct zapi_ipv4 api;
|
||||||
|
|
||||||
if (vrf_bitmap_check (zclient->redist[AFI_IP][ZEBRA_ROUTE_RIP], VRF_DEFAULT))
|
if (vrf_bitmap_check (zclient->redist[AFI_IP][ZEBRA_ROUTE_RIP], VRF_DEFAULT))
|
||||||
{
|
{
|
||||||
|
api.vrf_id = VRF_DEFAULT;
|
||||||
api.type = ZEBRA_ROUTE_RIP;
|
api.type = ZEBRA_ROUTE_RIP;
|
||||||
api.instance = 0;
|
api.instance = 0;
|
||||||
api.flags = 0;
|
api.flags = 0;
|
||||||
|
@ -69,6 +69,7 @@ ripng_zebra_ipv6_delete (struct prefix_ipv6 *p, struct in6_addr *nexthop,
|
|||||||
|
|
||||||
if (vrf_bitmap_check (zclient->redist[AFI_IP6][ZEBRA_ROUTE_RIPNG], VRF_DEFAULT))
|
if (vrf_bitmap_check (zclient->redist[AFI_IP6][ZEBRA_ROUTE_RIPNG], VRF_DEFAULT))
|
||||||
{
|
{
|
||||||
|
api.vrf_id = VRF_DEFAULT;
|
||||||
api.type = ZEBRA_ROUTE_RIPNG;
|
api.type = ZEBRA_ROUTE_RIPNG;
|
||||||
api.instance = 0;
|
api.instance = 0;
|
||||||
api.flags = 0;
|
api.flags = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user