summaryrefslogtreecommitdiff
path: root/zebra/zebra_vxlan.h
AgeCommit message (Collapse)Author
2022-05-13zebra: remove unnecessary check for "zevpn_vrf"anlan_cs
The global vrf in zebra is always non-NULL. In general, it is bound to default vrf by `zebra_vrf_init()`, at other times bound to some specific vrf. Anyway, non-NULL. So remove all redundant checkings for the returned value of `zebra_vrf_get_evpn()`. Additionally, remove the unnecessary check for `zvrf` in `zebra_vxlan_cleanup_tables()`. Signed-off-by: anlan_cs <vic.lan@pica8.com>
2021-09-17zebra: handle bridge mac address update in evpn contextsPhilippe Guibert
when running bgp evpn rt5 setup, the Rmac sent in BGP updates stands for the MAC address of the bridge interface. After having loaded frr configuration, the Rmac address is not refreshed. This issue can be easily reproduced by executing some commands: ip netns exec cust1 ip link set dev br1000 address 2e:ab:45:aa:bb:cc Actually, the BGP EVPN contexts are kept unchanged. That commit proposes to fix this by intercepting the mac address change, and refreshing the vxlan interfaces attached to te bridge interface that changed its MAC address. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2021-07-19zebra: process EVPN remote VTEP updates from the workqueueMark Stapp
Move remote VTEP updates from immediate, inline processing in their ZAPI message handlers to the main workqueue. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-12-01zebra: support for slow-failover of local MACs on an ESAnuradha Karuppiah
When a local ES flaps there are two modes in which the local MACs are failed over - 1. Fast failover - A backup NHG (ES-peer group) is programmed in the dataplane per-access port. When a local ES flaps the MAC entries are left unaltered i.e. pointing to the down access port. And the dataplane redirects traffic destined to the oper-down access port via the backup NHG. 2. Slow failover - This mode needs to be turned on to allow dataplanes not capable of re-directing traffic. In this mode local MAC entries on a down local ES are re-programmed to point to the ES-peers' NHG. And vice-versa i.e. when the ES comes up the MAC entries are re-programmed with the access port as dest. Fast failover is on by default. Slow failover can be enabled via the following config - evpn mh redirect-off Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-10-05zebra: display rpc error msg to vtyshChirag Shah
Zebra's clear duplicate detect command is rpc converted. There is condition where cli fails with human readable message. Using northboun's errmsg buffer to display error message to user. Testing: bharat# clear evpn dup-addr vni 1002 ip 2011:11::11 Error type: generic error Error description: Requested IP's associated MAC aa:aa:aa:aa:aa:aa is still in duplicate state bharat# clear evpn dup-addr vni 1002 ip 11.11.11.11 Error type: generic error Error description: Requested IP's associated MAC aa:aa:aa:aa:aa:aa is still in duplicate state Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-08-05zebra: support for MAC-IP sync routesAnuradha Karuppiah
MAC-IP routes are used for syncing local entries across redundant switches in an EVPN-MH setup. A path from a peer that has a local ES as destination is tagged as a SYNC path. The SYNC path results in the addition of local MAC and/or local neigh entry in zebra and in the dataplane. Implementation overview ======================= 1. Three new flags "local-inactive", "peer-active" and "peer-proxy" are maintained per-local-MAC and per-local-Neigh entry. 2. The "peer-XXX" flags are set and cleared via SYNC path updates from BGP. Proxy sync paths result in the setting of "peer-proxy" flag (and non-proxies result in the "peer-active"). 3. A neigh entry that has a "peer-XXX" flag set is programmed as "static" in the dataplane. 4. A MAC entry that has a "peer-XXX" flag set or is referenced by a sync-neigh entry (that has a "peer-XXX" flags set) is programmed as "static" in the dataplane. 5. The sync-seq number is used to normalize the MM seq number across all the redundant switches i.e. the max MM seq number across all switches is used by each of the switches. This commit also includes the changes needed for extended MM seq syncing. 6. A MAC/neigh entry has to be local-active or peer-active to sent to BGP. An entry that is NOT local-active is sent with the proxy flag (so BGP can "proxy" advertise it). 7. The "peer-active" flag is aged out by zebra by using a hold_timer (this is instead of being abruptly dropped on SYNC path delete). This age-out is needed to handle peer-switch restart (procedures are specified in draft-rbickhart-evpn-ip-mac-proxy-adv). The holdtime needs to be sufficiently long to allow an external neighmgr daemon or the dataplane component to independently probe and establish local reachability of a host. The MAC and neigh hold time values are configurable. PS: In the future this probing may happen in FRR itself. CLI changes to display sync info ================================ MAC === >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> root@torm-11:mgmt:~# net show evpn mac vni 1000 Number of MACs (local and remote) known for this VNI: 6 Flags: N=sync-neighs, I=local-inactive, P=peer-active, X=peer-proxy MAC Type Flags Intf/Remote ES/VTEP VLAN Seq #'s 00:02:00:00:00:25 local vlan1000 1000 0/0 02:02:00:00:00:02 local PI hostbond1 1000 0/0 02:02:00:00:00:06 remote 03:00:00:00:00:02:11:00:00:01 0/0 02:02:00:00:00:01 local X hostbond1 1000 0/0 00:00:00:00:00:11 local PI hostbond1 1000 0/0 02:02:00:00:00:05 remote 03:00:00:00:00:02:11:00:00:01 0/0 root@torm-11:mgmt:~# root@torm-11:mgmt:~# net show evpn mac vni 1000 mac 00:00:00:00:00:11 MAC: 00:00:00:00:00:11 ESI: 03:00:00:00:00:01:11:00:00:01 Intf: hostbond1(58) VLAN: 1000 Sync-info: neigh#: 0 local-inactive peer-active >>>>>>>>>>>> Local Seq: 0 Remote Seq: 0 Neighbors: No Neighbors root@torm-11:mgmt:~# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> neigh ===== >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> root@torm-11:mgmt:~# net show evpn arp vni 1003 Number of ARPs (local and remote) known for this VNI: 4 Flags: I=local-inactive, P=peer-active, X=peer-proxy Neighbor Type Flags State MAC Remote ES/VTEP Seq #'s 2001:fee1:0:3::6 local active 00:02:00:00:00:25 0/0 45.0.3.66 local P active 00:02:00:00:00:66 0/0 45.0.3.6 local active 00:02:00:00:00:25 0/0 fe80::202:ff:fe00:25 local active 00:02:00:00:00:25 0/0 root@torm-11:mgmt:~# root@torm-11:mgmt:~# net show evpn arp vni 1003 ip 45.0.3.66 IP: 45.0.3.66 Type: local State: active MAC: 00:02:00:00:00:66 Sync-info: peer-active >>>>>>>>>>>>>>>> Local Seq: 0 Remote Seq: 0 root@torm-11:mgmt:~# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-08-05zebra: Ethernet segment management and support for MAC-ECMPAnuradha Karuppiah
1. Local ethernet segments are configured in zebra by attaching a local-es-id and sys-mac to a access interface - >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! interface hostbond1 evpn mh es-id 1 evpn mh es-sys-mac 00:00:00:00:01:11 ! >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> This info is then sent to BGP and used for the generation of EAD-per-ES routes. 2. Access VLANs associated with an (ES) access port are translated into ES-EVI objects and sent to BGP. This is used by BGP for the generation of EAD-EVI routes. 3. Remote ESs are imported by BGP and sent to zebra. A list of VTEPs is maintained per-remote ES in zebra. This list is used for the creation of the L2-NHG that is used for forwarding traffic. 4. MAC entries with a non-zero ESI destination use the L2-NHG associated with the ESI for forwarding traffic over the VxLAN overlay. Please see zebra_evpn_mh.h for the datastruct organization details. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-04-16zebra: clear dup detect cleanup for nb conversionChirag Shah
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-03-27zebra,lib: use const in more apisMark Stapp
Use const with some args to ipaddr, zebra vxlan, mpls lsp, and nexthop apis; add some extra checks to some nexthop-related apis. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-03-10zebra: Readd special flood MAC upon del notificationvivek
Readd the special MAC that represents the flood (head-end replication) entry for EVPN-VxLAN upon getting a delete notification for it. Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Chirag Shah <chirag@cumulusnetworks.com> Ticket: CM-25797 Ticket: CM-26238 Testing Done: 1. evpn-min, evpn-smoke - results summarized in CM-25798
2019-11-26Merge pull request #4977 from chiragshah6/evpn_dev1Philippe Guibert
* evpn primary address advertisement
2019-11-22zebra: evpn pip mac vlan up-down eventChirag Shah
macvlan interface up/down event triggers bgp to send updates for evpn routes with changed RMAC and nexthop IP values. Ticket:CM-26190 Reviewed By: Testing Done: Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2019-11-21zebra: "show evpn vni details json" prints incorrect JSON formatLakshman Krishnamoorthy
edge-2> show evpn vni detail json { "vni":79031, "type":"L3", ..., ... } <<<<<< no comma { "vni":79021, "type":"L3", ..., ... } <<<<<< no comma { } <<<<<< blank edge-2> The fix is to pack json info into json_array before printing it. Signed-off-by: Lakshman Krishnamoorthy <lkrishnamoor@vmware.com>
2019-08-02zebra: use dataplane for vxlan remote mac programmingMark Stapp
Move vxlan remote MAC install and uninstall to the async dataplane. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2019-07-03pimd, zebra: request for replay of SG entries on startupAnuradha Karuppiah
zvni setup in zebra is controlled via bgpd i.e. advertise_all_vni from bgpd triggers this setup. As a part of zvni creation we may need to setup BUM mcast SG entries which are propagated to pimd for MDT setup. Now pimd may not be present at the time of zvni creation or may restart post zvni creation so we need a mechanism to replay (on pimd startup) and to cleanup (on pimd stop). This is addressed via zebra_vxlan_sg_replay and zebra_evpn_pim_cfg_clean_up. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2019-06-19zebra: Clean up BGP EVPN configuration when the client, BGPD, goes downKishore Aramalla
When BGP daemon is down, Clean up its configuration state from zebra. When the BGP daemon is up again, it will push its configuration to zebra Delete the MAC and neighbor information received on the BGP session, while retaining the local MAC and local ARP entries. Signed-off-by: Kishore Aramalla karamalla@vmware.com
2019-04-20zebra: header changes for l2 vni bum-mcast-grp handlingAnuradha Karuppiah
The multicast group ip address for BUM traffic is configurable per-l2-vni. One way to configure that is to setup a vxlan device that per-l2-vni and specify the address against that vxlan device - root@TORS1:~# vtysh -c "show interface vx-1000" |grep -i vxlan Interface Type Vxlan VxLAN Id 1000 VTEP IP: 27.0.0.15 Access VLAN Id 1000 Mcast 239.1.1.100 root@TORS1:~# vtysh -c "show evpn vni 1000" |grep Mcast Mcast group: 239.1.1.100 root@TORS1:~# Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2019-03-28Merge branch 'master' into evpn-session-vrfTuetuopay
2019-03-27zebra: Move the EVPN VRF pointer to zebra_routerTuetuopay
It had no logical reason to be in the default VRF. This moves it to the zebra_router, which is better suited to store global references. Signed-off-by: Tuetuopay <tuetuopay@me.com> Sponsored-by: Scaleway
2019-03-25add cplusplus guards to all zebra headersEmanuele Di Pascale
Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
2019-03-22bgpd, zebra: Redo checks to advertise_all_vniTuetuopay
This replaces manual checks of the flag with a wrapper macro to convey the meaning "is evpn enabled on this vrf?" Signed-off-by: Tuetuopay <tuetuopay@me.com> Sponsored-by: Scaleway
2019-03-22zebra: Lookup dad and replication settings from EVPN VRFTuetuopay
Signed-off-by: Tuetuopay <tuetuopay@me.com> Sponsored-by: Scaleway
2019-03-19zebra: Store the EVPN VRF in the default VRFTuetuopay
The EVPN VRF is defined by bgpd, and is the one vrf where `advertise-all-vni` is present. Signed-off-by: Tuetuopay <tuetuopay@me.com> Sponsored-by: Scaleway
2019-02-06zebra: advertise svi ip as macip route changesChirag Shah
In Asymmetric and symetric routing scenario in EVPN where each VTEP pair having different set of addresses for the SVIs. This knob allows reachability (ping connectivity) of SVI IPs and resolve ARP resoultion VTEPs across racks. This knob should not be used when same SVI IPs configured on VTEPs across racks or when advertise default gateway is configured. Ticket:CM-23782 Testing Done: Bring up EVPN symmetric routing topology with different SVI IPs on different VTEPs. Enable advertise svi ip at each VTEP, remote VTEPs installs arp entry for SVI IPs via EVPN type-2 route exchange. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2019-01-24Treewide: use ANSI function definitionsRuben Kerkhof
Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
2018-12-17zebra: avoid initialising more than one the l3vni hash structurePhilippe Guibert
the l3vni structure is allocated only once, since that structure is only used for default netns. For that, move the initialisation part is moved to a proper place, where there is no risk of attempting to initialise it more than once, even when vrf backend is netns. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-12-04Merge pull request #3372 from nitinsoniism/show_evpn_mac_vni_all_detailSri Mohana Singamsetty
zebra: Add "show evpn mac vni all detail" command
2018-12-04Merge pull request #3340 from nitinsoniism/show_evpn_vni_detailDavid Lamparter
zebra: Add "show evpn vni detail" command
2018-12-03zebra: dup addr detect clear cmd non-zero returnChirag Shah
Clear dup address vni needs to return non-zero value in case of command is not successful. Ticket:CM-23122 Testing Done: run clear command and check upon failure return code is non-zero. root@TORS1:~# vtysh -c "clear evpn dup-addr vni 1000 ip 45.0.1.26" % Requested IP's associated MAC 00:01:02:03:04:05 is still in duplicate % state root@TORS1:~# echo $? 1 Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-27zebra: Add "show evpn arp-cache vni all detail" commandNitin Soni
Change helps display detailed output for all possible VNI neighbors without specifying VNI and ip. It helps in troubleshooting as a single command can be fired to capture detailed info on all VNIs. Ticket: CM-22832 Signed-off-by: Nitin Soni <nsoni@cumulusnetworks.com> Reviewed-by: CCR-8034
2018-11-27zebra: Add "show evpn mac vni all detail" commandNitin Soni
Change helps display detailed output for all possible VNI MACs without specifying VNI or mac. It helps in troubleshooting - a single command can be fired to capture detailed info on all VNIs. Also fixed and existing json related bug where json object is created by a parent function and freed in child function. Ticket: CM-22832 Signed-off-by: Nitin Soni <nsoni@cumulusnetworks.com> Reviewed-by: CCR-8028
2018-11-21zebra: Add "show evpn vni detail" commandNitin Soni
Change helps display detailed output for all possible VNIs without specifying VNI. It helps in troubleshooting - a single command can be fired to capture detailed info on all VNIs. Ticket: CM-22831 Signed-off-by: Nitin Soni <nsoni@cumulusnetworks.com> Reviewed-by: CCR-8013
2018-11-17zebra: dup addr detect clear commandChirag Shah
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17zebra: dup addr detect operation commandsChirag Shah
Display duplicate detected list of MACs and VNIs. - Per VNI - Across all VNIs Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17zebra: dup addr detect zapi changesChirag Shah
EVPN Duplicate Address Detection (DAD) zapi information Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-10-29zebra: add json support to show evpn mac vni <num> mac <mac>Don Slice
Added the json output capability in order to improve troubleshooting capabilities. Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-10-11lib, zebra: Allow the specification of BUM floodingDonald Sharp
Allow the modification of whether or not we will allow BUM flooding on the vxlan bridge. To do this allow the upper level protocol to specify via the ZEBRA_VXLAN_FLOOD_CONTROL zapi message. If flooding is disabled then BUM traffic will not be forwarded to other VTEP's. Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-09-18zebra: Use boolean for certain VxLAN-EVPN flagsvivek
Use boolean variables instead of unsigned int for certain VxLAN-EVPN flags which are really used as boolean. Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com> Reviewed-by: Chirag Shah <chirag@cumulusnetworks.com> Ticket: CM-22288 Reviewed By: CCR-7832 Testing Done: Along with a subsequent, related commit
2018-09-04bgpd, ospfd, pimd, zebra: Convert more use_json locations to boolDon Slice
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-08-30bgpd/ospfd: make bgp and ospf json response a bit more consistentDon Slice
Problem reported that some bgp and ospf json commands did not return any json output at all if the bgp/ospf instance did not exist. Additionally, some bgp and ospf json commands did not return any json output if the instance existed but no neighbors were defined. This fix makes these commands more consistent in returning empty braces for json output and issue a message if not using json output. Additionally, made the flag "use_json" a bool to make it consistent since previously, it had been defined as an int, char, u_char, and bool at various places. Ticket: CM-21040 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2018-07-17bgpd: support evpn nd ext communityChirag Shah
EVPN ND ext community support NA flag R-bit, to have proxy ND. Set R-bit in EVPN NA if a given router is default gateway or there is a local router attached, which can be determine based on local neighbor entry. Implement BGP ext community attribute to generate and parse R-bit and pass along zebra to program neigh entry in kernel. Upon receiving MAC/IP update with community type 0x06 and sub_type 0x08, pass the R-bit to zebra to program neigh entry. Set NTF_ROUTER in neigh entry and inform kernel to do proxy NA for EVPN. Ref: https://tools.ietf.org/html/draft-ietf-bess-evpn-na-flags-01 Ticket:CM-21712, CM-21711 Reviewed By: Testing Done: Configure Local vni enabled L3 Gateway, which would act as router, checked show evpn arp-cache vni x ip <ip of svi> on originated and remote VTEPs. "Router" flag is set. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-04-26bgpd, zebra: Handle EVPN router MAC per next hopvivek
Ensure that when EVPN routes are installed into zebra, the router MAC is passed per next hop and appropriately handled. This is required for proper multipath operation. Ticket: CM-18999 Reviewed By: Testing Done: Verified failed scenario, other manual tests Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2018-04-12zebra: act on kernel notifications for remote neighbors as wellMitesh Kanjariya
There can be a race condition between kernel and frr as follows. Frr sends remote neigh notification. At the (almost) same time kernel might send a notification saying neigh is local. After processing this notifications, the state in frr is local while state in kernel is remote. This causes kernel and frr to be out of sync. This problem will be avoided if FRR acts on the kernel notifications for remote neighbors. When FRR sees a remote neighbor notification for a neighbor which it thinks is local, FRR will change the neigh state to remote. Ticket: CM-19923/CM-18830 Review: CCR-7222 Testing: Manual Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2018-03-27*: use C99 standard fixed-width integer typesQuentin Young
The following types are nonstandard: - u_char - u_short - u_int - u_long - u_int8_t - u_int16_t - u_int32_t Replace them with the C99 standard types: - uint8_t - unsigned short - unsigned int - unsigned long - uint8_t - uint16_t - uint32_t Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-12zebra: reorganize zserv, batch i/oQuentin Young
Group send and receive functions together, change handlers to take a message instead of looking at ->ibuf and ->obuf, allow zebra to read multiple packets off the wire at a time. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-12zebra: standardize ZAPI message handler argsQuentin Young
A lot of the handler functions that are called directly from the ZAPI input processing code take different argument sets where they don't need to. These functions are called from only one place and all have the same fundamental information available to them to do their work. There is no need to specialize what information is passed to them; it is cleaner and easier to understand when they all accept the same base set of information and extract what they need inline. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-12zebra: dont return a status code in zapi handlersQuentin Young
All of the ZAPI message handlers return an integer that means different things to each of them, but nobody ever reads these integers, so this is technical debt that we can just eliminate outright. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-03-06*: conform with COMMUNITY.md formatting rules, via 'make indent'Lou Berger
Signed-off-by: Lou Berger <lberger@labn.net>
2018-02-10zebra, bgp: Support type-5 routes with asymmetric routingMitesh Kanjariya
Asymmetric routing is an ideal choice when all VLANs are cfged on all leafs. It simplifies the routing configuration and eliminates potential need for advertising subnet routes. However, we need to reach the Internet or global destinations or to do subnet-based routing between PODs or DCs. This requires EVPN type-5 routes but those routes require L3 VNI configuration. This task is to support EVPN type-5 routes for prefix-based routing in conjunction with asymmetric routing within the POD/DC. It is done by providing an option to use the L3 VNI only for prefix routes, so that type-2 routes (host routes) will only use the L2 VNI. Signed-off-by: Mitesh Kanjariya <mitesh@cumulusnetworks.com>
2018-01-23*: Handle VRF configuration when VRF gets inactivated and activatedvivek
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).