summaryrefslogtreecommitdiffstats
path: root/zebra/zebra_vxlan.h
diff options
context:
space:
mode:
authorvivek <vivek@cumulusnetworks.com>2017-12-02 02:36:37 +0100
committermitesh <mitesh@cumulusnetworks.com>2018-01-24 01:24:35 +0100
commit84915b0a15e32a51622f28b6bcafff58a4b02d6d (patch)
treeb832db0fc25d5f67e73f43138f1949c5a76b5a47 /zebra/zebra_vxlan.h
parentbgpd: fix show bgp l2vpn evpn vni command (diff)
downloadfrr-84915b0a15e32a51622f28b6bcafff58a4b02d6d.tar.xz
frr-84915b0a15e32a51622f28b6bcafff58a4b02d6d.zip
*: Handle VRF configuration when VRF gets inactivated and activated
A VRF is active only when the corresponding VRF device is present in the kernel. However, when the kernel VRF device is removed, the VRF container in FRR should go away only if there is no user configuration for it. Otherwise, when the VRF device is created again so that the VRF becomes active, FRR cannot take the correct actions. Example configuration for the VRF includes static routes and EVPN L3 VNI. Note that a VRF is currently considered to be "configured" as soon as the operator has issued the "vrf <name>" command in FRR. Such a configured VRF is not deleted upon VRF device removal, it is only made inactive. A VRF that is "configured" can be deleted only upon operator action and only if the VRF has been deactivated i.e., the VRF device removed from the kernel. This is an existing restriction. To implement this change, the VRF disable and delete actions have been modified. Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Mitesh Kanjariya <mkanjariya@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com> Ticket: CM-18553, CM-18918, CM-10139 Reviewed By: CCR-7022 Testing Done: 1. vrf and pim-vrf automation tests 2. Multiple VRF delete and readd (ifdown, ifup-with-depends) 3. FRR stop, start, restart 4. Networking restart 5. Configuration delete and readd Some of the above tests run in different sequences (manually).
Diffstat (limited to 'zebra/zebra_vxlan.h')
-rw-r--r--zebra/zebra_vxlan.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/zebra/zebra_vxlan.h b/zebra/zebra_vxlan.h
index 2a5059110..d9801a8b6 100644
--- a/zebra/zebra_vxlan.h
+++ b/zebra/zebra_vxlan.h
@@ -54,6 +54,9 @@ is_evpn_enabled()
extern ifindex_t get_l3vni_svi_ifindex(vrf_id_t vrf_id);
extern int zebra_vxlan_vrf_delete(struct zebra_vrf *zvrf);
+extern int zebra_vxlan_vrf_enable(struct zebra_vrf *zvrf);
+extern int zebra_vxlan_vrf_disable(struct zebra_vrf *zvrf);
+extern int zebra_vxlan_vrf_delete(struct zebra_vrf *zvrf);
extern void zebra_vxlan_print_specific_nh_l3vni(struct vty *vty, vni_t l3vni,
struct ipaddr *ip, u_char uj);
extern void zebra_vxlan_print_evpn(struct vty *vty, u_char uj);
@@ -154,6 +157,7 @@ extern int zebra_vxlan_process_vrf_vni_cmd(struct zebra_vrf *zvrf, vni_t vni,
int err_str_sz, int add);
extern void zebra_vxlan_init_tables(struct zebra_vrf *zvrf);
extern void zebra_vxlan_close_tables(struct zebra_vrf *);
+extern void zebra_vxlan_cleanup_tables(struct zebra_vrf *);
extern void zebra_vxlan_ns_init(struct zebra_ns *zns);
extern void zebra_vxlan_ns_disable(struct zebra_ns *zns);
extern void zebra_vxlan_evpn_vrf_route_add(vrf_id_t vrf_id,