From b5826a12a2a4c4a9e4ccd267f47e2711683355f7 Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Thu, 8 Sep 2016 18:48:02 -0400 Subject: [PATCH] bgpd: Allow bgp to work standalone Signed-off-by: Donald Sharp --- bgpd/bgp_fsm.c | 2 ++ bgpd/bgp_network.c | 6 ++++++ configure.ac | 6 ++++++ 3 files changed, 14 insertions(+) diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index ae77ac421a..046767177b 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -1332,8 +1332,10 @@ bgp_start (struct peer *peer) if (bgp_debug_neighbor_events(peer)) zlog_debug ("%s [FSM] Waiting for NHT", peer->host); +#if !defined (HAVE_BGP_STANDALONE) BGP_EVENT_ADD(peer, TCP_connection_open_failed); return 0; +#endif } status = bgp_connect (peer); diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index 58761a11d0..ecfc3f9fe8 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -253,9 +253,13 @@ bgp_get_instance_for_inc_conn (int sock, struct bgp **bgp_inst) rc = getsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, name, &name_len); if (rc != 0) { +#if !defined (HAVE_BGP_STANDALONE) zlog_err ("[Error] BGP SO_BINDTODEVICE get failed (%s), sock %d", safe_strerror (errno), sock); return -1; +#else + strcpy (name, VRF_DEFAULT_NAME); +#endif } if (!strlen(name)) @@ -671,7 +675,9 @@ bgp_getsockname (struct peer *peer) { zlog_err ("%s: nexthop_set failed, resetting connection - intf %p", peer->host, peer->nexthop.ifp); +#if !defined (HAVE_BGP_STANDALONE) return -1; +#endif } return 0; diff --git a/configure.ac b/configure.ac index e01af9e55e..b1ea4821e2 100755 --- a/configure.ac +++ b/configure.ac @@ -317,6 +317,8 @@ AC_ARG_ENABLE(werror, AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)])) AC_ARG_ENABLE(cumulus, AS_HELP_STRING([--enable-cumulus], [enable Cumulus Switch Special Extensions])) +AC_ARG_ENABLE(bgp-standalone, + AS_HELP_STRING([--enable-bgp-standalone], [Modify code to allow BGP to work without Zebra])) AC_ARG_ENABLE(rr-semantics, AS_HELP_STRING([--disable-rr-semantics], [disable the v6 Route Replace semantics])) @@ -368,6 +370,10 @@ if test "${enable_cumulus}" = "yes" ; then AC_DEFINE(HAVE_CUMULUS,,Compile Special Cumulus Code in) fi +if test "${enable_bgp_standalone}" = "yes" ; then + AC_DEFINE(HAVE_BGP_STANDALONE,,Allow BGP to work without Zebra) +fi + if test "${enable_shell_access}" = "yes"; then AC_DEFINE(HAVE_SHELL_ACCESS,,Allow user to use ssh/telnet/bash) fi -- 2.39.5