summaryrefslogtreecommitdiff
path: root/bgpd
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2024-11-06 14:31:19 -0500
committerDonald Sharp <sharpd@nvidia.com>2024-11-26 11:59:33 -0500
commit1baeb81632d46c20f7f75e619cfea73784d66c01 (patch)
tree3d3b97adae31194994290c886c3a9ed1d48f1a19 /bgpd
parent72f716ef2880408a3a6e71691f5c8aae24b059cd (diff)
bgpd: bgp_getsockname should use connection
Let's use the connection associated with the peer instead. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'bgpd')
-rw-r--r--bgpd/bgp_fsm.c12
-rw-r--r--bgpd/bgp_network.c4
-rw-r--r--bgpd/bgp_network.h2
-rw-r--r--bgpd/bgp_packet.c2
4 files changed, 11 insertions, 9 deletions
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
index 240ec59481..463296f025 100644
--- a/bgpd/bgp_fsm.c
+++ b/bgpd/bgp_fsm.c
@@ -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;
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c
index 89c71060a2..e6117a5ce0 100644
--- a/bgpd/bgp_network.c
+++ b/bgpd/bgp_network.c
@@ -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,
diff --git a/bgpd/bgp_network.h b/bgpd/bgp_network.h
index 481661825d..ed1a72ec89 100644
--- a/bgpd/bgp_network.h
+++ b/bgpd/bgp_network.h
@@ -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,
diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c
index a76a300c11..e9cc52449b 100644
--- a/bgpd/bgp_packet.c
+++ b/bgpd/bgp_packet.c
@@ -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);