bgpd: Check if cluster list attribute is not received via eBGP session

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
This commit is contained in:
Donatas Abraitis 2023-07-07 15:07:11 +03:00
parent c1ccfa977a
commit 29196a6a5f

View File

@ -2183,6 +2183,15 @@ bgp_attr_cluster_list(struct bgp_attr_parser_args *args)
struct attr *const attr = args->attr;
const bgp_size_t length = args->length;
/* if the CLUSTER_LIST attribute is received from an external
* neighbor, it SHALL be discarded using the approach of "attribute
* discard".
*/
if (peer->sort == BGP_PEER_EBGP) {
stream_forward_getp(peer->curr, length);
return BGP_ATTR_PARSE_PROCEED;
}
/* if received from an internal neighbor, it SHALL be considered
* malformed if its length is not a non-zero multiple of 4. If
* malformed, the UPDATE message SHALL be handled using the approach