From 29196a6a5f3f0d882796d56d48f2971cb57a47d4 Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Fri, 7 Jul 2023 15:07:11 +0300 Subject: [PATCH] bgpd: Check if cluster list attribute is not received via eBGP session Signed-off-by: Donatas Abraitis --- bgpd/bgp_attr.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bgpd/bgp_attr.c b/bgpd/bgp_attr.c index b5cdcfd2df..63705fb155 100644 --- a/bgpd/bgp_attr.c +++ b/bgpd/bgp_attr.c @@ -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 -- 2.39.5