bgpd: Fix per afi/safi addpath peer counting

The total_peercount table was created as a short cut for queries about
if addpath was enabled at all on a particular afi/safi. However, the
values weren't updated, so BGP would act as if addpath wasn't enabled
when determining if updates should be sent out. The error in behavior
was much more noticeable in tx-all than best-per-as, since changes in
what is sent by best-per-as would often trigger updates even if addpath
wasn't enabled.

Signed-off-by: Mitchell Skiba <mskiba@amazon.com>
This commit is contained in:
Mitch Skiba 2019-11-14 19:28:23 +00:00 committed by Donatas Abraitis
parent 2baa9d6aa1
commit 5d0eedd410

View File

@ -321,6 +321,7 @@ void bgp_addpath_type_changed(struct bgp *bgp)
for (type=0; type<BGP_ADDPATH_MAX; type++) { for (type=0; type<BGP_ADDPATH_MAX; type++) {
peer_count[afi][safi][type] = 0; peer_count[afi][safi][type] = 0;
} }
bgp->tx_addpath.total_peercount[afi][safi] = 0;
} }
for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) { for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) {
@ -328,6 +329,7 @@ void bgp_addpath_type_changed(struct bgp *bgp)
type = peer->addpath_type[afi][safi]; type = peer->addpath_type[afi][safi];
if (type != BGP_ADDPATH_NONE) { if (type != BGP_ADDPATH_NONE) {
peer_count[afi][safi][type] += 1; peer_count[afi][safi][type] += 1;
bgp->tx_addpath.total_peercount[afi][safi] += 1;
} }
} }
} }