From: Igor Ryzhov Date: Thu, 8 Oct 2020 17:05:08 +0000 (+0300) Subject: isisd: check for circuit existence on interface addr change X-Git-Tag: base_7.6~441^2~1 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=115f8f56927d3adce70d6e53ff314521d7e0dfff;p=matthieu%2Ffrr.git isisd: check for circuit existence on interface addr change Signed-off-by: Igor Ryzhov --- diff --git a/isisd/isis_zebra.c b/isisd/isis_zebra.c index 15b51589ae..57cdfb1cdf 100644 --- a/isisd/isis_zebra.c +++ b/isisd/isis_zebra.c @@ -85,6 +85,7 @@ static int isis_router_id_update_zebra(ZAPI_CALLBACK_ARGS) static int isis_zebra_if_address_add(ZAPI_CALLBACK_ARGS) { + struct isis_circuit *circuit; struct connected *c; struct prefix *p; char buf[PREFIX2STR_BUFFER]; @@ -104,16 +105,20 @@ static int isis_zebra_if_address_add(ZAPI_CALLBACK_ARGS) if (p->family == AF_INET6) zlog_debug("connected IPv6 address %s", buf); #endif /* EXTREME_DEBUG */ - if (if_is_operative(c->ifp)) - isis_circuit_add_addr(circuit_scan_by_ifp(c->ifp), c); + + if (if_is_operative(c->ifp)) { + circuit = circuit_scan_by_ifp(c->ifp); + if (circuit) + isis_circuit_add_addr(circuit, c); + } return 0; } static int isis_zebra_if_address_del(ZAPI_CALLBACK_ARGS) { + struct isis_circuit *circuit; struct connected *c; - struct interface *ifp; #ifdef EXTREME_DEBUG struct prefix *p; char buf[PREFIX2STR_BUFFER]; @@ -125,8 +130,6 @@ static int isis_zebra_if_address_del(ZAPI_CALLBACK_ARGS) if (c == NULL) return 0; - ifp = c->ifp; - #ifdef EXTREME_DEBUG p = c->address; prefix2str(p, buf, sizeof(buf)); @@ -137,8 +140,12 @@ static int isis_zebra_if_address_del(ZAPI_CALLBACK_ARGS) zlog_debug("disconnected IPv6 address %s", buf); #endif /* EXTREME_DEBUG */ - if (if_is_operative(ifp)) - isis_circuit_del_addr(circuit_scan_by_ifp(ifp), c); + if (if_is_operative(c->ifp)) { + circuit = circuit_scan_by_ifp(c->ifp); + if (circuit) + isis_circuit_del_addr(circuit, c); + } + connected_free(&c); return 0;