]> git.puffer.fish Git - matthieu/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>
Mon, 2 Jan 2012 13:15:09 +0000 (17:15 +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 6f1b0b06ab1bf5e469fd21b2b2abd86eea25699f..9d2aedb206727d5781bb5fa9b6f515269c7fb5a6 100644 (file)
@@ -285,6 +285,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;
          }
 }