bgpd: Add "no listen" socket option for the BGP master configuration

* bgpd.h: add a BGP_OPT_NO_LISTEN option for the master BGP configuration,
  to prevent any listen socket being created automatically. Allows code
  to be used outside of BGP daemon settings.
* bgpd.c: (bgp_get) honour above the flag, suppress auto-creation of listen
  socket on first BGP instance if set.
  (bgp_option_set) whitelist BGP_OPT_NO_LISTEN
This commit is contained in:
Paul Jakma 2012-06-14 10:40:26 +01:00
parent 2fb2a45526
commit cccbc01518
2 changed files with 4 additions and 1 deletions

View File

@ -82,6 +82,7 @@ bgp_option_set (int flag)
case BGP_OPT_NO_FIB: case BGP_OPT_NO_FIB:
case BGP_OPT_MULTIPLE_INSTANCE: case BGP_OPT_MULTIPLE_INSTANCE:
case BGP_OPT_CONFIG_CISCO: case BGP_OPT_CONFIG_CISCO:
case BGP_OPT_NO_LISTEN:
SET_FLAG (bm->options, flag); SET_FLAG (bm->options, flag);
break; break;
default: default:
@ -2064,7 +2065,8 @@ bgp_get (struct bgp **bgp_val, as_t *as, const char *name)
*bgp_val = bgp; *bgp_val = bgp;
/* Create BGP server socket, if first instance. */ /* Create BGP server socket, if first instance. */
if (list_isempty(bm->bgp)) if (list_isempty(bm->bgp)
&& !bgp_option_check (BGP_OPT_NO_LISTEN))
{ {
if (bgp_socket (bm->port, bm->address) < 0) if (bgp_socket (bm->port, bm->address) < 0)
return BGP_ERR_INVALID_VALUE; return BGP_ERR_INVALID_VALUE;

View File

@ -59,6 +59,7 @@ struct bgp_master
#define BGP_OPT_NO_FIB (1 << 0) #define BGP_OPT_NO_FIB (1 << 0)
#define BGP_OPT_MULTIPLE_INSTANCE (1 << 1) #define BGP_OPT_MULTIPLE_INSTANCE (1 << 1)
#define BGP_OPT_CONFIG_CISCO (1 << 2) #define BGP_OPT_CONFIG_CISCO (1 << 2)
#define BGP_OPT_NO_LISTEN (1 << 3)
}; };
/* BGP instance structure. */ /* BGP instance structure. */