summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@diac24.net>2018-09-18 12:47:54 +0200
committerGitHub <noreply@github.com>2018-09-18 12:47:54 +0200
commit8c59e16b12b80ce1d245b39754b9ffb7394ef392 (patch)
tree7b7b759e6e14083f894beeea5892fb8c10c1b46b
parent2564f080da643863d031a39c8079aec9c34718b3 (diff)
parenteb938189a1e08d1c9f0e167d3e32ebd2d5303162 (diff)
Merge pull request #3015 from donaldsharp/no_fast_failover_and_vrf
bgpd: Using no bgp fast-external-failover prevents vrf intf moves
-rw-r--r--bgpd/bgp_zebra.c15
-rw-r--r--doc/user/bgp.rst8
2 files changed, 12 insertions, 11 deletions
diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c
index 0efba63737..deed8788e6 100644
--- a/bgpd/bgp_zebra.c
+++ b/bgpd/bgp_zebra.c
@@ -287,6 +287,7 @@ static int bgp_interface_down(int command, struct zclient *zclient,
struct nbr_connected *nc;
struct listnode *node, *nnode;
struct bgp *bgp;
+ struct peer *peer;
bgp = bgp_lookup_by_vrf_id(vrf_id);
if (!bgp)
@@ -307,11 +308,7 @@ static int bgp_interface_down(int command, struct zclient *zclient,
bgp_nbr_connected_delete(bgp, nc, 1);
/* Fast external-failover */
- {
- struct peer *peer;
-
- if (CHECK_FLAG(bgp->flags, BGP_FLAG_NO_FAST_EXT_FAILOVER))
- return 0;
+ if (!CHECK_FLAG(bgp->flags, BGP_FLAG_NO_FAST_EXT_FAILOVER)) {
for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) {
#if defined(HAVE_CUMULUS)
@@ -474,6 +471,7 @@ static int bgp_interface_vrf_update(int command, struct zclient *zclient,
struct nbr_connected *nc;
struct listnode *node, *nnode;
struct bgp *bgp;
+ struct peer *peer;
ifp = zebra_interface_vrf_update_read(zclient->ibuf, vrf_id,
&new_vrf_id);
@@ -495,12 +493,7 @@ static int bgp_interface_vrf_update(int command, struct zclient *zclient,
bgp_nbr_connected_delete(bgp, nc, 1);
/* Fast external-failover */
- {
- struct peer *peer;
-
- if (CHECK_FLAG(bgp->flags, BGP_FLAG_NO_FAST_EXT_FAILOVER))
- return 0;
-
+ if (!CHECK_FLAG(bgp->flags, BGP_FLAG_NO_FAST_EXT_FAILOVER)) {
for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) {
if ((peer->ttl != 1) && (peer->gtsm_hops != 1))
continue;
diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
index 2cea24a8bd..14f2c8dc9a 100644
--- a/doc/user/bgp.rst
+++ b/doc/user/bgp.rst
@@ -845,6 +845,14 @@ Configuring Peers
specified number of hops away will be allowed to become neighbors. This
command is mutually exclusive with *ebgp-multihop*.
+.. index:: [no] bgp fast-external-failover
+.. clicmd:: [no] bgp fast-external-failover
+
+ This command causes bgp to not take down ebgp peers immediately
+ when a link flaps. `bgp fast-external-failover` is the default
+ and will not be displayed as part of a `show run`. The no form
+ of the command turns off this ability.
+
.. _bgp-peer-filtering:
Peer Filtering