]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: Do not suppress conditional advertisement updates if triggered
authorDonatas Abraitis <donatas@opensourcerouting.org>
Fri, 20 Oct 2023 08:59:59 +0000 (11:59 +0300)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Wed, 25 Oct 2023 04:51:35 +0000 (04:51 +0000)
If we have a prefix-list with one entry, and after some time we append a prefix-list
with some more additional entries, conditional advertisement is triggered, and the
old entries are suppressed (because they look identical as sent before).

Hence, the old entries are sent as withdrawals and only new entries sent as updates.

Force re-sending all BGP updates for conditional advertisement. The same is done
for route-refresh, and/or soft clear operations.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit 2d8e85958526493f59e7cb9bf6dac829ed3d687f)

bgpd/bgp_conditional_adv.c

index 4ad00ed121bb2fcb9fa51c09f3a4b912f81006e3..24d822a745dca97b47a375c48f50a7104ca1f08b 100644 (file)
@@ -103,6 +103,7 @@ static void bgp_conditional_adv_routes(struct peer *peer, afi_t afi,
 
        addpath_capable = bgp_addpath_encode_tx(peer, afi, safi);
 
+       SET_FLAG(subgrp->sflags, SUBGRP_STATUS_FORCE_UPDATES);
        for (dest = bgp_table_top(table); dest; dest = bgp_route_next(dest)) {
                dest_p = bgp_dest_get_prefix(dest);
                assert(dest_p);