mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-11 13:17:49 +00:00
bgpd: add cli for configuring the EVI limit per-ES-frag
The EAD-per-ES route can be fragmented to fit the EVIs on the switch. This command allows the EVI limit to be configured - ! router bgp 5556 ! address-family l2vpn evpn ead-es-frag evi-limit 200 exit-address-family ! ! Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
This commit is contained in:
parent
7b0db0e43f
commit
bb37eabe24
@ -1796,8 +1796,8 @@ bgp_evpn_es_find_frag_with_space(struct bgp_evpn_es *es)
|
|||||||
struct bgp_evpn_es_frag *es_frag;
|
struct bgp_evpn_es_frag *es_frag;
|
||||||
|
|
||||||
for (ALL_LIST_ELEMENTS_RO(es->es_frag_list, node, es_frag)) {
|
for (ALL_LIST_ELEMENTS_RO(es->es_frag_list, node, es_frag)) {
|
||||||
if (listcount(es_frag->es_evi_frag_list)
|
if (listcount(es_frag->es_evi_frag_list) <
|
||||||
< BGP_EVPN_MAX_EVI_PER_ES_FRAG)
|
bgp_mh_info->evi_per_es_frag)
|
||||||
return es_frag;
|
return es_frag;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4989,6 +4989,7 @@ void bgp_evpn_mh_init(void)
|
|||||||
bgp_mh_info->host_routes_use_l3nhg = BGP_EVPN_MH_USE_ES_L3NHG_DEF;
|
bgp_mh_info->host_routes_use_l3nhg = BGP_EVPN_MH_USE_ES_L3NHG_DEF;
|
||||||
bgp_mh_info->suppress_l3_ecomm_on_inactive_es = true;
|
bgp_mh_info->suppress_l3_ecomm_on_inactive_es = true;
|
||||||
bgp_mh_info->bgp_evpn_nh_setup = true;
|
bgp_mh_info->bgp_evpn_nh_setup = true;
|
||||||
|
bgp_mh_info->evi_per_es_frag = BGP_EVPN_MAX_EVI_PER_ES_FRAG;
|
||||||
|
|
||||||
memset(&zero_esi_buf, 0, sizeof(esi_t));
|
memset(&zero_esi_buf, 0, sizeof(esi_t));
|
||||||
}
|
}
|
||||||
|
@ -341,6 +341,11 @@ struct bgp_evpn_mh_info {
|
|||||||
* sending the ead-per-es route instead of the L2-VNI(s) RTs
|
* sending the ead-per-es route instead of the L2-VNI(s) RTs
|
||||||
*/
|
*/
|
||||||
struct list *ead_es_export_rtl;
|
struct list *ead_es_export_rtl;
|
||||||
|
|
||||||
|
/* Number of EVIs in an ES fragment - used of EAD-per-ES route
|
||||||
|
* construction
|
||||||
|
*/
|
||||||
|
uint32_t evi_per_es_frag;
|
||||||
};
|
};
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
@ -5992,6 +5992,19 @@ DEFUN (no_bgp_evpn_vrf_rt,
|
|||||||
return CMD_SUCCESS;
|
return CMD_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFPY(bgp_evpn_ead_ess_frag_evi_limit, bgp_evpn_ead_es_frag_evi_limit_cmd,
|
||||||
|
"[no$no] ead-es-frag evi-limit (1-1000)$limit",
|
||||||
|
NO_STR
|
||||||
|
"EAD ES fragment config\n"
|
||||||
|
"EVIs per-fragment\n"
|
||||||
|
"limit\n")
|
||||||
|
{
|
||||||
|
bgp_mh_info->evi_per_es_frag =
|
||||||
|
no ? BGP_EVPN_MAX_EVI_PER_ES_FRAG : limit;
|
||||||
|
|
||||||
|
return CMD_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
DEFUN(bgp_evpn_ead_es_rt, bgp_evpn_ead_es_rt_cmd,
|
DEFUN(bgp_evpn_ead_es_rt, bgp_evpn_ead_es_rt_cmd,
|
||||||
"ead-es-route-target export RT",
|
"ead-es-route-target export RT",
|
||||||
"EAD ES Route Target\n"
|
"EAD ES Route Target\n"
|
||||||
@ -6326,6 +6339,10 @@ void bgp_config_write_evpn_info(struct vty *vty, struct bgp *bgp, afi_t afi,
|
|||||||
if (bgp->resolve_overlay_index)
|
if (bgp->resolve_overlay_index)
|
||||||
vty_out(vty, " enable-resolve-overlay-index\n");
|
vty_out(vty, " enable-resolve-overlay-index\n");
|
||||||
|
|
||||||
|
if (bgp_mh_info->evi_per_es_frag != BGP_EVPN_MAX_EVI_PER_ES_FRAG)
|
||||||
|
vty_out(vty, " ead-es-frag evi-limit %u\n",
|
||||||
|
bgp_mh_info->evi_per_es_frag);
|
||||||
|
|
||||||
if (bgp_mh_info->host_routes_use_l3nhg !=
|
if (bgp_mh_info->host_routes_use_l3nhg !=
|
||||||
BGP_EVPN_MH_USE_ES_L3NHG_DEF) {
|
BGP_EVPN_MH_USE_ES_L3NHG_DEF) {
|
||||||
if (bgp_mh_info->host_routes_use_l3nhg)
|
if (bgp_mh_info->host_routes_use_l3nhg)
|
||||||
@ -6593,6 +6610,7 @@ void bgp_ethernetvpn_init(void)
|
|||||||
install_element(BGP_EVPN_NODE, &no_bgp_evpn_vrf_rt_cmd);
|
install_element(BGP_EVPN_NODE, &no_bgp_evpn_vrf_rt_cmd);
|
||||||
install_element(BGP_EVPN_NODE, &bgp_evpn_ead_es_rt_cmd);
|
install_element(BGP_EVPN_NODE, &bgp_evpn_ead_es_rt_cmd);
|
||||||
install_element(BGP_EVPN_NODE, &no_bgp_evpn_ead_es_rt_cmd);
|
install_element(BGP_EVPN_NODE, &no_bgp_evpn_ead_es_rt_cmd);
|
||||||
|
install_element(BGP_EVPN_NODE, &bgp_evpn_ead_es_frag_evi_limit_cmd);
|
||||||
install_element(BGP_EVPN_VNI_NODE, &bgp_evpn_advertise_svi_ip_vni_cmd);
|
install_element(BGP_EVPN_VNI_NODE, &bgp_evpn_advertise_svi_ip_vni_cmd);
|
||||||
install_element(BGP_EVPN_VNI_NODE,
|
install_element(BGP_EVPN_VNI_NODE,
|
||||||
&bgp_evpn_advertise_default_gw_vni_cmd);
|
&bgp_evpn_advertise_default_gw_vni_cmd);
|
||||||
|
Loading…
Reference in New Issue
Block a user