diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2022-07-07 02:31:52 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-07-06 20:04:05 -0700 |
commit | 829be057dbc1e71383b8d7de8edb31dcf07b4aa0 (patch) | |
tree | 19662199b7474b9d028205189be005bf26979813 /tools/testing/selftests/wireguard/qemu/init.c | |
parent | r8169: fix accessing unset transport header (diff) | |
download | linux-dev-829be057dbc1e71383b8d7de8edb31dcf07b4aa0.tar.xz linux-dev-829be057dbc1e71383b8d7de8edb31dcf07b4aa0.zip |
wireguard: selftests: set fake real time in init
Not all platforms have an RTC, and rather than trying to force one into
each, it's much easier to just set a fixed time. This is necessary
because WireGuard's latest handshakes parameter is returned in wallclock
time, and if the system time isn't set, and the system is really fast,
then this returns 0, which trips the test.
Turning this on requires setting CONFIG_COMPAT_32BIT_TIME=y, as musl
doesn't support settimeofday without it.
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to '')
-rw-r--r-- | tools/testing/selftests/wireguard/qemu/init.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/tools/testing/selftests/wireguard/qemu/init.c b/tools/testing/selftests/wireguard/qemu/init.c index c9e128436546..3e49924dd77e 100644 --- a/tools/testing/selftests/wireguard/qemu/init.c +++ b/tools/testing/selftests/wireguard/qemu/init.c @@ -11,6 +11,7 @@ #include <stdlib.h> #include <stdbool.h> #include <fcntl.h> +#include <time.h> #include <sys/wait.h> #include <sys/mount.h> #include <sys/stat.h> @@ -70,6 +71,15 @@ static void seed_rng(void) close(fd); } +static void set_time(void) +{ + if (time(NULL)) + return; + pretty_message("[+] Setting fake time..."); + if (stime(&(time_t){1433512680}) < 0) + panic("settimeofday()"); +} + static void mount_filesystems(void) { pretty_message("[+] Mounting filesystems..."); @@ -259,6 +269,7 @@ int main(int argc, char *argv[]) print_banner(); mount_filesystems(); seed_rng(); + set_time(); kmod_selftests(); enable_logging(); clear_leaks(); |