From dc009781e0836fa1cb18df46ee7ac3b509738fed Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 8 Jul 2016 02:29:38 +0200 Subject: persistent keepalive: add kernel mechanism --- src/config.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/config.c') diff --git a/src/config.c b/src/config.c index 3df5d9e..767d31a 100644 --- a/src/config.c +++ b/src/config.c @@ -103,6 +103,13 @@ static int set_peer(struct wireguard_device *wg, void __user *user_peer, size_t break; } + if (in_peer.persistent_keepalive_interval != (uint16_t)-1) { + if (in_peer.persistent_keepalive_interval && (in_peer.persistent_keepalive_interval < 10 || in_peer.persistent_keepalive_interval > 3600)) + ret = -EINVAL; + else + peer->persistent_keepalive_interval = in_peer.persistent_keepalive_interval; + } + if (netdev_pub(wg)->flags & IFF_UP) packet_send_queue(peer); @@ -241,6 +248,7 @@ static int populate_peer(struct wireguard_peer *peer, void *ctx) out_peer.last_handshake_time = peer->walltime_last_handshake; out_peer.tx_bytes = peer->tx_bytes; out_peer.rx_bytes = peer->rx_bytes; + out_peer.persistent_keepalive_interval = peer->persistent_keepalive_interval; ipmasks_data.out_len = data->out_len; ipmasks_data.data = data->data; -- cgit v1.2.3-59-g8ed1b