summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2018-07-19 20:48:13 +0200
committerOndrej Zajicek (work) <santiago@crfreenet.org>2018-07-19 20:48:13 +0200
commit8bd718b3ba34cee95a5443f3d20d6f16c2d4c946 (patch)
tree3aaed0e695337abdce30e3904f8e02cb82932e29
parent092c4930277c0f0f0dcb0c4013ff642314f90842 (diff)
OSPF: Fix crash during route removal
The bug was introduced by an earler patch which removed additional eattr argument to rt_notify hook.
-rw-r--r--proto/ospf/topology.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/proto/ospf/topology.c b/proto/ospf/topology.c
index 54b255c9..03b77349 100644
--- a/proto/ospf/topology.c
+++ b/proto/ospf/topology.c
@@ -1248,7 +1248,6 @@ ospf_rt_notify(struct proto *P, struct channel *ch UNUSED, net *n, rte *new, rte
struct ospf_proto *p = (struct ospf_proto *) P;
struct ospf_area *oa = NULL; /* non-NULL for NSSA-LSA */
ort *nf;
- struct ea_list *ea = new->attrs->eattrs;
/*
* There are several posibilities:
@@ -1282,8 +1281,8 @@ ospf_rt_notify(struct proto *P, struct channel *ch UNUSED, net *n, rte *new, rte
/* Get route attributes */
rta *a = new->attrs;
- eattr *m1a = ea_find(ea, EA_OSPF_METRIC1);
- eattr *m2a = ea_find(ea, EA_OSPF_METRIC2);
+ eattr *m1a = ea_find(a->eattrs, EA_OSPF_METRIC1);
+ eattr *m2a = ea_find(a->eattrs, EA_OSPF_METRIC2);
uint m1 = m1a ? m1a->u.data : 0;
uint m2 = m2a ? m2a->u.data : 10000;
@@ -1307,7 +1306,7 @@ ospf_rt_notify(struct proto *P, struct channel *ch UNUSED, net *n, rte *new, rte
uint ebit = m2a || !m1a;
uint metric = ebit ? m2 : m1;
- uint tag = ea_get_int(ea, EA_OSPF_TAG, 0);
+ uint tag = ea_get_int(a->eattrs, EA_OSPF_TAG, 0);
ip_addr fwd = IPA_NONE;
if ((a->dest == RTD_UNICAST) && use_gw_for_fwaddr(p, a->nh.gw, a->nh.iface))