Fixes BGP subcode during global shutdown.
This commit is contained in:
parent
bbcfd5a048
commit
5400c0e7f9
4 changed files with 12 additions and 8 deletions
|
@ -477,7 +477,7 @@ to zero to disable it. An empty <cf><m/switch/</cf> is equivalent to <cf/on/
|
||||||
problems in details of its behavior -- the number of exported
|
problems in details of its behavior -- the number of exported
|
||||||
routes can temporarily exceed the limit without triggering it
|
routes can temporarily exceed the limit without triggering it
|
||||||
during protocol reload, exported routes counter ignores route
|
during protocol reload, exported routes counter ignores route
|
||||||
blocking and block action also blocks route updates of alread
|
blocking and block action also blocks route updates of already
|
||||||
accepted routes -- and these details will probably change in
|
accepted routes -- and these details will probably change in
|
||||||
the future. Default: <cf/none/.
|
the future. Default: <cf/none/.
|
||||||
|
|
||||||
|
|
12
nest/proto.c
12
nest/proto.c
|
@ -512,20 +512,22 @@ protos_commit(struct config *new, struct config *old, int force_reconfig, int ty
|
||||||
else if (!p->disabled && nc->disabled)
|
else if (!p->disabled && nc->disabled)
|
||||||
log(L_INFO "Disabling protocol %s", p->name);
|
log(L_INFO "Disabling protocol %s", p->name);
|
||||||
|
|
||||||
PD(p, "Restarting");
|
|
||||||
p->down_code = nc->disabled ? PDC_CF_DISABLE : PDC_CF_RESTART;
|
p->down_code = nc->disabled ? PDC_CF_DISABLE : PDC_CF_RESTART;
|
||||||
p->cf_new = nc;
|
p->cf_new = nc;
|
||||||
}
|
}
|
||||||
else
|
else if (!shutting_down)
|
||||||
{
|
{
|
||||||
if (!shutting_down)
|
|
||||||
log(L_INFO "Removing protocol %s", p->name);
|
log(L_INFO "Removing protocol %s", p->name);
|
||||||
PD(p, "Unconfigured");
|
|
||||||
p->down_code = PDC_CF_REMOVE;
|
p->down_code = PDC_CF_REMOVE;
|
||||||
p->cf_new = NULL;
|
p->cf_new = NULL;
|
||||||
}
|
}
|
||||||
p->reconfiguring = 1;
|
else /* global shutdown */
|
||||||
|
{
|
||||||
|
p->down_code = PDC_CMD_SHUTDOWN;
|
||||||
|
p->cf_new = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
p->reconfiguring = 1;
|
||||||
config_add_obstacle(old);
|
config_add_obstacle(old);
|
||||||
proto_rethink_goal(p);
|
proto_rethink_goal(p);
|
||||||
}
|
}
|
||||||
|
|
|
@ -222,8 +222,9 @@ struct proto_spec {
|
||||||
#define PDC_CF_RESTART 0x03 /* Restart due to reconfiguration */
|
#define PDC_CF_RESTART 0x03 /* Restart due to reconfiguration */
|
||||||
#define PDC_CMD_DISABLE 0x11 /* Result of disable command */
|
#define PDC_CMD_DISABLE 0x11 /* Result of disable command */
|
||||||
#define PDC_CMD_RESTART 0x12 /* Result of restart command */
|
#define PDC_CMD_RESTART 0x12 /* Result of restart command */
|
||||||
|
#define PDC_CMD_SHUTDOWN 0x13 /* Result of global shutdown */
|
||||||
#define PDC_IN_LIMIT_HIT 0x21 /* Route import limit reached */
|
#define PDC_IN_LIMIT_HIT 0x21 /* Route import limit reached */
|
||||||
#define PDC_OUT_LIMIT_HIT 0x22 /* Route export limit reached - not implemented */
|
#define PDC_OUT_LIMIT_HIT 0x22 /* Route export limit reached */
|
||||||
|
|
||||||
|
|
||||||
void *proto_new(struct proto_config *, unsigned size);
|
void *proto_new(struct proto_config *, unsigned size);
|
||||||
|
|
|
@ -870,6 +870,7 @@ bgp_shutdown(struct proto *P)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PDC_CMD_DISABLE:
|
case PDC_CMD_DISABLE:
|
||||||
|
case PDC_CMD_SHUTDOWN:
|
||||||
subcode = 2; // Errcode 6, 2 - administrative shutdown
|
subcode = 2; // Errcode 6, 2 - administrative shutdown
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue