Merge pull request #15513 from opensourcerouting/fix/bgp_default_software_version

bgpd: Fix `no` form for `neighbor X capability software-version`
This commit is contained in:
Donald Sharp 2024-03-11 07:17:09 -04:00 committed by GitHub
commit 0042ea49b5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 16 additions and 4 deletions

View File

@ -2039,7 +2039,6 @@ uint16_t bgp_open_capability(struct stream *s, struct peer *peer,
* or disable its use, and that switch MUST be off by default. * or disable its use, and that switch MUST be off by default.
*/ */
if (peergroup_flag_check(peer, PEER_FLAG_CAPABILITY_SOFT_VERSION) || 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) { peer->sort == BGP_PEER_IBGP || peer->sub_sort == BGP_PEER_EBGP_OAD) {
SET_FLAG(peer->cap, PEER_CAP_SOFT_VERSION_ADV); SET_FLAG(peer->cap, PEER_CAP_SOFT_VERSION_ADV);
stream_putc(s, BGP_OPEN_OPT_CAP); stream_putc(s, BGP_OPEN_OPT_CAP);

View File

@ -18427,9 +18427,19 @@ static void bgp_config_write_peer_global(struct vty *vty, struct bgp *bgp,
} }
/* capability software-version */ /* capability software-version */
if (peergroup_flag_check(peer, PEER_FLAG_CAPABILITY_SOFT_VERSION)) if (CHECK_FLAG(bgp->flags, BGP_FLAG_SOFT_VERSION_CAPABILITY)) {
vty_out(vty, " neighbor %s capability software-version\n", if (!peergroup_flag_check(peer,
PEER_FLAG_CAPABILITY_SOFT_VERSION))
vty_out(vty,
" no neighbor %s capability software-version\n",
addr); 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 */ /* dont-capability-negotiation */
if (peergroup_flag_check(peer, PEER_FLAG_DONT_CAPABILITY)) if (peergroup_flag_check(peer, PEER_FLAG_DONT_CAPABILITY))

View File

@ -1541,6 +1541,9 @@ struct peer *peer_new(struct bgp *bgp)
if (CHECK_FLAG(bgp->flags, BGP_FLAG_ENFORCE_FIRST_AS)) if (CHECK_FLAG(bgp->flags, BGP_FLAG_ENFORCE_FIRST_AS))
SET_FLAG(peer->flags, PEER_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_invert, PEER_FLAG_CAPABILITY_FQDN);
SET_FLAG(peer->flags, PEER_FLAG_CAPABILITY_FQDN); SET_FLAG(peer->flags, PEER_FLAG_CAPABILITY_FQDN);