From: Lennart Poettering Date: Tue, 11 Mar 2025 05:06:40 +0000 (+0100) Subject: test: add test for nsresourced X-Git-Tag: v258-rc1~1062^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ef197d6ab20e5231ffc58e30e94cb85bd68242b8;p=thirdparty%2Fsystemd.git test: add test for nsresourced --- diff --git a/src/test/meson.build b/src/test/meson.build index e86a28f8761..14d813fee10 100644 --- a/src/test/meson.build +++ b/src/test/meson.build @@ -132,6 +132,7 @@ simple_tests += files( 'test-modhex.c', 'test-mountpoint-util.c', 'test-net-naming-scheme.c', + 'test-nsresource.c', 'test-nulstr-util.c', 'test-open-file.c', 'test-ordered-set.c', diff --git a/src/test/test-nsresource.c b/src/test/test-nsresource.c new file mode 100644 index 00000000000..804b63f8ee4 --- /dev/null +++ b/src/test/test-nsresource.c @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ + +#include + +#include "fd-util.h" +#include "namespace-util.h" +#include "nsresource.h" +#include "tests.h" + +TEST(delegatetap) { + int r; + + _cleanup_close_ int userns_fd = userns_acquire_self_root(); + if (ERRNO_IS_NEG_PRIVILEGE(userns_fd) || ERRNO_IS_NEG_NOT_SUPPORTED(userns_fd)) + return (void) log_tests_skipped_errno(userns_fd, "User namespaces not available"); + ASSERT_OK(userns_fd); + + r = nsresource_register_userns("foobar", userns_fd); + if (ERRNO_IS_NEG_DISCONNECT(r) || r == -ENOENT || ERRNO_IS_NEG_NOT_SUPPORTED(r)) + return (void) log_tests_skipped_errno(r, "systemd-nsresourced cannot be reached"); + ASSERT_OK(r); + + _cleanup_free_ char *ifname = NULL; + _cleanup_close_ int tap_fd = nsresource_add_netif_tap(userns_fd, &ifname); + if (ERRNO_IS_NEG_NOT_SUPPORTED(tap_fd)) + return (void) log_tests_skipped_errno(tap_fd, "tap device support not available"); + ASSERT_OK(tap_fd); + + ASSERT_GE(if_nametoindex(ifname), 2U); +} + +DEFINE_TEST_MAIN(LOG_DEBUG);