static enum bgp_fsm_state_progress bgp_start(struct peer_connection *connection)
{
struct peer *peer = connection->peer;
- int status;
+ enum connect_result status;
bgp_peer_conf_if_to_su_update(connection);
}
/* BGP try to connect to the peer. */
-int bgp_connect(struct peer_connection *connection)
+enum connect_result bgp_connect(struct peer_connection *connection)
{
struct peer *peer = connection->peer;
if (peer->conf_if && BGP_CONNECTION_SU_UNSPEC(connection)) {
if (bgp_debug_neighbor_events(peer))
zlog_debug("Peer address not learnt: Returning from connect");
- return 0;
+ return connect_error;
}
frr_with_privs(&bgpd_privs) {
/* Make socket for the 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;
+ return connect_error;
}
set_nonblocking(connection->fd);
__func__, peer->host, safe_strerror(errno),
errno);
- return -1;
+ return connect_error;
}
sockopt_reuseaddr(connection->fd);
/* If the peer is passive mode, force to move to Active mode. */
if (CHECK_FLAG(peer->flags, PEER_FLAG_PASSIVE)) {
BGP_EVENT_ADD(connection, TCP_connection_open_failed);
- return BGP_FSM_SUCCESS;
+ return connect_error;
}
if (peer->conf_if || peer->ifname)
const char *address);
extern void bgp_close_vrf_socket(struct bgp *bgp);
extern void bgp_close(void);
-extern int bgp_connect(struct peer_connection *connection);
+extern enum connect_result bgp_connect(struct peer_connection *connection);
extern int bgp_getsockname(struct peer *peer);
extern void bgp_updatesockname(struct peer *peer);