]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: delay local routes until update-delay is over
authorDon Slice <dslice@nvidia.com>
Wed, 21 Oct 2020 14:46:49 +0000 (07:46 -0700)
committerIgor Ryzhov <iryzhov@nfware.com>
Wed, 28 Oct 2020 18:35:48 +0000 (21:35 +0300)
Problem found that turning an update-delay would only delay prefixes
learned from peers by delaying bestpath, but would allow local routes
(network statements or redistributed) to be immediately advertised,
followed by an End of Rib indicator. This fix delays sending local
routes until the update-delay process is completed, which matches
what testing shows other vendors do..

Ticket: CM-31743
Signed-off-by: Don Slice <dslice@nvidia.com>
bgpd/bgp_packet.c

index 6c077878b56ad2cb779de7058ce80e8a32c14300..f26c8a6a296ce27cb059e9e35d63adb93c2a1dd0 100644 (file)
@@ -402,12 +402,13 @@ int bgp_generate_updgrp_packets(struct thread *thread)
        /*
         * The code beyond this part deals with update packets, proceed only
         * if peer is Established and updates are not on hold (as part of
-        * update-delay post processing).
+        * update-delay processing).
         */
        if (peer->status != Established)
                return 0;
 
-       if (peer->bgp->main_peers_update_hold)
+       if ((peer->bgp->main_peers_update_hold)
+           || bgp_update_delay_active(peer->bgp))
                return 0;
 
        if (peer->t_routeadv)