#include <stdint.h>
#include <stdlib.h>
+#include <time.h>
#include <net/if.h>
#include <netinet/in.h>
-#include <sys/time.h>
#include <sys/socket.h>
#include "../uapi/wireguard.h"
struct sockaddr_in6 addr6;
} endpoint;
- struct timeval last_handshake_time;
+ struct timespec last_handshake_time;
uint64_t rx_bytes, tx_bytes;
uint16_t persistent_keepalive_interval;
} else if (peer && !strcmp(key, "last_handshake_time_sec"))
peer->last_handshake_time.tv_sec = NUM(0xffffffffffffffffULL);
else if (peer && !strcmp(key, "last_handshake_time_nsec"))
- peer->last_handshake_time.tv_usec = NUM(0xffffffffffffffffULL) / 1000;
+ peer->last_handshake_time.tv_nsec = NUM(0xffffffffffffffffULL);
else if (peer && !strcmp(key, "rx_bytes"))
peer->rx_bytes = NUM(0xffffffffffffffffULL);
else if (peer && !strcmp(key, "tx_bytes"))
time_t diff;
const struct wgpeer *a = *(const void **)first, *b = *(const void **)second;
- if (!a->last_handshake_time.tv_sec && !a->last_handshake_time.tv_usec && (b->last_handshake_time.tv_sec || b->last_handshake_time.tv_usec))
+ if (!a->last_handshake_time.tv_sec && !a->last_handshake_time.tv_nsec && (b->last_handshake_time.tv_sec || b->last_handshake_time.tv_nsec))
return 1;
- if (!b->last_handshake_time.tv_sec && !b->last_handshake_time.tv_usec && (a->last_handshake_time.tv_sec || a->last_handshake_time.tv_usec))
+ if (!b->last_handshake_time.tv_sec && !b->last_handshake_time.tv_nsec && (a->last_handshake_time.tv_sec || a->last_handshake_time.tv_nsec))
return -1;
diff = a->last_handshake_time.tv_sec - b->last_handshake_time.tv_sec;
if (!diff)
- diff = a->last_handshake_time.tv_usec - b->last_handshake_time.tv_usec;
+ diff = a->last_handshake_time.tv_nsec - b->last_handshake_time.tv_nsec;
if (diff < 0)
return 1;
if (diff > 0)
return offset;
}
-static char *ago(const struct timeval *t)
+static char *ago(const struct timespec *t)
{
static char buf[1024];
size_t offset;