summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas.abraitis@gmail.com>2021-03-02 08:56:35 +0200
committerGitHub <noreply@github.com>2021-03-02 08:56:35 +0200
commit3ca7090fdcdda8dc8ab0d96ed1a2c7a0a700aaf3 (patch)
treeccf7bf2f13ba6d79d1e31f4e5af9fad95e6dd290
parent188b0db9d47212661b8697b1f83d0fc8fefd7ec9 (diff)
parenta1b773e2870531ecc5a064b16ea24370f389d05f (diff)
Merge pull request #8178 from donaldsharp/bgp_fib_install
bgpd: Wait for Install should not always set the flag
-rw-r--r--bgpd/bgp_route.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 18a0b3fb7d..d7a4a43633 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -3597,19 +3597,6 @@ int bgp_update(struct peer *peer, const struct prefix *p, uint32_t addpath_id,
if (has_valid_label)
assert(label != NULL);
- /* The flag BGP_NODE_FIB_INSTALL_PENDING is for the following
- * condition :
- * Suppress fib is enabled
- * BGP_OPT_NO_FIB is not enabled
- * Route type is BGP_ROUTE_NORMAL (peer learnt routes)
- * Route is being installed first time (BGP_NODE_FIB_INSTALLED not set)
- */
- if (BGP_SUPPRESS_FIB_ENABLED(bgp) &&
- (sub_type == BGP_ROUTE_NORMAL) &&
- (!bgp_option_check(BGP_OPT_NO_FIB)) &&
- (!CHECK_FLAG(dest->flags, BGP_NODE_FIB_INSTALLED)))
- SET_FLAG(dest->flags, BGP_NODE_FIB_INSTALL_PENDING);
-
/* When peer's soft reconfiguration enabled. Record input packet in
Adj-RIBs-In. */
if (!soft_reconfig
@@ -3791,6 +3778,19 @@ int bgp_update(struct peer *peer, const struct prefix *p, uint32_t addpath_id,
evpn == NULL ? NULL : &evpn->gw_ip);
}
+ /* The flag BGP_NODE_FIB_INSTALL_PENDING is for the following
+ * condition :
+ * Suppress fib is enabled
+ * BGP_OPT_NO_FIB is not enabled
+ * Route type is BGP_ROUTE_NORMAL (peer learnt routes)
+ * Route is being installed first time (BGP_NODE_FIB_INSTALLED not set)
+ */
+ if (bgp_fibupd_safi(safi) && BGP_SUPPRESS_FIB_ENABLED(bgp)
+ && (sub_type == BGP_ROUTE_NORMAL)
+ && (!bgp_option_check(BGP_OPT_NO_FIB))
+ && (!CHECK_FLAG(dest->flags, BGP_NODE_FIB_INSTALLED)))
+ SET_FLAG(dest->flags, BGP_NODE_FIB_INSTALL_PENDING);
+
attr_new = bgp_attr_intern(&new_attr);
/* If maximum prefix count is configured and current prefix