From 5bd562e6994f0750e96629749a939fde6e1afd67 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 24 Mar 2021 10:39:25 -0600 Subject: if_wg: set persistent keepalive even if interface is down MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported-by: Raúl Munoz Signed-off-by: Jason A. Donenfeld --- src/if_wg.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/if_wg.c b/src/if_wg.c index deedff7..8c70636 100644 --- a/src/if_wg.c +++ b/src/if_wg.c @@ -1244,9 +1244,10 @@ static void wg_timers_set_persistent_keepalive(struct wg_timers *t, uint16_t interval) { rw_rlock(&t->t_lock); - if (!t->t_disabled) { + if (interval != t->t_persistent_keepalive_interval) { t->t_persistent_keepalive_interval = interval; - wg_timers_run_persistent_keepalive(t); + if (!t->t_disabled) + wg_timers_run_persistent_keepalive(t); } rw_runlock(&t->t_lock); } @@ -1504,7 +1505,7 @@ wg_timers_run_persistent_keepalive(struct wg_timers *t) { struct wg_peer *peer = __containerof(t, struct wg_peer, p_timers); - if (t->t_persistent_keepalive_interval != 0) + if (t->t_persistent_keepalive_interval > 0) GROUPTASK_ENQUEUE(&peer->p_send_keepalive); } -- cgit v1.2.3-59-g8ed1b