problems in details of its behavior -- the number of exported
routes can temporarily exceed the limit without triggering it
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
the future. Default: <cf/none/.
else if (!p->disabled && nc->disabled)
log(L_INFO "Disabling protocol %s", p->name);
- PD(p, "Restarting");
p->down_code = nc->disabled ? PDC_CF_DISABLE : PDC_CF_RESTART;
p->cf_new = nc;
}
- else
+ else if (!shutting_down)
{
- if (!shutting_down)
- log(L_INFO "Removing protocol %s", p->name);
- PD(p, "Unconfigured");
+ log(L_INFO "Removing protocol %s", p->name);
p->down_code = PDC_CF_REMOVE;
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);
proto_rethink_goal(p);
}
#define PDC_CF_RESTART 0x03 /* Restart due to reconfiguration */
#define PDC_CMD_DISABLE 0x11 /* Result of disable 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_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);
break;
case PDC_CMD_DISABLE:
+ case PDC_CMD_SHUTDOWN:
subcode = 2; // Errcode 6, 2 - administrative shutdown
break;