summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--zebra/ChangeLog5
-rw-r--r--zebra/zebra_rib.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index d4c5678c..0b5cefec 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,8 @@
+2007-10-04 Denis Ovsienko
+
+ * zebra_rib.c: (rib_process) escape from the nexthop
+ iteration cycle earliest possible to save CPU time.
+
2007-10-03 Denis Ovsienko
* zebra_rib.c: (rib_process, rib_link, rib_addnode,
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index 67dc810a..37b84a66 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -1118,9 +1118,10 @@ rib_process (struct work_queue *wq, void *data)
*/
for (nexthop = select->nexthop; nexthop; nexthop = nexthop->next)
+ if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB))
{
- if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB))
- installed = 1;
+ installed = 1;
+ break;
}
if (! installed)
rib_install_kernel (rn, select);