summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2023-11-09 07:38:16 -0500
committerGitHub <noreply@github.com>2023-11-09 07:38:16 -0500
commitc93cfad7c06bc56ac5e5430277d8bbebfcca5e91 (patch)
treec8a305b1a028e786959abfd604ef0d5530d99a40
parent314a98d2b4cdfb75b900a004dc102e42c75af6c5 (diff)
parent89e6b4f390c96083c9404de94ba9fb96f4bc61b1 (diff)
Merge pull request #14751 from opensourcerouting/fix/soft_version_cap_received_fix
bgpd: Software capability nits
-rw-r--r--bgpd/bgp_open.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/bgpd/bgp_open.c b/bgpd/bgp_open.c
index 545da7c559..44cf8343c6 100644
--- a/bgpd/bgp_open.c
+++ b/bgpd/bgp_open.c
@@ -896,8 +896,6 @@ static int bgp_capability_software_version(struct peer *peer,
size_t end = stream_get_getp(s) + hdr->length;
uint8_t len;
- SET_FLAG(peer->cap, PEER_CAP_SOFT_VERSION_RCV);
-
len = stream_getc(s);
if (stream_get_getp(s) + len > end) {
flog_warn(
@@ -907,6 +905,8 @@ static int bgp_capability_software_version(struct peer *peer,
return -1;
}
+ SET_FLAG(peer->cap, PEER_CAP_SOFT_VERSION_RCV);
+
if (len > BGP_MAX_SOFT_VERSION) {
flog_warn(EC_BGP_CAPABILITY_INVALID_LENGTH,
"%s: Received Software Version, but the length is too big, truncating, from peer %s",
@@ -1938,7 +1938,7 @@ uint16_t bgp_open_capability(struct stream *s, struct peer *peer,
*/
if (peergroup_flag_check(peer, PEER_FLAG_CAPABILITY_SOFT_VERSION) ||
CHECK_FLAG(peer->bgp->flags, BGP_FLAG_SOFT_VERSION_CAPABILITY) ||
- peer->sort == BGP_PEER_IBGP) {
+ peer->sort == BGP_PEER_IBGP || peer->sub_sort == BGP_PEER_EBGP_OAD) {
SET_FLAG(peer->cap, PEER_CAP_SOFT_VERSION_ADV);
stream_putc(s, BGP_OPEN_OPT_CAP);
rcapp = stream_get_endp(s);