]> git.puffer.fish Git - matthieu/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)
committerDon Slice <dslice@nvidia.com>
Mon, 26 Oct 2020 11:06:25 +0000 (04:06 -0700)
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 2ebac56670c904503db71cf0c376a35dec922486..d75d032c5cb63351a38b2a073e34101a36b4bf6d 100644 (file)
@@ -403,12 +403,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)