mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-10 10:29:07 +00:00
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>
This commit is contained in:
parent
64643ba79a
commit
0dfc0dd974
@ -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 *old_es = zif->es_info.es;
|
||||||
struct zebra_evpn_es *es;
|
struct zebra_evpn_es *es;
|
||||||
|
|
||||||
memcpy(&zif->es_info.esi, esi, sizeof(*esi));
|
|
||||||
if (old_es && !memcmp(&old_es->esi, esi, sizeof(*esi)))
|
if (old_es && !memcmp(&old_es->esi, esi, sizeof(*esi)))
|
||||||
/* dup - nothing to be done */
|
/* dup - nothing to be done */
|
||||||
return 0;
|
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);
|
es = zebra_evpn_es_find(esi);
|
||||||
if (es) {
|
if (es) {
|
||||||
/* if it exists against another interface flag an error */
|
/* if it exists against another interface flag an error */
|
||||||
if (es->zif && es->zif != zif) {
|
if (es->zif && es->zif != zif)
|
||||||
memset(&zif->es_info.esi, 0, sizeof(*esi));
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
/* create new es */
|
/* create new es */
|
||||||
es = zebra_evpn_es_new(esi);
|
es = zebra_evpn_es_new(esi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memcpy(&zif->es_info.esi, esi, sizeof(*esi));
|
||||||
if (es)
|
if (es)
|
||||||
zebra_evpn_es_local_info_set(es, zif);
|
zebra_evpn_es_local_info_set(es, zif);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user