bgpd: move t_start into peer_connection

The t_start event pointer belongs on the peer_connection

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
This commit is contained in:
Donald Sharp 2023-08-26 19:28:39 -04:00
parent b8f3b2cd4a
commit 904c98c4d9
4 changed files with 22 additions and 19 deletions

View File

@ -358,9 +358,9 @@ void bgp_timer_set(struct peer *peer)
inactive. All other timer must be turned off */ inactive. All other timer must be turned off */
if (BGP_PEER_START_SUPPRESSED(peer) || !peer_active(peer) if (BGP_PEER_START_SUPPRESSED(peer) || !peer_active(peer)
|| peer->bgp->vrf_id == VRF_UNKNOWN) { || peer->bgp->vrf_id == VRF_UNKNOWN) {
EVENT_OFF(peer->t_start); EVENT_OFF(peer->connection->t_start);
} else { } else {
BGP_TIMER_ON(peer->t_start, bgp_start_timer, BGP_TIMER_ON(peer->connection->t_start, bgp_start_timer,
peer->v_start); peer->v_start);
} }
EVENT_OFF(peer->connection->t_connect); EVENT_OFF(peer->connection->t_connect);
@ -374,7 +374,7 @@ void bgp_timer_set(struct peer *peer)
/* After start timer is expired, the peer moves to Connect /* After start timer is expired, the peer moves to Connect
status. Make sure start timer is off and connect timer is status. Make sure start timer is off and connect timer is
on. */ on. */
EVENT_OFF(peer->t_start); EVENT_OFF(peer->connection->t_start);
if (CHECK_FLAG(peer->flags, PEER_FLAG_TIMER_DELAYOPEN)) if (CHECK_FLAG(peer->flags, PEER_FLAG_TIMER_DELAYOPEN))
BGP_TIMER_ON(peer->connection->t_connect, BGP_TIMER_ON(peer->connection->t_connect,
bgp_connect_timer, bgp_connect_timer,
@ -391,7 +391,7 @@ void bgp_timer_set(struct peer *peer)
case Active: case Active:
/* Active is waiting connection from remote peer. And if /* Active is waiting connection from remote peer. And if
connect timer is expired, change status to Connect. */ connect timer is expired, change status to Connect. */
EVENT_OFF(peer->t_start); EVENT_OFF(peer->connection->t_start);
/* If peer is passive mode, do not set connect timer. */ /* If peer is passive mode, do not set connect timer. */
if (CHECK_FLAG(peer->flags, PEER_FLAG_PASSIVE) if (CHECK_FLAG(peer->flags, PEER_FLAG_PASSIVE)
|| CHECK_FLAG(peer->sflags, PEER_STATUS_NSF_WAIT)) { || CHECK_FLAG(peer->sflags, PEER_STATUS_NSF_WAIT)) {
@ -413,7 +413,7 @@ void bgp_timer_set(struct peer *peer)
case OpenSent: case OpenSent:
/* OpenSent status. */ /* OpenSent status. */
EVENT_OFF(peer->t_start); EVENT_OFF(peer->connection->t_start);
EVENT_OFF(peer->connection->t_connect); EVENT_OFF(peer->connection->t_connect);
if (peer->v_holdtime != 0) { if (peer->v_holdtime != 0) {
BGP_TIMER_ON(peer->t_holdtime, bgp_holdtime_timer, BGP_TIMER_ON(peer->t_holdtime, bgp_holdtime_timer,
@ -428,7 +428,7 @@ void bgp_timer_set(struct peer *peer)
case OpenConfirm: case OpenConfirm:
/* OpenConfirm status. */ /* OpenConfirm status. */
EVENT_OFF(peer->t_start); EVENT_OFF(peer->connection->t_start);
EVENT_OFF(peer->connection->t_connect); EVENT_OFF(peer->connection->t_connect);
/* /*
@ -452,7 +452,7 @@ void bgp_timer_set(struct peer *peer)
case Established: case Established:
/* In Established status start and connect timer is turned /* In Established status start and connect timer is turned
off. */ off. */
EVENT_OFF(peer->t_start); EVENT_OFF(peer->connection->t_start);
EVENT_OFF(peer->connection->t_connect); EVENT_OFF(peer->connection->t_connect);
EVENT_OFF(peer->connection->t_delayopen); EVENT_OFF(peer->connection->t_delayopen);
@ -482,7 +482,7 @@ void bgp_timer_set(struct peer *peer)
EVENT_OFF(peer->t_refresh_stalepath); EVENT_OFF(peer->t_refresh_stalepath);
/* fallthru */ /* fallthru */
case Clearing: case Clearing:
EVENT_OFF(peer->t_start); EVENT_OFF(peer->connection->t_start);
EVENT_OFF(peer->connection->t_connect); EVENT_OFF(peer->connection->t_connect);
EVENT_OFF(peer->t_holdtime); EVENT_OFF(peer->t_holdtime);
bgp_keepalives_off(peer); bgp_keepalives_off(peer);
@ -1513,7 +1513,7 @@ enum bgp_fsm_state_progress bgp_stop(struct peer_connection *connection)
EVENT_OFF(peer->t_connect_check_w); EVENT_OFF(peer->t_connect_check_w);
/* Stop all timers. */ /* Stop all timers. */
EVENT_OFF(peer->t_start); EVENT_OFF(connection->t_start);
EVENT_OFF(connection->t_connect); EVENT_OFF(connection->t_connect);
EVENT_OFF(peer->t_holdtime); EVENT_OFF(peer->t_holdtime);
EVENT_OFF(peer->t_routeadv); EVENT_OFF(peer->t_routeadv);

View File

@ -436,8 +436,8 @@ static void bgp_accept(struct event *thread)
sockopt_tcp_mss_set(bgp_sock, peer1->tcp_mss); sockopt_tcp_mss_set(bgp_sock, peer1->tcp_mss);
bgp_fsm_change_status(peer1, Active); bgp_fsm_change_status(peer1, Active);
EVENT_OFF( EVENT_OFF(peer1->connection
peer1->t_start); /* created in peer_create() */ ->t_start); /* created in peer_create() */
if (peer_active(peer1)) { if (peer_active(peer1)) {
if (CHECK_FLAG(peer1->flags, if (CHECK_FLAG(peer1->flags,
@ -569,7 +569,7 @@ static void bgp_accept(struct event *thread)
} }
bgp_peer_reg_with_nht(peer); bgp_peer_reg_with_nht(peer);
bgp_fsm_change_status(peer, Active); bgp_fsm_change_status(peer, Active);
EVENT_OFF(peer->t_start); /* created in peer_create() */ EVENT_OFF(peer->connection->t_start); /* created in peer_create() */
SET_FLAG(peer->sflags, PEER_STATUS_ACCEPT_PEER); SET_FLAG(peer->sflags, PEER_STATUS_ACCEPT_PEER);
/* Make dummy peer until read Open packet. */ /* Make dummy peer until read Open packet. */

View File

@ -15128,10 +15128,12 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,
p->rtt_keepalive_rcv); p->rtt_keepalive_rcv);
} }
} }
if (p->t_start) if (p->connection->t_start)
json_object_int_add( json_object_int_add(json_neigh,
json_neigh, "nextStartTimerDueInMsecs", "nextStartTimerDueInMsecs",
event_timer_remain_second(p->t_start) * 1000); event_timer_remain_second(
p->connection->t_start) *
1000);
if (p->connection->t_connect) if (p->connection->t_connect)
json_object_int_add(json_neigh, json_object_int_add(json_neigh,
"nextConnectTimerDueInMsecs", "nextConnectTimerDueInMsecs",
@ -15172,9 +15174,10 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json,
"Shutdown when RTT > %dms, count > %u\n", "Shutdown when RTT > %dms, count > %u\n",
p->rtt_expected, p->rtt_keepalive_rcv); p->rtt_expected, p->rtt_keepalive_rcv);
} }
if (p->t_start) if (p->connection->t_start)
vty_out(vty, "Next start timer due in %ld seconds\n", vty_out(vty, "Next start timer due in %ld seconds\n",
event_timer_remain_second(p->t_start)); event_timer_remain_second(
p->connection->t_start));
if (p->connection->t_connect) if (p->connection->t_connect)
vty_out(vty, "Next connect timer due in %ld seconds\n", vty_out(vty, "Next connect timer due in %ld seconds\n",
event_timer_remain_second( event_timer_remain_second(

View File

@ -1140,6 +1140,7 @@ struct peer_connection {
struct event *t_write; struct event *t_write;
struct event *t_connect; struct event *t_connect;
struct event *t_delayopen; struct event *t_delayopen;
struct event *t_start;
struct event *t_process_packet; struct event *t_process_packet;
struct event *t_process_packet_error; struct event *t_process_packet_error;
@ -1550,7 +1551,6 @@ struct peer {
_Atomic uint32_t v_gr_restart; _Atomic uint32_t v_gr_restart;
/* Threads. */ /* Threads. */
struct event *t_start;
struct event *t_connect_check_r; struct event *t_connect_check_r;
struct event *t_connect_check_w; struct event *t_connect_check_w;
struct event *t_holdtime; struct event *t_holdtime;