summaryrefslogtreecommitdiff
path: root/nest/rt-table.c
diff options
context:
space:
mode:
Diffstat (limited to 'nest/rt-table.c')
-rw-r--r--nest/rt-table.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/nest/rt-table.c b/nest/rt-table.c
index 6a28fd43..6d82e1d3 100644
--- a/nest/rt-table.c
+++ b/nest/rt-table.c
@@ -485,12 +485,18 @@ rte_recalculate(struct announce_hook *ah, net *net, rte *new, ea_list *tmpa, str
}
struct proto_limit *l = ah->in_limit;
- if (l && !old && new && (stats->imp_routes >= l->limit) && proto_notify_limit(ah, l))
+ if (l && !old && new)
{
- stats->imp_updates_ignored++;
- rte_trace_in(D_FILTERS, p, new, "ignored [limit]");
- rte_free_quick(new);
- return;
+ if (stats->imp_routes >= l->limit)
+ proto_notify_limit(ah, l, stats->imp_routes);
+
+ if (l->state == PLS_BLOCKED)
+ {
+ stats->imp_updates_ignored++;
+ rte_trace_in(D_FILTERS, p, new, "ignored [limit]");
+ rte_free_quick(new);
+ return;
+ }
}
if (new)