diff options
| author | Donald Sharp <sharpd@nvidia.com> | 2021-09-02 08:53:19 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@nvidia.com> | 2021-09-02 09:19:48 -0400 | 
| commit | 888e727c9ec32da0579d93709fb2d7ead166cbcc (patch) | |
| tree | 03e6ebd2cb051e36365ee452b5aa10407d81d3f4 /bgpd/bgp_network.c | |
| parent | 0e099318c8469319de72a0367c261fd6b30c1e98 (diff) | |
bgpd: Add some debug events for when things go wrong
As it stands there are cases where FRR is silently handling
error events and not giving any log output to say what is
going wrong.  This should be fixed.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'bgpd/bgp_network.c')
| -rw-r--r-- | bgpd/bgp_network.c | 17 | 
1 files changed, 14 insertions, 3 deletions
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index 7c9aa44c80..3005eba271 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -706,7 +706,8 @@ int bgp_connect(struct peer *peer)  	ifindex_t ifindex = 0;  	if (peer->conf_if && BGP_PEER_SU_UNSPEC(peer)) { -		zlog_debug("Peer address not learnt: Returning from connect"); +		if (bgp_debug_neighbor_events(peer)) +			zlog_debug("Peer address not learnt: Returning from connect");  		return 0;  	}  	frr_with_privs(&bgpd_privs) { @@ -714,8 +715,13 @@ int bgp_connect(struct peer *peer)  		peer->fd = vrf_sockunion_socket(&peer->su, peer->bgp->vrf_id,  						bgp_get_bound_name(peer));  	} -	if (peer->fd < 0) +	if (peer->fd < 0) { +		if (bgp_debug_neighbor_events(peer)) +			zlog_debug("%s: Failure to create socket for connection to %s, error received: %s(%d)", +				   __func__, peer->host, safe_strerror(errno), +				   errno);  		return -1; +	}  	set_nonblocking(peer->fd); @@ -725,8 +731,13 @@ int bgp_connect(struct peer *peer)  	bgp_socket_set_buffer_size(peer->fd); -	if (bgp_set_socket_ttl(peer, peer->fd) < 0) +	if (bgp_set_socket_ttl(peer, peer->fd) < 0) { +		if (bgp_debug_neighbor_events(peer)) +			zlog_debug("%s: Failure to set socket ttl for connection to %s, error received: %s(%d)", +				   __func__, peer->host, safe_strerror(errno), +				   errno);  		return -1; +	}  	sockopt_reuseaddr(peer->fd);  	sockopt_reuseport(peer->fd);  | 
