]> git.proxmox.com Git - mirror_frr.git/commit - zebra/zebra_mpls.h
*: Handle VRF configuration when VRF gets inactivated and activated
authorvivek <vivek@cumulusnetworks.com>
Sat, 2 Dec 2017 01:36:37 +0000 (17:36 -0800)
committermitesh <mitesh@cumulusnetworks.com>
Wed, 24 Jan 2018 00:24:35 +0000 (16:24 -0800)
commit84915b0a15e32a51622f28b6bcafff58a4b02d6d
treeb832db0fc25d5f67e73f43138f1949c5a76b5a47
parentfb8384733f1865dbec3a8def0fb18ab4d78f0b47
*: 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).
lib/vrf.c
lib/vrf.h
zebra/zebra_mpls.c
zebra/zebra_mpls.h
zebra/zebra_ns.c
zebra/zebra_vrf.c
zebra/zebra_vxlan.c
zebra/zebra_vxlan.h
zebra/zebra_vxlan_null.c