Fixes BGP subcode during global shutdown.

This commit is contained in:
Ondrej Zajicek 2012-08-06 02:42:24 +02:00
parent bbcfd5a048
commit 5400c0e7f9
4 changed files with 12 additions and 8 deletions

View file

@ -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/.

View file

@ -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);
} }

View file

@ -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);

View file

@ -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;