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. */  | 
