diff options
-rw-r--r-- | bgpd/bgp_keepalives.c | 17 | ||||
-rw-r--r-- | bgpd/bgp_keepalives.h | 12 |
2 files changed, 7 insertions, 22 deletions
diff --git a/bgpd/bgp_keepalives.c b/bgpd/bgp_keepalives.c index 604d6c950..d9c653f56 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 d1cb7d246..e8d0d3d40 100644 --- a/bgpd/bgp_keepalives.h +++ b/bgpd/bgp_keepalives.h @@ -74,18 +74,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. */ int bgp_keepalives_stop(struct frr_pthread *fpt, void **result); |