]> 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>
Mon, 23 Oct 2023 11:42:05 +0000 (11:42 +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 53652f7dced00798ad2bf53b7ef9de23aa888965..6685a4f447877ed6459a5f7c3805f5f4b05b01e3 100644 (file)
@@ -90,6 +90,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);