diff options
| author | Sri Mohana Singamsetty <srimohans@gmail.com> | 2019-09-05 21:58:36 -0700 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-09-05 21:58:36 -0700 | 
| commit | eef47e1ed188972d40356a4414a3e03718eb84f2 (patch) | |
| tree | 4baa0318e96587320b3322c232cb8eb7669ce382 | |
| parent | 6c11fdb3c46ce27ac0e2440e941add5a43efaf2c (diff) | |
| parent | df070e6f5e1bc3c1856921c35c9e7094e263a152 (diff) | |
Merge pull request #4863 from chiragshah6/evpn_dev1frr-7.3-dev
bgpd: evpn convey svi_ip knob to zebra post vni add
| -rw-r--r-- | bgpd/bgp_evpn.c | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c index 4d02e39ae2..6c77f18f33 100644 --- a/bgpd/bgp_evpn.c +++ b/bgpd/bgp_evpn.c @@ -505,7 +505,9 @@ static void unmap_vni_from_rt(struct bgp *bgp, struct bgpevpn *vpn,  static void form_auto_rt(struct bgp *bgp, vni_t vni, struct list *rtl)  {  	struct ecommunity_val eval; -	struct ecommunity *ecomadd; +	struct ecommunity *ecomadd, *ecom; +	bool ecom_found = false; +	struct listnode *node;  	if (bgp->advertise_autort_rfc8365)  		vni |= EVPN_AUTORT_VXLAN; @@ -513,7 +515,12 @@ static void form_auto_rt(struct bgp *bgp, vni_t vni, struct list *rtl)  	ecomadd = ecommunity_new();  	ecommunity_add_val(ecomadd, &eval); -	listnode_add_sort(rtl, ecomadd); +	for (ALL_LIST_ELEMENTS_RO(rtl, node, ecom)) +		if (ecommunity_cmp(ecomadd, ecom)) +			ecom_found = true; + +	if (!ecom_found) +		listnode_add_sort(rtl, ecomadd);  }  /* @@ -5803,6 +5810,9 @@ int bgp_evpn_local_vni_add(struct bgp *bgp, vni_t vni,  	   It needs to be conveyed again to zebra */  	bgp_zebra_advertise_gw_macip(bgp, vpn->advertise_gw_macip, vpn->vni); +	/* advertise svi mac-ip knob to zebra */ +	bgp_zebra_advertise_svi_macip(bgp, vpn->advertise_svi_macip, vpn->vni); +  	return 0;  }  | 
