*/
static struct vrf_irt_node *vrf_import_rt_new(struct ecommunity_val *rt)
{
- struct bgp *bgp_def = NULL;
+ struct bgp *bgp_evpn = NULL;
struct vrf_irt_node *irt;
- bgp_def = bgp_get_evpn();
- if (!bgp_def) {
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn) {
flog_err(EC_BGP_NO_DFLT,
"vrf import rt new - evpn instance not created yet");
return NULL;
irt->vrfs = list_new();
/* Add to hash */
- if (!hash_get(bgp_def->vrf_import_rt_hash, irt, hash_alloc_intern)) {
+ if (!hash_get(bgp_evpn->vrf_import_rt_hash, irt, hash_alloc_intern)) {
XFREE(MTYPE_BGP_EVPN_VRF_IMPORT_RT, irt);
return NULL;
}
*/
static void vrf_import_rt_free(struct vrf_irt_node *irt)
{
- struct bgp *bgp_def = NULL;
+ struct bgp *bgp_evpn = NULL;
- bgp_def = bgp_get_evpn();
- if (!bgp_def) {
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn) {
flog_err(EC_BGP_NO_DFLT,
"vrf import rt free - evpn instance not created yet");
return;
}
- hash_release(bgp_def->vrf_import_rt_hash, irt);
+ hash_release(bgp_evpn->vrf_import_rt_hash, irt);
list_delete(&irt->vrfs);
XFREE(MTYPE_BGP_EVPN_VRF_IMPORT_RT, irt);
}
*/
static struct vrf_irt_node *lookup_vrf_import_rt(struct ecommunity_val *rt)
{
- struct bgp *bgp_def = NULL;
+ struct bgp *bgp_evpn = NULL;
struct vrf_irt_node *irt;
struct vrf_irt_node tmp;
- bgp_def = bgp_get_evpn();
- if (!bgp_def) {
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn) {
flog_err(
EC_BGP_NO_DFLT,
"vrf import rt lookup - evpn instance not created yet");
memset(&tmp, 0, sizeof(struct vrf_irt_node));
memcpy(&tmp.rt, rt, ECOMMUNITY_SIZE);
- irt = hash_lookup(bgp_def->vrf_import_rt_hash, &tmp);
+ irt = hash_lookup(bgp_evpn->vrf_import_rt_hash, &tmp);
return irt;
}
return 0;
}
-static int update_evpn_type5_route_entry(struct bgp *bgp_def,
+static int update_evpn_type5_route_entry(struct bgp *bgp_evpn,
struct bgp *bgp_vrf, afi_t afi,
safi_t safi, struct bgp_node *rn,
struct attr *attr, int *route_changed)
/* locate the local route entry if any */
for (tmp_pi = bgp_node_get_bgp_path_info(rn); tmp_pi;
tmp_pi = tmp_pi->next) {
- if (tmp_pi->peer == bgp_def->peer_self
+ if (tmp_pi->peer == bgp_evpn->peer_self
&& tmp_pi->type == ZEBRA_ROUTE_BGP
&& tmp_pi->sub_type == BGP_ROUTE_STATIC)
local_pi = tmp_pi;
/* create the route info from attribute */
pi = info_make(ZEBRA_ROUTE_BGP, BGP_ROUTE_STATIC, 0,
- bgp_def->peer_self, attr_new, rn);
+ bgp_evpn->peer_self, attr_new, rn);
SET_FLAG(pi->flags, BGP_PATH_VALID);
/* Type-5 routes advertise the L3-VNI */
safi_t safi = SAFI_EVPN;
struct attr attr;
struct bgp_node *rn = NULL;
- struct bgp *bgp_def = NULL;
+ struct bgp *bgp_evpn = NULL;
int route_changed = 0;
- bgp_def = bgp_get_evpn();
- if (!bgp_def)
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn)
return 0;
/* Build path attribute for this route - use the source attr, if
build_evpn_type5_route_extcomm(bgp_vrf, &attr);
/* get the route node in global table */
- rn = bgp_afi_node_get(bgp_def->rib[afi][safi], afi, safi,
+ rn = bgp_afi_node_get(bgp_evpn->rib[afi][safi], afi, safi,
(struct prefix *)evp, &bgp_vrf->vrf_prd);
assert(rn);
/* create or update the route entry within the route node */
- update_evpn_type5_route_entry(bgp_def, bgp_vrf, afi, safi, rn, &attr,
+ update_evpn_type5_route_entry(bgp_evpn, bgp_vrf, afi, safi, rn, &attr,
&route_changed);
/* schedule for processing and unlock node */
if (route_changed) {
- bgp_process(bgp_def, rn, afi, safi);
+ bgp_process(bgp_evpn, rn, afi, safi);
bgp_unlock_node(rn);
}
safi_t safi = SAFI_EVPN;
struct bgp_node *rn = NULL;
struct bgp_path_info *pi = NULL;
- struct bgp *bgp_def = NULL; /* default bgp instance */
+ struct bgp *bgp_evpn = NULL; /* evpn bgp instance */
- bgp_def = bgp_get_evpn();
- if (!bgp_def)
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn)
return 0;
/* locate the global route entry for this type-5 prefix */
- rn = bgp_afi_node_lookup(bgp_def->rib[afi][safi], afi, safi,
+ rn = bgp_afi_node_lookup(bgp_evpn->rib[afi][safi], afi, safi,
(struct prefix *)evp, &bgp_vrf->vrf_prd);
if (!rn)
return 0;
- delete_evpn_route_entry(bgp_def, afi, safi, rn, &pi);
+ delete_evpn_route_entry(bgp_evpn, afi, safi, rn, &pi);
if (pi)
- bgp_process(bgp_def, rn, afi, safi);
+ bgp_process(bgp_evpn, rn, afi, safi);
bgp_unlock_node(rn);
return 0;
}
struct bgp_path_info *pi;
int ret;
char buf[PREFIX_STRLEN];
- struct bgp *bgp_def = NULL;
+ struct bgp *bgp_evpn = NULL;
afi = AFI_L2VPN;
safi = SAFI_EVPN;
- bgp_def = bgp_get_evpn();
- if (!bgp_def)
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn)
return -1;
/* Walk entire global routing table and evaluate routes which could be
* imported into this VRF. Note that we need to loop through all global
* routes to determine which route matches the import rt on vrf
*/
- for (rd_rn = bgp_table_top(bgp_def->rib[afi][safi]); rd_rn;
+ for (rd_rn = bgp_table_top(bgp_evpn->rib[afi][safi]); rd_rn;
rd_rn = bgp_route_next(rd_rn)) {
table = bgp_node_get_bgp_table_info(rd_rn);
if (!table)
*/
static void evpn_auto_rt_import_add_for_vrf(struct bgp *bgp_vrf)
{
- struct bgp *bgp_def = NULL;
+ struct bgp *bgp_evpn = NULL;
form_auto_rt(bgp_vrf, bgp_vrf->l3vni, bgp_vrf->vrf_import_rtl);
UNSET_FLAG(bgp_vrf->vrf_flags, BGP_VRF_IMPORT_RT_CFGD);
/* Map RT to VRF */
- bgp_def = bgp_get_evpn();
- if (!bgp_def)
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn)
return;
bgp_evpn_map_vrf_to_its_rts(bgp_vrf);
}
static void bgp_evpn_handle_export_rt_change_for_vrf(struct bgp *bgp_vrf)
{
- struct bgp *bgp_def = NULL;
+ struct bgp *bgp_evpn = NULL;
struct listnode *node = NULL;
struct bgpevpn *vpn = NULL;
- bgp_def = bgp_get_evpn();
- if (!bgp_def)
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn)
return;
/* update all type-5 routes */
/* update all type-2 routes */
for (ALL_LIST_ELEMENTS_RO(bgp_vrf->l2vnis, node, vpn))
- update_routes_for_vni(bgp_def, vpn);
+ update_routes_for_vni(bgp_evpn, vpn);
}
/*
struct bgp *bgp_vrf)
{
struct bgpevpn *vpn = (struct bgpevpn *)bucket->data;
- struct bgp *bgp_def = NULL;
+ struct bgp *bgp_evpn = NULL;
- bgp_def = bgp_get_evpn();
- assert(bgp_def);
+ bgp_evpn = bgp_get_evpn();
+ assert(bgp_evpn);
if (vpn->tenant_vrf_id == bgp_vrf->vrf_id)
bgpevpn_link_to_l3vni(vpn);
ifindex_t svi_ifindex)
{
struct bgp *bgp_vrf = NULL; /* bgp VRF instance */
- struct bgp *bgp_def = NULL; /* default bgp instance */
+ struct bgp *bgp_evpn = NULL; /* EVPN bgp instance */
struct listnode *node = NULL;
struct bgpevpn *vpn = NULL;
as_t as = 0;
/* get the EVPN instance - required to get the AS number for VRF
* auto-creatio
*/
- bgp_def = bgp_get_evpn();
- if (!bgp_def) {
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn) {
flog_err(
EC_BGP_NO_DFLT,
"Cannot process L3VNI %u ADD - EVPN BGP instance not yet created",
l3vni);
return -1;
}
- as = bgp_def->as;
+ as = bgp_evpn->as;
/* if the BGP vrf instance doesn't exist - create one */
bgp_vrf = bgp_lookup_by_vrf_id(vrf_id);
bgp_evpn_derive_auto_rd_for_vrf(bgp_vrf);
/* link all corresponding l2vnis */
- hash_iterate(bgp_def->vnihash,
+ hash_iterate(bgp_evpn->vnihash,
(void (*)(struct hash_bucket *,
void *))link_l2vni_hash_to_l3vni,
bgp_vrf);
*/
if (!filter)
for (ALL_LIST_ELEMENTS_RO(bgp_vrf->l2vnis, node, vpn))
- update_routes_for_vni(bgp_def, vpn);
+ update_routes_for_vni(bgp_evpn, vpn);
/* advertise type-5 routes if needed */
update_advertise_vrf_routes(bgp_vrf);
int bgp_evpn_local_l3vni_del(vni_t l3vni, vrf_id_t vrf_id)
{
struct bgp *bgp_vrf = NULL; /* bgp vrf instance */
- struct bgp *bgp_def = NULL; /* default bgp instance */
+ struct bgp *bgp_evpn = NULL; /* EVPN bgp instance */
struct listnode *node = NULL;
struct listnode *next = NULL;
struct bgpevpn *vpn = NULL;
return -1;
}
- bgp_def = bgp_get_evpn();
- if (!bgp_def) {
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn) {
flog_err(
EC_BGP_NO_DFLT,
"Cannot process L3VNI %u Del - Could not find EVPN BGP instance",
if (!CHECK_FLAG(bgp_vrf->vrf_flags, BGP_VRF_L3VNI_PREFIX_ROUTES_ONLY)) {
for (ALL_LIST_ELEMENTS_RO(bgp_vrf->l2vnis, node, vpn)) {
UNSET_FLAG(vpn->flags, VNI_FLAG_USE_TWO_LABELS);
- update_routes_for_vni(bgp_def, vpn);
+ update_routes_for_vni(bgp_evpn, vpn);
}
}
/*
* Display import RT mapping to VRFs (vty handler)
- * bgp_def: default bgp instance
+ * bgp_evpn: evpn bgp instance
*/
-static void evpn_show_vrf_import_rts(struct vty *vty, struct bgp *bgp_def,
+static void evpn_show_vrf_import_rts(struct vty *vty, struct bgp *bgp_evpn,
json_object *json)
{
void *args[2];
args[0] = vty;
args[1] = json;
- hash_iterate(bgp_def->vrf_import_rt_hash,
+ hash_iterate(bgp_evpn->vrf_import_rt_hash,
(void (*)(struct hash_bucket *,
void *))show_vrf_import_rt_entry,
args);
"VNI number\n"
JSON_STR)
{
- struct bgp *bgp_def;
+ struct bgp *bgp_evpn;
vni_t vni;
int idx = 0;
bool uj = false;
uj = use_json(argc, argv);
- bgp_def = bgp_get_evpn();
- if (!bgp_def)
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn)
return CMD_WARNING;
if (!argv_find(argv, argc, "evpn", &idx))
if ((uj && argc == ((idx + 1) + 2)) || (!uj && argc == (idx + 1) + 1)) {
- num_l2vnis = hashcount(bgp_def->vnihash);
+ num_l2vnis = hashcount(bgp_evpn->vnihash);
for (ALL_LIST_ELEMENTS_RO(bm->bgp, node, bgp_temp)) {
if (bgp_temp->l3vni)
num_vnis = num_l2vnis + num_l3vnis;
if (uj) {
json_object_string_add(json, "advertiseGatewayMacip",
- bgp_def->advertise_gw_macip
+ bgp_evpn->advertise_gw_macip
? "Enabled"
: "Disabled");
json_object_string_add(json, "advertiseAllVnis",
: "Disabled");
json_object_string_add(
json, "flooding",
- bgp_def->vxlan_flood_ctrl
+ bgp_evpn->vxlan_flood_ctrl
== VXLAN_FLOOD_HEAD_END_REPL
? "Head-end replication"
: "Disabled");
json_object_int_add(json, "numL3Vnis", num_l3vnis);
} else {
vty_out(vty, "Advertise Gateway Macip: %s\n",
- bgp_def->advertise_gw_macip ? "Enabled"
+ bgp_evpn->advertise_gw_macip ? "Enabled"
: "Disabled");
vty_out(vty, "Advertise SVI Macip: %s\n",
- bgp_def->evpn_info->advertise_svi_macip ? "Enabled"
+ bgp_evpn->evpn_info->advertise_svi_macip ? "Enabled"
: "Disabled");
vty_out(vty, "Advertise All VNI flag: %s\n",
is_evpn_enabled() ? "Enabled" : "Disabled");
vty_out(vty, "BUM flooding: %s\n",
- bgp_def->vxlan_flood_ctrl
+ bgp_evpn->vxlan_flood_ctrl
== VXLAN_FLOOD_HEAD_END_REPL
? "Head-end replication"
: "Disabled");
vty_out(vty, "Number of L2 VNIs: %u\n", num_l2vnis);
vty_out(vty, "Number of L3 VNIs: %u\n", num_l3vnis);
}
- evpn_show_all_vnis(vty, bgp_def, json);
+ evpn_show_all_vnis(vty, bgp_evpn, json);
} else {
int vni_idx = 0;
/* Display specific VNI */
vni = strtoul(argv[vni_idx + 1]->arg, NULL, 10);
- evpn_show_vni(vty, bgp_def, vni, json);
+ evpn_show_vni(vty, bgp_evpn, vni, json);
}
if (uj) {
JSON_STR)
{
bool uj = false;
- struct bgp *bgp_def = NULL;
+ struct bgp *bgp_evpn = NULL;
json_object *json = NULL;
- bgp_def = bgp_get_evpn();
- if (!bgp_def)
+ bgp_evpn = bgp_get_evpn();
+ if (!bgp_evpn)
return CMD_WARNING;
uj = use_json(argc, argv);
if (uj)
json = json_object_new_object();
- evpn_show_vrf_import_rts(vty, bgp_def, json);
+ evpn_show_vrf_import_rts(vty, bgp_evpn, json);
if (uj) {
vty_out(vty, "%s\n", json_object_to_json_string_ext(