struct bgp_channel *c;
BGP_TRACE(D_EVENTS, "BGP session established");
+ p->last_established = current_time();
+ p->fsm_established_transitions++;
/* For multi-hop BGP sessions */
if (ipa_zero(p->source_addr))
bgp_conn_leave_established_state(struct bgp_proto *p)
{
BGP_TRACE(D_EVENTS, "BGP session closed");
+ p->last_established = current_time();
p->conn = NULL;
if (p->p.proto_state == PS_UP)
tm_remains(p->conn->keepalive_timer), p->conn->keepalive_time);
}
+ cli_msg(-1006, " FSM established transitions: %u",
+ p->fsm_established_transitions);
+
struct bgp_stats *s = &p->stats;
cli_msg(-1006, " Statistics:");
cli_msg(-1006, " rx-open %u rx-update %u rx-notify %u rx-keepalive %u rx-refresh %u",
struct bgp_socket *sock; /* Shared listening socket */
struct bfd_request *bfd_req; /* BFD request, if BFD is used */
struct bgp_stats stats; /* Packet statistics */
+ uint fsm_established_transitions; /* Number of established transitions */
+ btime last_established; /* Last time of enter/leave of established state */
ip_addr source_addr; /* Local address used as an advertised next hop */
ip_addr link_addr; /* Link-local version of source_addr */
event *event; /* Event for respawning and shutting process */