diff --git a/bgpd/bgp_open.c b/bgpd/bgp_open.c index b85e717457..8b4f97d625 100644 --- a/bgpd/bgp_open.c +++ b/bgpd/bgp_open.c @@ -662,8 +662,6 @@ static int bgp_capability_addpath(struct peer *peer, struct stream *s = BGP_INPUT(peer); size_t end = stream_get_getp(s) + hdr->length; - SET_FLAG(peer->cap, PEER_CAP_ADDPATH_RCV); - /* Verify length is a multiple of 4 */ if (hdr->length % CAPABILITY_CODE_ADDPATH_LEN) { flog_warn( @@ -673,6 +671,8 @@ static int bgp_capability_addpath(struct peer *peer, return -1; } + SET_FLAG(peer->cap, PEER_CAP_ADDPATH_RCV); + while (stream_get_getp(s) + CAPABILITY_CODE_ADDPATH_LEN <= end) { afi_t afi; safi_t safi;