bgpd: bgp_getsockanme is connection oriented

Let's make it so.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
Donald Sharp 2024-12-17 15:38:01 -05:00
parent b4d640fc38
commit 0e416ff157
3 changed files with 7 additions and 5 deletions

View file

@ -1819,8 +1819,8 @@ static void bgp_connect_in_progress_update_connection(struct peer_connection *co
{
struct peer *peer = connection->peer;
bgp_updatesockname(peer, connection);
if (!peer->su_remote && !BGP_CONNECTION_SU_UNSPEC(peer->connection)) {
bgp_updatesockname(connection);
if (!peer->su_remote && !BGP_CONNECTION_SU_UNSPEC(connection)) {
/* if connect initiated, then dest port and dest addresses are well known */
peer->su_remote = sockunion_dup(&connection->su);
if (sockunion_family(peer->su_remote) == AF_INET)

View file

@ -861,8 +861,10 @@ enum connect_result bgp_connect(struct peer_connection *connection)
htons(peer->port), ifindex);
}
void bgp_updatesockname(struct peer *peer, struct peer_connection *connection)
void bgp_updatesockname(struct peer_connection *connection)
{
struct peer *peer = connection->peer;
if (peer->su_local) {
sockunion_free(peer->su_local);
peer->su_local = NULL;
@ -882,7 +884,7 @@ int bgp_getsockname(struct peer_connection *connection)
{
struct peer *peer = connection->peer;
bgp_updatesockname(peer, peer->connection);
bgp_updatesockname(connection);
if (!bgp_zebra_nexthop_set(peer->su_local, peer->su_remote,
&peer->nexthop, peer)) {

View file

@ -23,7 +23,7 @@ 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_connection *connection);
extern void bgp_updatesockname(struct peer *peer, struct peer_connection *connection);
extern void bgp_updatesockname(struct peer_connection *connection);
extern int bgp_md5_set_prefix(struct bgp *bgp, struct prefix *p,
const char *password);