aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-03-24 10:39:25 -0600
committerJason A. Donenfeld <Jason@zx2c4.com>2021-03-24 10:39:25 -0600
commit5bd562e6994f0750e96629749a939fde6e1afd67 (patch)
tree5fee580cb9c48fd79e75c1ad4c4aa03a1b8254e6 /src
parentversion: bump (diff)
downloadwireguard-freebsd-5bd562e6994f0750e96629749a939fde6e1afd67.tar.xz
wireguard-freebsd-5bd562e6994f0750e96629749a939fde6e1afd67.zip
if_wg: set persistent keepalive even if interface is down
Reported-by: Raúl Munoz <raul.munoz@custos.es> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'src')
-rw-r--r--src/if_wg.c7
1 files changed, 4 insertions, 3 deletions
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);
}