]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Bugfix in latest OSPF changes.
authorOndrej Zajicek <santiago@crfreenet.org>
Mon, 3 Nov 2014 19:35:25 +0000 (20:35 +0100)
committerOndrej Zajicek <santiago@crfreenet.org>
Mon, 3 Nov 2014 19:35:25 +0000 (20:35 +0100)
proto/ospf/iface.c
proto/ospf/topology.c

index dfc892aae1f9f7202cd24525f869c5eb289e4c40..656184c699eb076449b81e0bcc800aa65a6dd99d 100644 (file)
@@ -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);
index c21c23d52be6b2cd80985f85d2db490886e28e54..0613d34d13db70c344f278b6a34c4205b9122961 100644 (file)
@@ -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;