ospfd: avoid redundant lookup in ospf_redistribute_withdraw
The old algorithim looked up every node twice as it withdrew
the entry. It looks up entry once in redistribute_withdraw, then
looks it up again info_delete. Use result of first lookup
to do the free directly.
This may explain the slow performance observed in
https://bugzilla.vyatta.com/show_bug.cgi?id=4421
diff --git a/ospfd/ospf_asbr.c b/ospfd/ospf_asbr.c
index c39efee..a23b4f2 100644
--- a/ospfd/ospf_asbr.c
+++ b/ospfd/ospf_asbr.c
@@ -284,6 +284,9 @@
continue;
ospf_external_lsa_flush (ospf, type, &ei->p,
ei->ifindex /*, ei->nexthop */);
- ospf_external_info_delete (type, ei->p);
+
+ ospf_external_info_free (ei);
+ route_unlock_node (rn);
+ rn->info = NULL;
}
}