]> git.proxmox.com Git - mirror_frr.git/blobdiff - bgpd/bgp_zebra.c
bgpd: Ensure suppress-fib-pending works with network statements
[mirror_frr.git] / bgpd / bgp_zebra.c
index da598993d145480e4520bf5e4da041af82e01dcc..81be7cd7b667683faead4991da1c15323d80380b 100644 (file)
@@ -1309,6 +1309,14 @@ void bgp_zebra_announce(struct bgp_dest *dest, const struct prefix *p,
        uint32_t bos = 0;
        uint32_t exp = 0;
 
+       /*
+        * BGP is installing this route and bgp has been configured
+        * to suppress announcements until the route has been installed
+        * let's set the fact that we expect this route to be installed
+        */
+       if (BGP_SUPPRESS_FIB_ENABLED(bgp))
+               SET_FLAG(dest->flags, BGP_NODE_FIB_INSTALL_PENDING);
+
        /* Don't try to install if we're not connected to Zebra or Zebra doesn't
         * know of this instance.
         */
@@ -1760,6 +1768,12 @@ void bgp_zebra_withdraw(const struct prefix *p, struct bgp_path_info *info,
        struct zapi_route api;
        struct peer *peer;
 
+       /*
+        * If we are withdrawing the route, we don't need to have this
+        * flag set.  So unset it.
+        */
+       UNSET_FLAG(info->net->flags, BGP_NODE_FIB_INSTALL_PENDING);
+
        /* Don't try to install if we're not connected to Zebra or Zebra doesn't
         * know of this instance.
         */