diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-01-22 13:38:52 +0100 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2019-01-23 14:29:44 +0100 |
commit | c870c7af53f44a37814dfc76ceb8ad88e290fcd8 (patch) | |
tree | 82f0ceef7f1bb33d63774be97f432ed9b99d9ec3 /src/netlink.c | |
parent | contrib: introduce simple highlighter library (diff) | |
download | wireguard-monolithic-historical-c870c7af53f44a37814dfc76ceb8ad88e290fcd8.tar.xz wireguard-monolithic-historical-c870c7af53f44a37814dfc76ceb8ad88e290fcd8.zip |
netlink: use __kernel_timespec for handshake time
Diffstat (limited to 'src/netlink.c')
-rw-r--r-- | src/netlink.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/netlink.c b/src/netlink.c index bdd3150..3458c81 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -33,7 +33,7 @@ static const struct nla_policy peer_policy[WGPEER_A_MAX + 1] = { [WGPEER_A_FLAGS] = { .type = NLA_U32 }, [WGPEER_A_ENDPOINT] = { .len = sizeof(struct sockaddr) }, [WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL] = { .type = NLA_U16 }, - [WGPEER_A_LAST_HANDSHAKE_TIME] = { .len = sizeof(struct timespec) }, + [WGPEER_A_LAST_HANDSHAKE_TIME] = { .len = sizeof(struct __kernel_timespec) }, [WGPEER_A_RX_BYTES] = { .type = NLA_U64 }, [WGPEER_A_TX_BYTES] = { .type = NLA_U64 }, [WGPEER_A_ALLOWEDIPS] = { .type = NLA_NESTED }, @@ -107,6 +107,11 @@ static int get_peer(struct wg_peer *peer, struct allowedips_cursor *rt_cursor, goto err; if (!rt_cursor->seq) { + const struct __kernel_timespec last_handshake = { + .tv_sec = peer->walltime_last_handshake.tv_sec, + .tv_nsec = peer->walltime_last_handshake.tv_nsec + }; + down_read(&peer->handshake.lock); fail = nla_put(skb, WGPEER_A_PRESHARED_KEY, NOISE_SYMMETRIC_KEY_LEN, @@ -116,8 +121,7 @@ static int get_peer(struct wg_peer *peer, struct allowedips_cursor *rt_cursor, goto err; if (nla_put(skb, WGPEER_A_LAST_HANDSHAKE_TIME, - sizeof(peer->walltime_last_handshake), - &peer->walltime_last_handshake) || + sizeof(last_handshake), &last_handshake) || nla_put_u16(skb, WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL, peer->persistent_keepalive_interval) || nla_put_u64_64bit(skb, WGPEER_A_TX_BYTES, peer->tx_bytes, |