]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Check if peer is established and dynamic capability-aware 14154/head
authorDonatas Abraitis <donatas@opensourcerouting.org>
Sat, 5 Aug 2023 20:00:55 +0000 (23:00 +0300)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Sat, 5 Aug 2023 20:02:59 +0000 (23:02 +0300)
Add this logic inside bgp_capability_send() instead of repeating the whole
logic before calling bgp_capability_send().

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
bgpd/bgp_packet.c
bgpd/bgp_vty.c

index fcd644a21007d79a1d4bf01fa97d822ac5c4dc10..78a33d3d4ccc283996659863abcfacd85738387a 100644 (file)
@@ -1202,6 +1202,13 @@ void bgp_capability_send(struct peer *peer, afi_t afi, safi_t safi,
        unsigned long cap_len;
        uint16_t len;
 
+       if (!peer_established(peer))
+               return;
+
+       if (!CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_RCV) &&
+           !CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_ADV))
+               return;
+
        /* Convert AFI, SAFI to values for packet. */
        bgp_map_afi_safi_int2iana(afi, safi, &pkt_afi, &pkt_safi);
 
index 52c9b95992d4569be3a97600cc872431ce0ed0e1..418f6fb3892de045e23ee26436308082ce730f76 100644 (file)
@@ -5738,14 +5738,10 @@ DEFPY(neighbor_capability_software_version,
                ret = peer_flag_set_vty(vty, neighbor,
                                        PEER_FLAG_CAPABILITY_SOFT_VERSION);
 
-       if (peer_established(peer)) {
-               if (CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_RCV) &&
-                   CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_ADV))
-                       bgp_capability_send(peer, AFI_IP, SAFI_UNICAST,
-                                           CAPABILITY_CODE_SOFT_VERSION,
-                                           no ? CAPABILITY_ACTION_UNSET
-                                              : CAPABILITY_ACTION_SET);
-       }
+       bgp_capability_send(peer, AFI_IP, SAFI_UNICAST,
+                           CAPABILITY_CODE_SOFT_VERSION,
+                           no ? CAPABILITY_ACTION_UNSET
+                              : CAPABILITY_ACTION_SET);
 
        return ret;
 }
@@ -6813,13 +6809,8 @@ DEFPY(neighbor_role,
 
        ret = peer_role_set_vty(vty, peer, role, false);
 
-       if (peer_established(peer)) {
-               if (CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_RCV) &&
-                   CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_ADV))
-                       bgp_capability_send(peer, AFI_IP, SAFI_UNICAST,
-                                           CAPABILITY_CODE_ROLE,
-                                           CAPABILITY_ACTION_SET);
-       }
+       bgp_capability_send(peer, AFI_IP, SAFI_UNICAST, CAPABILITY_CODE_ROLE,
+                           CAPABILITY_ACTION_SET);
 
        return ret;
 }
@@ -6842,13 +6833,8 @@ DEFPY(neighbor_role_strict,
 
        ret = peer_role_set_vty(vty, peer, role, true);
 
-       if (peer_established(peer)) {
-               if (CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_RCV) &&
-                   CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_ADV))
-                       bgp_capability_send(peer, AFI_IP, SAFI_UNICAST,
-                                           CAPABILITY_CODE_ROLE,
-                                           CAPABILITY_ACTION_SET);
-       }
+       bgp_capability_send(peer, AFI_IP, SAFI_UNICAST, CAPABILITY_CODE_ROLE,
+                           CAPABILITY_ACTION_SET);
 
        return ret;
 }
@@ -6872,13 +6858,8 @@ DEFPY(no_neighbor_role,
 
        ret = bgp_vty_return(vty, peer_role_unset(peer));
 
-       if (peer_established(peer)) {
-               if (CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_RCV) &&
-                   CHECK_FLAG(peer->cap, PEER_CAP_DYNAMIC_ADV))
-                       bgp_capability_send(peer, AFI_IP, SAFI_UNICAST,
-                                           CAPABILITY_CODE_ROLE,
-                                           CAPABILITY_ACTION_UNSET);
-       }
+       bgp_capability_send(peer, AFI_IP, SAFI_UNICAST, CAPABILITY_CODE_ROLE,
+                           CAPABILITY_ACTION_UNSET);
 
        return ret;
 }