From: Ondrej Zajicek Date: Mon, 3 Nov 2014 19:35:25 +0000 (+0100) Subject: Bugfix in latest OSPF changes. X-Git-Tag: v1.5.0~30^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac9dc669d80cbfeea3d0cdba5ec7354c804b1ae9;p=thirdparty%2Fbird.git Bugfix in latest OSPF changes. --- diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c index dfc892aae..656184c69 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 c21c23d52..0613d34d1 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;