]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
rt_prune: Don't kill routes from protocols in FS_FEEDING state. If debugging,
authorMartin Mares <mj@ucw.cz>
Mon, 8 May 2000 22:33:02 +0000 (22:33 +0000)
committerMartin Mares <mj@ucw.cz>
Mon, 8 May 2000 22:33:02 +0000 (22:33 +0000)
call fib_check() on the table's fib.

nest/rt-table.c

index cf87a707281dce387dac6c7e33d28e01a6266cb4..d1594b32e067bc6aef1b483441a6d2aaa04f6a5a 100644 (file)
@@ -538,6 +538,9 @@ rt_prune(rtable *tab)
   int rcnt = 0, rdel = 0, ncnt = 0, ndel = 0;
 
   DBG("Pruning route table %s\n", tab->name);
+#ifdef DEBUGGING
+  fib_check(&tab->fib);
+#endif
   FIB_ITERATE_INIT(&fit, &tab->fib);
 again:
   FIB_ITERATE_START(&tab->fib, &fit, f)
@@ -547,7 +550,8 @@ again:
       ncnt++;
     rescan:
       for (e=n->routes; e; e=e->next, rcnt++)
-       if (e->attrs->proto->core_state != FS_HAPPY)
+       if (e->attrs->proto->core_state != FS_HAPPY &&
+           e->attrs->proto->core_state != FS_FEEDING)
          {
            rte_discard(tab, e);
            rdel++;
@@ -563,6 +567,9 @@ again:
     }
   FIB_ITERATE_END(f);
   DBG("Pruned %d of %d routes and %d of %d networks\n", rcnt, rdel, ncnt, ndel);
+#ifdef DEBUGGING
+  fib_check(&tab->fib);
+#endif
   tab->gc_counter = 0;
   tab->gc_time = now;
 }