]> git.puffer.fish Git - mirror/frr.git/commitdiff
ospfd: avoid redundant lookup in ospf_redistribute_withdraw
authorStephen Hemminger <shemminger@vyatta.com>
Tue, 6 Dec 2011 10:46:42 +0000 (14:46 +0400)
committerDenis Ovsienko <infrastation@yandex.ru>
Tue, 6 Dec 2011 11:02:52 +0000 (15:02 +0400)
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

ospfd/ospf_asbr.c

index c39efee12b1a9788473f8f01d40e0a767b1a962d..a23b4f2be1d4455705080670dbd9ff76a14f742f 100644 (file)
@@ -284,6 +284,9 @@ ospf_redistribute_withdraw (struct ospf *ospf, u_char type)
              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;
          }
 }