diff options
Diffstat (limited to 'bgpd/bgp_network.c')
| -rw-r--r-- | bgpd/bgp_network.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/bgpd/bgp_network.c b/bgpd/bgp_network.c index 4bcb41b8dc..1f4f4d52a2 100644 --- a/bgpd/bgp_network.c +++ b/bgpd/bgp_network.c @@ -389,6 +389,23 @@ static void bgp_socket_set_buffer_size(const int fd) setsockopt_so_recvbuf(fd, bm->socket_buffer); } +static const char *bgp_peer_active2str(enum bgp_peer_active active) +{ + switch (active) { + case BGP_PEER_ACTIVE: + return "active"; + case BGP_PEER_CONNECTION_UNSPECIFIED: + return "unspecified connection"; + case BGP_PEER_BFD_DOWN: + return "BFD down"; + case BGP_PEER_AF_UNCONFIGURED: + return "no AF activated"; + } + + assert(!"We should never get here this is a dev escape"); + return "ERROR"; +} + /* Accept bgp connection. */ static void bgp_accept(struct event *thread) { @@ -400,6 +417,7 @@ static void bgp_accept(struct event *thread) struct peer_connection *connection, *incoming; char buf[SU_ADDRSTRLEN]; struct bgp *bgp = NULL; + enum bgp_peer_active active; sockunion_init(&su); @@ -508,7 +526,7 @@ static void bgp_accept(struct event *thread) bgp_fsm_change_status(incoming, Active); EVENT_OFF(incoming->t_start); - if (peer_active(incoming)) { + if (peer_active(incoming) == BGP_PEER_ACTIVE) { if (CHECK_FLAG(dynamic_peer->flags, PEER_FLAG_TIMER_DELAYOPEN)) BGP_EVENT_ADD(incoming, TCP_connection_open_w_delay); else @@ -559,10 +577,11 @@ static void bgp_accept(struct event *thread) } /* Check that at least one AF is activated for the peer. */ - if (!peer_active(connection)) { + active = peer_active(connection); + if (active != BGP_PEER_ACTIVE) { if (bgp_debug_neighbor_events(peer)) - zlog_debug("%s - incoming conn rejected - no AF activated for peer", - peer->host); + zlog_debug("%s - incoming conn rejected - %s", peer->host, + bgp_peer_active2str(active)); close(bgp_sock); return; } @@ -662,7 +681,7 @@ static void bgp_accept(struct event *thread) bgp_event_update(connection, TCP_connection_closed); } - if (peer_active(incoming)) { + if (peer_active(incoming) == BGP_PEER_ACTIVE) { if (CHECK_FLAG(doppelganger->flags, PEER_FLAG_TIMER_DELAYOPEN)) BGP_EVENT_ADD(incoming, TCP_connection_open_w_delay); else |
