Merge pull request #11028 from ton31337/fix/pass_non_transitive_communities_via_rsclient

bgpd: Pass non-transitive ext-communities between Route Server and RS clients
This commit is contained in:
Russ White 2022-04-15 16:04:04 -04:00 committed by GitHub
commit eb3bd82451
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4177,9 +4177,14 @@ bgp_size_t bgp_packet_attribute(struct bgp *bgp, struct peer *peer,
if (CHECK_FLAG(peer->af_flags[afi][safi], PEER_FLAG_SEND_EXT_COMMUNITY) if (CHECK_FLAG(peer->af_flags[afi][safi], PEER_FLAG_SEND_EXT_COMMUNITY)
&& (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_EXT_COMMUNITIES))) { && (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_EXT_COMMUNITIES))) {
struct ecommunity *ecomm = bgp_attr_get_ecommunity(attr); struct ecommunity *ecomm = bgp_attr_get_ecommunity(attr);
bool transparent = CHECK_FLAG(peer->af_flags[afi][safi],
PEER_FLAG_RSERVER_CLIENT) &&
from &&
CHECK_FLAG(from->af_flags[afi][safi],
PEER_FLAG_RSERVER_CLIENT);
if (peer->sort == BGP_PEER_IBGP if (peer->sort == BGP_PEER_IBGP ||
|| peer->sort == BGP_PEER_CONFED) { peer->sort == BGP_PEER_CONFED || transparent) {
if (ecomm->size * 8 > 255) { if (ecomm->size * 8 > 255) {
stream_putc(s, stream_putc(s,
BGP_ATTR_FLAG_OPTIONAL BGP_ATTR_FLAG_OPTIONAL