summaryrefslogtreecommitdiff
path: root/proto/bgp
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2012-04-24 23:39:57 +0200
committerOndrej Zajicek <santiago@crfreenet.org>2012-04-24 23:39:57 +0200
commitd9b77cc28115e5c1ef64c69722c9d1fd1392dcd1 (patch)
tree5dae59203a8455874fdcdabc0b74ff69d9e67f6e /proto/bgp
parent3589546af4baa4d349409a318f8c9658dd11b3cc (diff)
Implements generalized export limits.
And also fixes some minor bugs in limits.
Diffstat (limited to 'proto/bgp')
-rw-r--r--proto/bgp/bgp.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/proto/bgp/bgp.c b/proto/bgp/bgp.c
index 95dbe477..3b9f7cc5 100644
--- a/proto/bgp/bgp.c
+++ b/proto/bgp/bgp.c
@@ -848,6 +848,8 @@ bgp_start(struct proto *P)
return PS_START;
}
+extern int proto_restart;
+
static int
bgp_shutdown(struct proto *P)
{
@@ -877,10 +879,16 @@ bgp_shutdown(struct proto *P)
case PDC_IN_LIMIT_HIT:
subcode = 1; // Errcode 6, 1 - max number of prefixes reached
+ /* log message for compatibility */
log(L_WARN "%s: Route limit exceeded, shutting down", p->p.name);
+ goto limit;
+
+ case PDC_OUT_LIMIT_HIT:
+ subcode = proto_restart ? 4 : 2; // Administrative reset or shutdown
+ limit:
bgp_store_error(p, NULL, BE_AUTO_DOWN, BEA_ROUTE_LIMIT_EXCEEDED);
- if (P->cf->in_limit->action == PLA_RESTART)
+ if (proto_restart)
bgp_update_startup_delay(p);
else
p->startup_delay = 0;