Commit 5400c0e7 authored by Ondrej Zajicek's avatar Ondrej Zajicek
Browse files

Fixes BGP subcode during global shutdown.

parent bbcfd5a0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
	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/.

+8 −6
Original line number Diff line number Diff line
@@ -512,20 +512,22 @@ protos_commit(struct config *new, struct config *old, int force_reconfig, int ty
	      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");
	      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);
	}
+2 −1
Original line number Diff line number Diff line
@@ -222,8 +222,9 @@ struct proto_spec {
#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);
+1 −0
Original line number Diff line number Diff line
@@ -870,6 +870,7 @@ bgp_shutdown(struct proto *P)
      break;

    case PDC_CMD_DISABLE:
    case PDC_CMD_SHUTDOWN:
      subcode = 2; // Errcode 6, 2 - administrative shutdown
      break;