From: Lennart Poettering Date: Wed, 31 May 2023 07:41:26 +0000 (+0200) Subject: test-loopback: run test in network + user namespace X-Git-Tag: v254-rc1~332^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F27860%2Fhead;p=thirdparty%2Fsystemd.git test-loopback: run test in network + user namespace This way it can actually do useful testing even when unprivileged. --- diff --git a/src/test/test-loopback.c b/src/test/test-loopback.c index 58d8c29dbb0..c18f07cfed5 100644 --- a/src/test/test-loopback.c +++ b/src/test/test-loopback.c @@ -1,20 +1,44 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ +#include #include #include +#include "errno-util.h" #include "log.h" #include "loopback-setup.h" #include "tests.h" -int main(int argc, char* argv[]) { +TEST_RET(loopback_setup) { int r; - test_setup_logging(LOG_DEBUG); + if (unshare(CLONE_NEWUSER | CLONE_NEWNET) < 0) { + if (ERRNO_IS_PRIVILEGE(errno) || ERRNO_IS_NOT_SUPPORTED(errno)) { + log_notice("Skipping test, lacking privileges or namespaces not supported"); + return EXIT_TEST_SKIP; + } + return log_error_errno(errno, "Failed to create user+network namespace: %m"); + } r = loopback_setup(); if (r < 0) - log_error_errno(r, "loopback: %m"); + return log_error_errno(r, "loopback: %m"); - return r >= 0 ? EXIT_SUCCESS : EXIT_FAILURE; + log_info("> ipv6 main"); + system("ip -6 route show table main"); + log_info("> ipv6 local"); + system("ip -6 route show table local"); + log_info("> ipv4 main"); + system("ip -4 route show table main"); + log_info("> ipv4 local"); + system("ip -4 route show table local"); + + return EXIT_SUCCESS; +} + +static int intro(void) { + log_show_color(true); + return EXIT_SUCCESS; } + +DEFINE_TEST_MAIN_WITH_INTRO(LOG_INFO, intro);