From ac9dc669d80cbfeea3d0cdba5ec7354c804b1ae9 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Mon, 3 Nov 2014 20:35:25 +0100 Subject: [PATCH] Bugfix in latest OSPF changes. --- proto/ospf/iface.c | 6 ++++++ proto/ospf/topology.c | 4 +--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c index dfc892aa..656184c6 100644 --- a/proto/ospf/iface.c +++ b/proto/ospf/iface.c @@ -281,10 +281,16 @@ void ospf_iface_remove(struct ospf_iface *ifa) { struct ospf_proto *p = ifa->oa->po; + int i; if (ifa->type == OSPF_IT_VLINK) OSPF_TRACE(D_EVENTS, "Removing vlink to %R via area %R", ifa->vid, ifa->voa->areaid); + /* Release LSAs from flood queue */ + if (!ifa->stub) + for (i = 0; i < ifa->flood_queue_used; i++) + ifa->flood_queue[i]->ret_count--; + ospf_iface_sm(ifa, ISM_DOWN); rem_node(NODE ifa); rfree(ifa->pool); diff --git a/proto/ospf/topology.c b/proto/ospf/topology.c index c21c23d5..0613d34d 100644 --- a/proto/ospf/topology.c +++ b/proto/ospf/topology.c @@ -1177,9 +1177,7 @@ use_gw_for_fwaddr(struct ospf_proto *p, ip_addr gw, struct iface *iface) WALK_LIST(ifa, p->iface_list) if ((ifa->iface == iface) && - ((ifa->type == OSPF_IT_BCAST) || (ifa->type == OSPF_IT_NBMA)) && - (!ospf_is_v2(p) || ipa_in_net(gw, ifa->addr->prefix, ifa->addr->pxlen)) && - (!ifa->cf->stub)) + (!ospf_is_v2(p) || ipa_in_net(gw, ifa->addr->prefix, ifa->addr->pxlen))) return 1; return 0;