diff options
| author | David Lamparter <equinox@diac24.net> | 2018-09-18 12:47:54 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-09-18 12:47:54 +0200 |
| commit | 8c59e16b12b80ce1d245b39754b9ffb7394ef392 (patch) | |
| tree | 7b7b759e6e14083f894beeea5892fb8c10c1b46b | |
| parent | 2564f080da643863d031a39c8079aec9c34718b3 (diff) | |
| parent | eb938189a1e08d1c9f0e167d3e32ebd2d5303162 (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.c | 15 | ||||
| -rw-r--r-- | doc/user/bgp.rst | 8 |
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 |
