]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests/net: Add netkit container ping test
authorDavid Wei <dw@davidwei.uk>
Thu, 5 Mar 2026 18:18:03 +0000 (10:18 -0800)
committerJakub Kicinski <kuba@kernel.org>
Fri, 6 Mar 2026 21:16:40 +0000 (13:16 -0800)
Add a basic ping test using NetDrvContEnv that sets up a netkit pair,
with one end in a netns. Use LOCAL_PREFIX_V6 and nk_forward BPF program
to ping from a remote host to the netkit in netns.

Signed-off-by: David Wei <dw@davidwei.uk>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://patch.msgid.link/20260305181803.2912736-5-dw@davidwei.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/drivers/net/hw/Makefile
tools/testing/selftests/drivers/net/hw/config
tools/testing/selftests/drivers/net/hw/nk_netns.py [new file with mode: 0755]

index a64140333a46741d57f7bd0741d9ee0ac20ef0f1..91df028abfc08efd9bff649421d0ee4cbb3fecc5 100644 (file)
@@ -32,6 +32,7 @@ TEST_PROGS = \
        irq.py \
        loopback.sh \
        nic_timestamp.py \
+       nk_netns.py \
        pp_alloc_fail.py \
        rss_api.py \
        rss_ctx.py \
index 2307aa001be1bbb8f95c9b04451d74e06febe6e4..235c0a1cd21e76a3752ad9c6c8f2a0a48a35bcc9 100644 (file)
@@ -1,3 +1,4 @@
+CONFIG_BPF_SYSCALL=y
 CONFIG_FAIL_FUNCTION=y
 CONFIG_FAULT_INJECTION=y
 CONFIG_FAULT_INJECTION_DEBUG_FS=y
@@ -5,7 +6,9 @@ CONFIG_FUNCTION_ERROR_INJECTION=y
 CONFIG_IO_URING=y
 CONFIG_IPV6=y
 CONFIG_IPV6_GRE=y
+CONFIG_NET_CLS_BPF=y
 CONFIG_NET_IPGRE=y
 CONFIG_NET_IPGRE_DEMUX=y
+CONFIG_NETKIT=y
 CONFIG_UDMABUF=y
 CONFIG_VXLAN=y
diff --git a/tools/testing/selftests/drivers/net/hw/nk_netns.py b/tools/testing/selftests/drivers/net/hw/nk_netns.py
new file mode 100755 (executable)
index 0000000..8b7ab75
--- /dev/null
@@ -0,0 +1,29 @@
+#!/usr/bin/env python3
+# SPDX-License-Identifier: GPL-2.0
+
+"""
+Test exercising NetDrvContEnv() itself, a NetDrvContEnv() selftest.
+"""
+
+from lib.py import ksft_run, ksft_exit
+from lib.py import NetDrvContEnv
+from lib.py import cmd
+
+
+def test_ping(cfg) -> None:
+    """ Run ping between the container and the remote system. """
+    cfg.require_ipver("6")
+
+    cmd(f"ping -c 1 -W5 {cfg.nk_guest_ipv6}", host=cfg.remote)
+    cmd(f"ping -c 1 -W5 {cfg.remote_addr_v['6']}", ns=cfg.netns)
+
+
+def main() -> None:
+    """ Ksft boiler plate main """
+    with NetDrvContEnv(__file__) as cfg:
+        ksft_run([test_ping], args=(cfg,))
+    ksft_exit()
+
+
+if __name__ == "__main__":
+    main()