Commit 0521e4f6 authored by Martin Mareš's avatar Martin Mareš
Browse files

rt_prune: Don't kill routes from protocols in FS_FEEDING state. If debugging,

call fib_check() on the table's fib.
parent c09d1e8d
...@@ -538,6 +538,9 @@ rt_prune(rtable *tab) ...@@ -538,6 +538,9 @@ rt_prune(rtable *tab)
int rcnt = 0, rdel = 0, ncnt = 0, ndel = 0; int rcnt = 0, rdel = 0, ncnt = 0, ndel = 0;
DBG("Pruning route table %s\n", tab->name); DBG("Pruning route table %s\n", tab->name);
#ifdef DEBUGGING
fib_check(&tab->fib);
#endif
FIB_ITERATE_INIT(&fit, &tab->fib); FIB_ITERATE_INIT(&fit, &tab->fib);
again: again:
FIB_ITERATE_START(&tab->fib, &fit, f) FIB_ITERATE_START(&tab->fib, &fit, f)
...@@ -547,7 +550,8 @@ again: ...@@ -547,7 +550,8 @@ again:
ncnt++; ncnt++;
rescan: rescan:
for (e=n->routes; e; e=e->next, rcnt++) 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); rte_discard(tab, e);
rdel++; rdel++;
...@@ -563,6 +567,9 @@ again: ...@@ -563,6 +567,9 @@ again:
} }
FIB_ITERATE_END(f); FIB_ITERATE_END(f);
DBG("Pruned %d of %d routes and %d of %d networks\n", rcnt, rdel, ncnt, ndel); 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_counter = 0;
tab->gc_time = now; tab->gc_time = now;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment