safi_t safi;
struct peer *peer;
struct bgp_adj_out *adj, *adj_next;
+ struct bgp_path_info *bpi;
bool addpath_capable;
afi = UPDGRP_AFI(updgrp);
*/
RB_FOREACH_SAFE (adj, bgp_adj_out_rb, &ctx->dest->adj_out,
adj_next) {
+ uint32_t best_tx_id = 0;
+
if (adj->subgroup != subgrp)
continue;
- if (!adj->adv)
+ for (bpi = bgp_dest_get_bgp_path_info(ctx->dest); bpi;
+ bpi = bpi->next) {
+ if (bgp_addpath_id_for_peer(peer, afi, safi,
+ &bpi->tx_addpath) ==
+ adj->addpath_tx_id &&
+ CHECK_FLAG(bpi->flags, BGP_PATH_SELECTED)) {
+ best_tx_id = adj->addpath_tx_id;
+ break;
+ }
+ }
+
+ if (adj->addpath_tx_id != best_tx_id)
subgroup_process_announce_selected(subgrp, NULL,
ctx->dest, afi,
safi,