From b9d4191a51a8965228f50f5100e5831eb1a5a894 Mon Sep 17 00:00:00 2001 From: Donatas Abraitis Date: Thu, 5 Sep 2024 15:16:05 +0300 Subject: [PATCH] bgpd: Allow using `solo` for peer-groups Inherit solo flag for peer-group members also. Signed-off-by: Donatas Abraitis --- bgpd/bgp_updgrp.c | 2 ++ bgpd/bgp_vty.c | 7 ++----- bgpd/bgpd.c | 1 + doc/user/bgp.rst | 3 +-- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/bgpd/bgp_updgrp.c b/bgpd/bgp_updgrp.c index b717793a45..115bc35cdc 100644 --- a/bgpd/bgp_updgrp.c +++ b/bgpd/bgp_updgrp.c @@ -2016,6 +2016,8 @@ int update_group_adjust_soloness(struct peer *peer, int set) struct peer_group *group; struct listnode *node, *nnode; + peer_flag_set(peer, PEER_FLAG_LONESOUL); + if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP)) { peer_lonesoul_or_not(peer, set); if (peer_established(peer->connection)) diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index c9c7b80496..338f6e3a50 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -18678,11 +18678,8 @@ static void bgp_config_write_peer_global(struct vty *vty, struct bgp *bgp, peer->password); /* neighbor solo */ - if (CHECK_FLAG(peer->flags, PEER_FLAG_LONESOUL)) { - if (!peer_group_active(peer)) { - vty_out(vty, " neighbor %s solo\n", addr); - } - } + if (peergroup_flag_check(peer, PEER_FLAG_LONESOUL)) + vty_out(vty, " neighbor %s solo\n", addr); /* BGP port */ if (peer->port != BGP_PORT_DEFAULT) { diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index a88de651f5..ad45f5d6e9 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -4701,6 +4701,7 @@ static const struct peer_flag_action peer_flag_action_list[] = { {PEER_FLAG_CAPABILITY_FQDN, 0, peer_change_none}, {PEER_FLAG_AS_LOOP_DETECTION, 0, peer_change_none}, {PEER_FLAG_EXTENDED_LINK_BANDWIDTH, 0, peer_change_none}, + {PEER_FLAG_LONESOUL, 0, peer_change_reset_out}, {0, 0, 0}}; static const struct peer_flag_action peer_af_flag_action_list[] = { diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst index aa62d274f0..b6d289fac9 100644 --- a/doc/user/bgp.rst +++ b/doc/user/bgp.rst @@ -2191,8 +2191,7 @@ and will share updates. .. clicmd:: neighbor PEER solo This command is used to indicate that routes advertised by the peer - should not be reflected back to the peer. This command only is only - meaningful when there is a single peer defined in the peer-group. + should not be reflected back to the peer. .. clicmd:: show [ip] bgp peer-group [json] -- 2.39.5