summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_nht.h
diff options
context:
space:
mode:
authorAnuradha Karuppiah <anuradhak@cumulusnetworks.com>2020-05-09 04:24:56 +0200
committerAnuradha Karuppiah <anuradhak@nvidia.com>2020-11-24 20:06:08 +0100
commitc589d84746d96c1714582e437eb9cec691795252 (patch)
tree2ca0ecf6ec0896991b2e3a3155da69d592f5d308 /bgpd/bgp_nht.h
parentbgpd: skip VRF import of MAC-IP routes that belong to locally attached hosts (diff)
downloadfrr-c589d84746d96c1714582e437eb9cec691795252.tar.xz
frr-c589d84746d96c1714582e437eb9cec691795252.zip
bgpd: L3NHG infrastructure for host routes in EVPN
ES-VRF entries are maintained for the purpose of L3-NHG creation - 1. Each ES-EVI entry is associated with a tenant VRF. This associaton triggers the creation of an ES-VRF entry. 2. Type-2/MAC-IP routes are imported into a tenant VRF and programmed as a /32 or host route entry in the dataplane. If the destination of the host route is a remote-ES the route is programmed with the corresponding (keyed in by {vrf,ES-id}) L3-NHG. 3. The reason for this indirection (route->L3-NHG, L3-NHG->list-of-VTEPs) is to avoid route updates to the dplane when a remote-ES link flaps i.e. instead of updating all the dependent routes the NHG's contents are updated. This reduces the amount of dataplane updates (fewer nhg updates vs. route updates) allowing for a faster failover. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Diffstat (limited to 'bgpd/bgp_nht.h')
-rw-r--r--bgpd/bgp_nht.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/bgpd/bgp_nht.h b/bgpd/bgp_nht.h
index 4e015e4aa..8451f0689 100644
--- a/bgpd/bgp_nht.h
+++ b/bgpd/bgp_nht.h
@@ -90,4 +90,10 @@ extern void bgp_nht_register_nexthops(struct bgp *bgp);
extern void bgp_nht_reg_enhe_cap_intfs(struct peer *peer);
extern void bgp_nht_dereg_enhe_cap_intfs(struct peer *peer);
+/* APIs for setting up and allocating L3 nexthop group ids */
+extern uint32_t bgp_l3nhg_id_alloc(void);
+extern void bgp_l3nhg_id_free(uint32_t nhg_id);
+extern void bgp_l3nhg_init(void);
+void bgp_l3nhg_finish(void);
+
#endif /* _BGP_NHT_H */