diff options
| author | Donald Sharp <sharpd@nvidia.com> | 2023-09-08 12:18:07 -0400 |
|---|---|---|
| committer | Donald Sharp <sharpd@nvidia.com> | 2023-09-10 08:31:25 -0400 |
| commit | 70c3c27ebc1c998a12c1edac05b47ddf53979de6 (patch) | |
| tree | 35c5eb976d297cd279d97db93b70612498a46022 /bgpd/bgp_network.c | |
| parent | b2f25e1a17e601c687256715b50db109605c3a25 (diff) | |
bgpd: bgp_connect is struct peer_connection oriented
Make it so.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'bgpd/bgp_network.c')
| -rw-r--r-- | bgpd/bgp_network.c | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index fb5c297d4c..984cc53f5e 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -697,12 +697,12 @@ static int bgp_update_source(struct peer *peer) } /* BGP try to connect to the peer. */ -int bgp_connect(struct peer *peer) +int bgp_connect(struct peer_connection *connection) { - assert(!CHECK_FLAG(peer->connection->thread_flags, - PEER_THREAD_WRITES_ON)); - assert(!CHECK_FLAG(peer->connection->thread_flags, - PEER_THREAD_READS_ON)); + struct peer *peer = connection->peer; + + assert(!CHECK_FLAG(connection->thread_flags, PEER_THREAD_WRITES_ON)); + assert(!CHECK_FLAG(connection->thread_flags, PEER_THREAD_READS_ON)); ifindex_t ifindex = 0; if (peer->conf_if && BGP_PEER_SU_UNSPEC(peer)) { @@ -712,11 +712,11 @@ int bgp_connect(struct peer *peer) } frr_with_privs(&bgpd_privs) { /* Make socket for the peer. */ - peer->connection->fd = - vrf_sockunion_socket(&peer->su, peer->bgp->vrf_id, - bgp_get_bound_name(peer)); + connection->fd = vrf_sockunion_socket(&peer->su, + peer->bgp->vrf_id, + bgp_get_bound_name(peer)); } - if (peer->connection->fd < 0) { + if (connection->fd < 0) { peer->last_reset = PEER_DOWN_SOCKET_ERROR; if (bgp_debug_neighbor_events(peer)) zlog_debug("%s: Failure to create socket for connection to %s, error received: %s(%d)", @@ -725,18 +725,18 @@ int bgp_connect(struct peer *peer) return -1; } - set_nonblocking(peer->connection->fd); + set_nonblocking(connection->fd); /* Set the user configured MSS to TCP socket */ if (CHECK_FLAG(peer->flags, PEER_FLAG_TCP_MSS)) - sockopt_tcp_mss_set(peer->connection->fd, peer->tcp_mss); + sockopt_tcp_mss_set(connection->fd, peer->tcp_mss); - bgp_socket_set_buffer_size(peer->connection->fd); + bgp_socket_set_buffer_size(connection->fd); /* Set TCP keepalive when TCP keepalive is enabled */ - bgp_update_setsockopt_tcp_keepalive(peer->bgp, peer->connection->fd); + bgp_update_setsockopt_tcp_keepalive(peer->bgp, connection->fd); - if (bgp_set_socket_ttl(peer, peer->connection->fd) < 0) { + if (bgp_set_socket_ttl(peer, connection->fd) < 0) { peer->last_reset = PEER_DOWN_SOCKET_ERROR; if (bgp_debug_neighbor_events(peer)) zlog_debug("%s: Failure to set socket ttl for connection to %s, error received: %s(%d)", @@ -746,16 +746,15 @@ int bgp_connect(struct peer *peer) return -1; } - sockopt_reuseaddr(peer->connection->fd); - sockopt_reuseport(peer->connection->fd); + sockopt_reuseaddr(connection->fd); + sockopt_reuseport(connection->fd); #ifdef IPTOS_PREC_INTERNETCONTROL frr_with_privs(&bgpd_privs) { if (sockunion_family(&peer->su) == AF_INET) - setsockopt_ipv4_tos(peer->connection->fd, bm->tcp_dscp); + setsockopt_ipv4_tos(connection->fd, bm->tcp_dscp); else if (sockunion_family(&peer->su) == AF_INET6) - setsockopt_ipv6_tclass(peer->connection->fd, - bm->tcp_dscp); + setsockopt_ipv6_tclass(connection->fd, bm->tcp_dscp); } #endif @@ -767,7 +766,7 @@ int bgp_connect(struct peer *peer) if (!BGP_PEER_SU_UNSPEC(peer)) bgp_md5_set(peer); - bgp_md5_set_connect(peer->connection->fd, &peer->su, prefixlen, + bgp_md5_set_connect(connection->fd, &peer->su, prefixlen, peer->password); } @@ -784,11 +783,11 @@ int bgp_connect(struct peer *peer) if (bgp_debug_neighbor_events(peer)) zlog_debug("%s [Event] Connect start to %s fd %d", peer->host, - peer->host, peer->connection->fd); + peer->host, connection->fd); /* Connect to the remote peer. */ - return sockunion_connect(peer->connection->fd, &peer->su, - htons(peer->port), ifindex); + return sockunion_connect(connection->fd, &peer->su, htons(peer->port), + ifindex); } /* After TCP connection is established. Get local address and port. */ |
