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>
struct zebra_evpn_es *old_es = zif->es_info.es;
struct zebra_evpn_es *es;
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;
if (old_es && !memcmp(&old_es->esi, esi, sizeof(*esi)))
/* dup - nothing to be done */
return 0;
es = zebra_evpn_es_find(esi);
if (es) {
/* if it exists against another interface flag an error */
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)
} else {
/* create new es */
es = zebra_evpn_es_new(esi);
}
} 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);
if (es)
zebra_evpn_es_local_info_set(es, zif);