]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests/vsock: add namespace helpers to vmtest.sh
authorBobby Eshleman <bobbyeshleman@meta.com>
Wed, 21 Jan 2026 22:11:45 +0000 (14:11 -0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 27 Jan 2026 09:45:38 +0000 (10:45 +0100)
Add functions for initializing namespaces with the different vsock NS
modes. Callers can use add_namespaces() and del_namespaces() to create
namespaces global0, global1, local0, and local1.

The add_namespaces() function initializes global0, local0, etc... with
their respective vsock NS mode by toggling child_ns_mode before creating
the namespace.

Remove namespaces upon exiting the program in cleanup(). This is
unlikely to be needed for a healthy run, but it is useful for tests that
are manually killed mid-test.

This patch is in preparation for later namespace tests.

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Bobby Eshleman <bobbyeshleman@meta.com>
Link: https://patch.msgid.link/20260121-vsock-vmtest-v16-5-2859a7512097@meta.com
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
tools/testing/selftests/vsock/vmtest.sh

index c7b270dd77a92d033c2c98f963d186300a97d8c0..c2bdc293b94c2989c75c400d1cbc6aa02aa7da38 100755 (executable)
@@ -49,6 +49,7 @@ readonly TEST_DESCS=(
 )
 
 readonly USE_SHARED_VM=(vm_server_host_client vm_client_host_server vm_loopback)
+readonly NS_MODES=("local" "global")
 
 VERBOSE=0
 
@@ -103,6 +104,36 @@ check_result() {
        fi
 }
 
+add_namespaces() {
+       local orig_mode
+       orig_mode=$(cat /proc/sys/net/vsock/child_ns_mode)
+
+       for mode in "${NS_MODES[@]}"; do
+               echo "${mode}" > /proc/sys/net/vsock/child_ns_mode
+               ip netns add "${mode}0" 2>/dev/null
+               ip netns add "${mode}1" 2>/dev/null
+       done
+
+       echo "${orig_mode}" > /proc/sys/net/vsock/child_ns_mode
+}
+
+init_namespaces() {
+       for mode in "${NS_MODES[@]}"; do
+               # we need lo for qemu port forwarding
+               ip netns exec "${mode}0" ip link set dev lo up
+               ip netns exec "${mode}1" ip link set dev lo up
+       done
+}
+
+del_namespaces() {
+       for mode in "${NS_MODES[@]}"; do
+               ip netns del "${mode}0" &>/dev/null
+               ip netns del "${mode}1" &>/dev/null
+               log_host "removed ns ${mode}0"
+               log_host "removed ns ${mode}1"
+       done
+}
+
 vm_ssh() {
        ssh -q -o UserKnownHostsFile=/dev/null -p ${SSH_HOST_PORT} localhost "$@"
        return $?
@@ -110,6 +141,7 @@ vm_ssh() {
 
 cleanup() {
        terminate_pidfiles "${!PIDFILES[@]}"
+       del_namespaces
 }
 
 check_args() {