diff --git a/bgpd/bgp_keepalives.c b/bgpd/bgp_keepalives.c index 604d6c9509..d9c653f562 100644 --- a/bgpd/bgp_keepalives.c +++ b/bgpd/bgp_keepalives.c @@ -269,8 +269,9 @@ void bgp_keepalives_on(struct peer *peer) peer_lock(peer); } SET_FLAG(peer->thread_flags, PEER_THREAD_KEEPALIVES_ON); + /* Force the keepalive thread to wake up */ + pthread_cond_signal(peerhash_cond); } - bgp_keepalives_wake(); } void bgp_keepalives_off(struct peer *peer) @@ -300,19 +301,15 @@ void bgp_keepalives_off(struct peer *peer) } } -void bgp_keepalives_wake(void) -{ - frr_with_mutex (peerhash_mtx) { - pthread_cond_signal(peerhash_cond); - } -} - int bgp_keepalives_stop(struct frr_pthread *fpt, void **result) { assert(fpt->running); - atomic_store_explicit(&fpt->running, false, memory_order_relaxed); - bgp_keepalives_wake(); + frr_with_mutex (peerhash_mtx) { + atomic_store_explicit(&fpt->running, false, + memory_order_relaxed); + pthread_cond_signal(peerhash_cond); + } pthread_join(fpt->thread, result); return 0; diff --git a/bgpd/bgp_keepalives.h b/bgpd/bgp_keepalives.h index d1cb7d2462..e8d0d3d401 100644 --- a/bgpd/bgp_keepalives.h +++ b/bgpd/bgp_keepalives.h @@ -73,18 +73,6 @@ extern void bgp_keepalives_init(void); */ extern void *bgp_keepalives_start(void *arg); -/** - * Poking function for keepalives pthread. - * - * Under normal circumstances the pthread will automatically wake itself - * whenever it is necessary to do work. This function may be used to force the - * thread to wake up and see if there is any work to do, or if it is time to - * die. - * - * It is not necessary to call this after bgp_keepalives_on(). - */ -extern void bgp_keepalives_wake(void); - /** * Stops the thread and blocks until it terminates. */