Merge pull request #3015 from donaldsharp/no_fast_failover_and_vrf

bgpd: Using no bgp fast-external-failover prevents vrf intf moves
This commit is contained in:
David Lamparter 2018-09-18 12:47:54 +02:00 committed by GitHub
commit 8c59e16b12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 11 deletions

View File

@ -287,6 +287,7 @@ static int bgp_interface_down(int command, struct zclient *zclient,
struct nbr_connected *nc; struct nbr_connected *nc;
struct listnode *node, *nnode; struct listnode *node, *nnode;
struct bgp *bgp; struct bgp *bgp;
struct peer *peer;
bgp = bgp_lookup_by_vrf_id(vrf_id); bgp = bgp_lookup_by_vrf_id(vrf_id);
if (!bgp) if (!bgp)
@ -307,11 +308,7 @@ static int bgp_interface_down(int command, struct zclient *zclient,
bgp_nbr_connected_delete(bgp, nc, 1); bgp_nbr_connected_delete(bgp, nc, 1);
/* Fast external-failover */ /* Fast external-failover */
{ if (!CHECK_FLAG(bgp->flags, BGP_FLAG_NO_FAST_EXT_FAILOVER)) {
struct peer *peer;
if (CHECK_FLAG(bgp->flags, BGP_FLAG_NO_FAST_EXT_FAILOVER))
return 0;
for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) { for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) {
#if defined(HAVE_CUMULUS) #if defined(HAVE_CUMULUS)
@ -474,6 +471,7 @@ static int bgp_interface_vrf_update(int command, struct zclient *zclient,
struct nbr_connected *nc; struct nbr_connected *nc;
struct listnode *node, *nnode; struct listnode *node, *nnode;
struct bgp *bgp; struct bgp *bgp;
struct peer *peer;
ifp = zebra_interface_vrf_update_read(zclient->ibuf, vrf_id, ifp = zebra_interface_vrf_update_read(zclient->ibuf, vrf_id,
&new_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); bgp_nbr_connected_delete(bgp, nc, 1);
/* Fast external-failover */ /* Fast external-failover */
{ if (!CHECK_FLAG(bgp->flags, BGP_FLAG_NO_FAST_EXT_FAILOVER)) {
struct peer *peer;
if (CHECK_FLAG(bgp->flags, BGP_FLAG_NO_FAST_EXT_FAILOVER))
return 0;
for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) { for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) {
if ((peer->ttl != 1) && (peer->gtsm_hops != 1)) if ((peer->ttl != 1) && (peer->gtsm_hops != 1))
continue; continue;

View File

@ -845,6 +845,14 @@ Configuring Peers
specified number of hops away will be allowed to become neighbors. This specified number of hops away will be allowed to become neighbors. This
command is mutually exclusive with *ebgp-multihop*. 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: .. _bgp-peer-filtering:
Peer Filtering Peer Filtering