]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: bgp_getsockname should use connection
authorDonald Sharp <sharpd@nvidia.com>
Wed, 6 Nov 2024 19:31:19 +0000 (14:31 -0500)
committerDonald Sharp <sharpd@nvidia.com>
Tue, 26 Nov 2024 16:59:33 +0000 (11:59 -0500)
Let's use the connection associated with the peer
instead.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd/bgp_fsm.c
bgpd/bgp_network.c
bgpd/bgp_network.h
bgpd/bgp_packet.c

index 240ec59481bc363641efcb4951fba5ba915b3769..463296f0258a2813670818882dda07bef2dfc156 100644 (file)
@@ -265,7 +265,7 @@ static struct peer *peer_xfer_conn(struct peer *from_peer)
                        from_peer->addpath_paths_limit[afi][safi];
        }
 
-       if (bgp_getsockname(peer) < 0) {
+       if (bgp_getsockname(keeper) < 0) {
                flog_err(EC_LIB_SOCKET,
                         "%%bgp_getsockname() failed for %s peer %s fd %d (from_peer fd %d)",
                         (CHECK_FLAG(peer->sflags, PEER_STATUS_ACCEPT_PEER)
@@ -277,7 +277,7 @@ static struct peer *peer_xfer_conn(struct peer *from_peer)
                return NULL;
        }
        if (going_away->status > Active) {
-               if (bgp_getsockname(from_peer) < 0) {
+               if (bgp_getsockname(going_away) < 0) {
                        flog_err(EC_LIB_SOCKET,
                                 "%%bgp_getsockname() failed for %s from_peer %s fd %d (peer fd %d)",
 
@@ -1694,11 +1694,11 @@ bgp_connect_success(struct peer_connection *connection)
                return bgp_stop(connection);
        }
 
-       if (bgp_getsockname(peer) < 0) {
+       if (bgp_getsockname(connection) < 0) {
                flog_err_sys(EC_LIB_SOCKET,
                             "%s: bgp_getsockname(): failed for peer %s, fd %d",
                             __func__, peer->host, connection->fd);
-               bgp_notify_send(peer->connection, BGP_NOTIFY_FSM_ERR,
+               bgp_notify_send(connection, BGP_NOTIFY_FSM_ERR,
                                bgp_fsm_error_subcode(connection->status));
                bgp_writes_on(connection);
                return BGP_FSM_FAILURE;
@@ -1740,11 +1740,11 @@ bgp_connect_success_w_delayopen(struct peer_connection *connection)
                return bgp_stop(connection);
        }
 
-       if (bgp_getsockname(peer) < 0) {
+       if (bgp_getsockname(connection) < 0) {
                flog_err_sys(EC_LIB_SOCKET,
                             "%s: bgp_getsockname(): failed for peer %s, fd %d",
                             __func__, peer->host, connection->fd);
-               bgp_notify_send(peer->connection, BGP_NOTIFY_FSM_ERR,
+               bgp_notify_send(connection, BGP_NOTIFY_FSM_ERR,
                                bgp_fsm_error_subcode(connection->status));
                bgp_writes_on(connection);
                return BGP_FSM_FAILURE;
index 89c71060a22a56573af25a1ba917b2d535f2bde6..e6117a5ce02165ffa8603355ddf6700f3b95c0af 100644 (file)
@@ -878,8 +878,10 @@ void bgp_updatesockname(struct peer *peer, struct peer_connection *connection)
 }
 
 /* After TCP connection is established.  Get local address and port. */
-int bgp_getsockname(struct peer *peer)
+int bgp_getsockname(struct peer_connection *connection)
 {
+       struct peer *peer = connection->peer;
+
        bgp_updatesockname(peer, peer->connection);
 
        if (!bgp_zebra_nexthop_set(peer->su_local, peer->su_remote,
index 481661825d2146a63c74dbdecb8afb5feb417ef4..ed1a72ec89005595bdec0f4376875790de4a5a45 100644 (file)
@@ -22,7 +22,7 @@ extern int bgp_socket(struct bgp *bgp, unsigned short port,
 extern void bgp_close_vrf_socket(struct bgp *bgp);
 extern void bgp_close(void);
 extern enum connect_result bgp_connect(struct peer_connection *connection);
-extern int bgp_getsockname(struct peer *peer);
+extern int bgp_getsockname(struct peer_connection *connection);
 extern void bgp_updatesockname(struct peer *peer, struct peer_connection *connection);
 
 extern int bgp_md5_set_prefix(struct bgp *bgp, struct prefix *p,
index a76a300c11bccfcdefea343ab33d9cb979e4693c..e9cc52449b426fb09a8241e43cd0954dd80f4dac 100644 (file)
@@ -2054,7 +2054,7 @@ static int bgp_open_receive(struct peer_connection *connection,
                return BGP_Stop;
 
        /* Get sockname. */
-       if (bgp_getsockname(peer) < 0) {
+       if (bgp_getsockname(connection) < 0) {
                flog_err_sys(EC_LIB_SOCKET,
                             "%s: bgp_getsockname() failed for peer: %s",
                             __func__, peer->host);