diff options
| author | anlan_cs <vic.lan@pica8.com> | 2022-02-22 23:10:42 -0500 | 
|---|---|---|
| committer | anlan_cs <vic.lan@pica8.com> | 2022-05-16 09:40:49 -0400 | 
| commit | 0dfc0dd9748f4a45789210ea73cb561927dd5730 (patch) | |
| tree | 7dd0bc22bd2b9ef6951c34612d488448782be2fb /zebra/zebra_evpn_mh.c | |
| parent | 64643ba79ae2e4d853b3c2c6a74916a560c53538 (diff) | |
zebra: delay setting esi in zebra_evpn_local_es_update()
Currently, `zif->es_info.esi` is always set even for a few unnecessary
cases in `zebra_evpn_local_es_update()`.
Delay setting `zif->es_info.esi` and remove the annoying rollback
(i.e. unset `zif->es_info.esi`) operation on failure case.
Signed-off-by: anlan_cs <vic.lan@pica8.com>
Diffstat (limited to 'zebra/zebra_evpn_mh.c')
| -rw-r--r-- | zebra/zebra_evpn_mh.c | 6 | 
1 files changed, 2 insertions, 4 deletions
diff --git a/zebra/zebra_evpn_mh.c b/zebra/zebra_evpn_mh.c index a649dd981a..043ea0f248 100644 --- a/zebra/zebra_evpn_mh.c +++ b/zebra/zebra_evpn_mh.c @@ -2312,7 +2312,6 @@ static int zebra_evpn_local_es_update(struct zebra_if *zif, esi_t *esi)  	struct zebra_evpn_es *old_es = zif->es_info.es;  	struct zebra_evpn_es *es; -	memcpy(&zif->es_info.esi, esi, sizeof(*esi));  	if (old_es && !memcmp(&old_es->esi, esi, sizeof(*esi)))  		/* dup - nothing to be done */  		return 0; @@ -2324,15 +2323,14 @@ static int zebra_evpn_local_es_update(struct zebra_if *zif, esi_t *esi)  	es = zebra_evpn_es_find(esi);  	if (es) {  		/* if it exists against another interface flag an error */ -		if (es->zif && es->zif != zif) { -			memset(&zif->es_info.esi, 0, sizeof(*esi)); +		if (es->zif && es->zif != zif)  			return -1; -		}  	} else {  		/* create new es */  		es = zebra_evpn_es_new(esi);  	} +	memcpy(&zif->es_info.esi, esi, sizeof(*esi));  	if (es)  		zebra_evpn_es_local_info_set(es, zif);  | 
