From e79443fcd8f41b19e5c90732ae284ec82a5e97fe Mon Sep 17 00:00:00 2001 From: Donald Sharp Date: Sat, 26 Aug 2023 19:44:23 -0400 Subject: [PATCH] bgpd: move t_routeadv to peer_connection The t_routeadv belongs to the peer_connection data structure Signed-off-by: Donald Sharp --- bgpd/bgp_fsm.c | 44 +++++++++++++++++++++++-------------------- bgpd/bgp_packet.c | 2 +- bgpd/bgp_updgrp_adv.c | 5 +++-- bgpd/bgp_vty.c | 15 ++++++++------- bgpd/bgpd.h | 2 +- 5 files changed, 37 insertions(+), 31 deletions(-) diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c index 1978d26cfe..f1de97e179 100644 --- a/bgpd/bgp_fsm.c +++ b/bgpd/bgp_fsm.c @@ -159,12 +159,12 @@ static struct peer *peer_xfer_conn(struct peer *from_peer) */ bgp_keepalives_off(from_peer); - EVENT_OFF(peer->t_routeadv); + EVENT_OFF(peer->connection->t_routeadv); EVENT_OFF(peer->connection->t_connect); EVENT_OFF(peer->connection->t_delayopen); EVENT_OFF(peer->connection->t_connect_check_r); EVENT_OFF(peer->connection->t_connect_check_w); - EVENT_OFF(from_peer->t_routeadv); + EVENT_OFF(from_peer->connection->t_routeadv); EVENT_OFF(from_peer->connection->t_connect); EVENT_OFF(from_peer->connection->t_delayopen); EVENT_OFF(from_peer->connection->t_connect_check_r); @@ -366,7 +366,7 @@ void bgp_timer_set(struct peer *peer) EVENT_OFF(peer->connection->t_connect); EVENT_OFF(peer->connection->t_holdtime); bgp_keepalives_off(peer); - EVENT_OFF(peer->t_routeadv); + EVENT_OFF(peer->connection->t_routeadv); EVENT_OFF(peer->connection->t_delayopen); break; @@ -385,7 +385,7 @@ void bgp_timer_set(struct peer *peer) EVENT_OFF(peer->connection->t_holdtime); bgp_keepalives_off(peer); - EVENT_OFF(peer->t_routeadv); + EVENT_OFF(peer->connection->t_routeadv); break; case Active: @@ -408,7 +408,7 @@ void bgp_timer_set(struct peer *peer) } EVENT_OFF(peer->connection->t_holdtime); bgp_keepalives_off(peer); - EVENT_OFF(peer->t_routeadv); + EVENT_OFF(peer->connection->t_routeadv); break; case OpenSent: @@ -422,7 +422,7 @@ void bgp_timer_set(struct peer *peer) EVENT_OFF(peer->connection->t_holdtime); } bgp_keepalives_off(peer); - EVENT_OFF(peer->t_routeadv); + EVENT_OFF(peer->connection->t_routeadv); EVENT_OFF(peer->connection->t_delayopen); break; @@ -445,7 +445,7 @@ void bgp_timer_set(struct peer *peer) bgp_holdtime_timer, peer->v_holdtime); bgp_keepalives_on(peer); } - EVENT_OFF(peer->t_routeadv); + EVENT_OFF(peer->connection->t_routeadv); EVENT_OFF(peer->connection->t_delayopen); break; @@ -486,7 +486,7 @@ void bgp_timer_set(struct peer *peer) EVENT_OFF(peer->connection->t_connect); EVENT_OFF(peer->connection->t_holdtime); bgp_keepalives_off(peer); - EVENT_OFF(peer->t_routeadv); + EVENT_OFF(peer->connection->t_routeadv); EVENT_OFF(peer->connection->t_delayopen); break; case BGP_STATUS_MAX: @@ -968,8 +968,9 @@ void bgp_start_routeadv(struct bgp *bgp) for (ALL_LIST_ELEMENTS(bgp->peer, node, nnode, peer)) { if (!peer_established(peer)) continue; - EVENT_OFF(peer->t_routeadv); - BGP_TIMER_ON(peer->t_routeadv, bgp_routeadv_timer, 0); + EVENT_OFF(peer->connection->t_routeadv); + BGP_TIMER_ON(peer->connection->t_routeadv, bgp_routeadv_timer, + 0); } } @@ -988,7 +989,7 @@ void bgp_adjust_routeadv(struct peer *peer) * different * duration and schedule write thread immediately. */ - EVENT_OFF(peer->t_routeadv); + EVENT_OFF(peer->connection->t_routeadv); peer->synctime = monotime(NULL); /* If suppress fib pending is enabled, route is advertised to @@ -1020,8 +1021,9 @@ void bgp_adjust_routeadv(struct peer *peer) */ diff = difftime(nowtime, peer->last_update); if (diff > (double)peer->v_routeadv) { - EVENT_OFF(peer->t_routeadv); - BGP_TIMER_ON(peer->t_routeadv, bgp_routeadv_timer, 0); + EVENT_OFF(peer->connection->t_routeadv); + BGP_TIMER_ON(peer->connection->t_routeadv, bgp_routeadv_timer, + 0); return; } @@ -1041,14 +1043,15 @@ void bgp_adjust_routeadv(struct peer *peer) * * (MRAI - m) < r */ - if (peer->t_routeadv) - remain = event_timer_remain_second(peer->t_routeadv); + if (peer->connection->t_routeadv) + remain = event_timer_remain_second(peer->connection->t_routeadv); else remain = peer->v_routeadv; diff = peer->v_routeadv - diff; if (diff <= (double)remain) { - EVENT_OFF(peer->t_routeadv); - BGP_TIMER_ON(peer->t_routeadv, bgp_routeadv_timer, diff); + EVENT_OFF(peer->connection->t_routeadv); + BGP_TIMER_ON(peer->connection->t_routeadv, bgp_routeadv_timer, + diff); } } @@ -1516,7 +1519,7 @@ enum bgp_fsm_state_progress bgp_stop(struct peer_connection *connection) EVENT_OFF(connection->t_start); EVENT_OFF(connection->t_connect); EVENT_OFF(connection->t_holdtime); - EVENT_OFF(peer->t_routeadv); + EVENT_OFF(connection->t_routeadv); EVENT_OFF(peer->connection->t_delayopen); /* Clear input and output buffer. */ @@ -2331,8 +2334,9 @@ bgp_establish(struct peer_connection *connection) * of read-only mode. */ if (!bgp_update_delay_active(peer->bgp)) { - EVENT_OFF(peer->t_routeadv); - BGP_TIMER_ON(peer->t_routeadv, bgp_routeadv_timer, 0); + EVENT_OFF(peer->connection->t_routeadv); + BGP_TIMER_ON(peer->connection->t_routeadv, bgp_routeadv_timer, + 0); } if (peer->doppelganger && diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index 0b9cfc8d0f..b29c630d9c 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -469,7 +469,7 @@ void bgp_generate_updgrp_packets(struct event *thread) || bgp_update_delay_active(peer->bgp)) return; - if (peer->t_routeadv) + if (peer->connection->t_routeadv) return; /* diff --git a/bgpd/bgp_updgrp_adv.c b/bgpd/bgp_updgrp_adv.c index 68fd11a042..ba81f20dcf 100644 --- a/bgpd/bgp_updgrp_adv.c +++ b/bgpd/bgp_updgrp_adv.c @@ -384,8 +384,9 @@ static void subgroup_coalesce_timer(struct event *thread) SUBGRP_FOREACH_PEER (subgrp, paf) { peer = PAF_PEER(paf); - EVENT_OFF(peer->t_routeadv); - BGP_TIMER_ON(peer->t_routeadv, bgp_routeadv_timer, 0); + EVENT_OFF(peer->connection->t_routeadv); + BGP_TIMER_ON(peer->connection->t_routeadv, + bgp_routeadv_timer, 0); } } } diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c index 534bdc83ed..5268c8fc4b 100644 --- a/bgpd/bgp_vty.c +++ b/bgpd/bgp_vty.c @@ -15140,13 +15140,13 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json, event_timer_remain_second( p->connection->t_connect) * 1000); - if (p->t_routeadv) { + if (p->connection->t_routeadv) { json_object_int_add(json_neigh, "mraiInterval", p->v_routeadv); - json_object_int_add( - json_neigh, "mraiTimerExpireInMsecs", - event_timer_remain_second(p->t_routeadv) * - 1000); + json_object_int_add(json_neigh, "mraiTimerExpireInMsecs", + event_timer_remain_second( + p->connection->t_routeadv) * + 1000); } if (p->password) json_object_int_add(json_neigh, "authenticationEnabled", @@ -15182,11 +15182,12 @@ static void bgp_show_peer(struct vty *vty, struct peer *p, bool use_json, vty_out(vty, "Next connect timer due in %ld seconds\n", event_timer_remain_second( p->connection->t_connect)); - if (p->t_routeadv) + if (p->connection->t_routeadv) vty_out(vty, "MRAI (interval %u) timer expires in %ld seconds\n", p->v_routeadv, - event_timer_remain_second(p->t_routeadv)); + event_timer_remain_second( + p->connection->t_routeadv)); if (p->password) vty_out(vty, "Peer Authentication Enabled\n"); diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h index 4b1029778b..39266a499f 100644 --- a/bgpd/bgpd.h +++ b/bgpd/bgpd.h @@ -1146,6 +1146,7 @@ struct peer_connection { struct event *t_connect_check_r; struct event *t_connect_check_w; + struct event *t_routeadv; struct event *t_process_packet; struct event *t_process_packet_error; @@ -1555,7 +1556,6 @@ struct peer { _Atomic uint32_t v_gr_restart; /* Threads. */ - struct event *t_routeadv; struct event *t_pmax_restart; struct event *t_gr_restart; struct event *t_gr_stale; -- 2.39.5