ospfd: fix summary-address deletion

When the summary-address is deleted, `ospf_aggr_handle_external_info` is
called for each aggregated route for the cleanup. It needs to find the
corresponding OSPF instance and it does it using the `ei->instance`
which is totally wrong, because it's the instance from which the route
is redistributed, not the local OSPF instance. A pointer to the correct
OSPF instance is already stored in the external_info structure.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
This commit is contained in:
Igor Ryzhov 2021-11-25 21:17:58 +03:00
parent 6e5532187f
commit fa42b7d80f

View File

@ -420,7 +420,7 @@ static void ospf_aggr_handle_external_info(void *data)
{
struct external_info *ei = (struct external_info *)data;
struct ospf_external_aggr_rt *aggr = NULL;
struct ospf *ospf = NULL;
struct ospf *ospf = ei->ospf;
struct ospf_lsa *lsa = NULL;
ei->aggr_route = NULL;
@ -431,8 +431,6 @@ static void ospf_aggr_handle_external_info(void *data)
zlog_debug("%s: Handle extrenal route(%pI4/%d)", __func__,
&ei->p.prefix, ei->p.prefixlen);
ospf = ospf_lookup_instance(ei->instance);
assert(ospf);
if (!ospf_redistribute_check(ospf, ei, NULL))