Skip to content

Commit

Permalink
Merge pull request #15519 from FRRouting/mergify/bp/dev/10.0/pr-15513
Browse files Browse the repository at this point in the history
bgpd: Fix `no` form for `neighbor X capability software-version` (backport #15513)
  • Loading branch information
ton31337 authored Mar 12, 2024
2 parents e488581 + baf24d2 commit abc238d
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 4 deletions.
1 change: 0 additions & 1 deletion bgpd/bgp_open.c
Original file line number Diff line number Diff line change
Expand Up @@ -1951,7 +1951,6 @@ uint16_t bgp_open_capability(struct stream *s, struct peer *peer,
* or disable its use, and that switch MUST be off by default.
*/
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->sub_sort == BGP_PEER_EBGP_OAD) {
SET_FLAG(peer->cap, PEER_CAP_SOFT_VERSION_ADV);
stream_putc(s, BGP_OPEN_OPT_CAP);
Expand Down
16 changes: 13 additions & 3 deletions bgpd/bgp_vty.c
Original file line number Diff line number Diff line change
Expand Up @@ -18238,9 +18238,19 @@ static void bgp_config_write_peer_global(struct vty *vty, struct bgp *bgp,
}

/* capability software-version */
if (peergroup_flag_check(peer, PEER_FLAG_CAPABILITY_SOFT_VERSION))
vty_out(vty, " neighbor %s capability software-version\n",
addr);
if (CHECK_FLAG(bgp->flags, BGP_FLAG_SOFT_VERSION_CAPABILITY)) {
if (!peergroup_flag_check(peer,
PEER_FLAG_CAPABILITY_SOFT_VERSION))
vty_out(vty,
" no neighbor %s capability software-version\n",
addr);
} else {
if (peergroup_flag_check(peer,
PEER_FLAG_CAPABILITY_SOFT_VERSION))
vty_out(vty,
" neighbor %s capability software-version\n",
addr);
}

/* dont-capability-negotiation */
if (peergroup_flag_check(peer, PEER_FLAG_DONT_CAPABILITY))
Expand Down
3 changes: 3 additions & 0 deletions bgpd/bgpd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1539,6 +1539,9 @@ struct peer *peer_new(struct bgp *bgp)
if (CHECK_FLAG(bgp->flags, BGP_FLAG_ENFORCE_FIRST_AS))
SET_FLAG(peer->flags, PEER_FLAG_ENFORCE_FIRST_AS);

if (CHECK_FLAG(bgp->flags, BGP_FLAG_SOFT_VERSION_CAPABILITY))
SET_FLAG(peer->flags, PEER_FLAG_CAPABILITY_SOFT_VERSION);

SET_FLAG(peer->flags_invert, PEER_FLAG_CAPABILITY_FQDN);
SET_FLAG(peer->flags, PEER_FLAG_CAPABILITY_FQDN);

Expand Down

0 comments on commit abc238d

Please sign in to comment.