]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
test: add test for nsresourced
authorLennart Poettering <lennart@poettering.net>
Tue, 11 Mar 2025 05:06:40 +0000 (06:06 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 17 Mar 2025 20:39:05 +0000 (21:39 +0100)
src/test/meson.build
src/test/test-nsresource.c [new file with mode: 0644]

index e86a28f8761a86fff44fbfa6af221e150fc599aa..14d813fee103ba4a5cf0faefd052a2105560cda5 100644 (file)
@@ -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 (file)
index 0000000..804b63f
--- /dev/null
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+
+#include <net/if.h>
+
+#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);