summaryrefslogtreecommitdiffstats
path: root/zebra/zebra_vrf.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2021-09-24 22:42:25 +0200
committerDonald Sharp <sharpd@nvidia.com>2021-09-27 18:38:08 +0200
commita4598b97d93937eead669d406afa91fd070de83b (patch)
tree478ebb46518d43ea1bb5f6fdd0f4dd645e712758 /zebra/zebra_vrf.c
parentzebra: Start carrying safi for rnh processing (diff)
downloadfrr-a4598b97d93937eead669d406afa91fd070de83b.tar.xz
frr-a4598b97d93937eead669d406afa91fd070de83b.zip
zebra: Create the SAFI_MULTICAST rnh tables
Actually create the SAFI_MULTICAST rnh tables. No code uses these yet. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'zebra/zebra_vrf.c')
-rw-r--r--zebra/zebra_vrf.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/zebra/zebra_vrf.c b/zebra/zebra_vrf.c
index 69b586d71..d52601b63 100644
--- a/zebra/zebra_vrf.c
+++ b/zebra/zebra_vrf.c
@@ -150,6 +150,10 @@ static int zebra_vrf_enable(struct vrf *vrf)
table = route_table_init();
table->cleanup = zebra_rnhtable_node_cleanup;
zvrf->rnh_table[afi] = table;
+
+ table = route_table_init();
+ table->cleanup = zebra_rnhtable_node_cleanup;
+ zvrf->rnh_table_multicast[afi] = table;
}
/* Kick off any VxLAN-EVPN processing. */
@@ -192,6 +196,8 @@ static int zebra_vrf_disable(struct vrf *vrf)
for (afi = AFI_IP; afi <= AFI_IP6; afi++) {
route_table_finish(zvrf->rnh_table[afi]);
zvrf->rnh_table[afi] = NULL;
+ route_table_finish(zvrf->rnh_table_multicast[afi]);
+ zvrf->rnh_table_multicast[afi] = NULL;
for (safi = SAFI_UNICAST; safi <= SAFI_MULTICAST; safi++)
rib_close_table(zvrf->table[afi][safi]);
@@ -292,6 +298,8 @@ static int zebra_vrf_delete(struct vrf *vrf)
if (zvrf->rnh_table[afi])
route_table_finish(zvrf->rnh_table[afi]);
+ if (zvrf->rnh_table_multicast[afi])
+ route_table_finish(zvrf->rnh_table[afi]);
}
otable = otable_pop(&zvrf->other_tables);