From: Masatake YAMATO Date: Thu, 19 Sep 2024 14:23:09 +0000 (+0900) Subject: tests: (nsenter) verify the code entering the network ns via socket made in the ns X-Git-Tag: v2.42-start~184^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5361a1f42c4987e239bf217be0a5e93f51e9a432;p=thirdparty%2Futil-linux.git tests: (nsenter) verify the code entering the network ns via socket made in the ns This is for testing PR #3200. Signed-off-by: Masatake YAMATO --- diff --git a/tests/commands.sh b/tests/commands.sh index 05d4d313e..b30551f01 100644 --- a/tests/commands.sh +++ b/tests/commands.sh @@ -114,6 +114,7 @@ TS_CMD_MKSWAP=${TS_CMD_MKSWAP:-"${ts_commandsdir}mkswap"} TS_CMD_MOUNT=${TS_CMD_MOUNT:-"${ts_commandsdir}mount"} TS_CMD_MOUNTPOINT=${TS_CMD_MOUNTPOINT:-"${ts_commandsdir}mountpoint"} TS_CMD_NAMEI=${TS_CMD_NAMEI-"${ts_commandsdir}namei"} +TS_CMD_NSENTER=${TS_CMD_NSENTER-"${ts_commandsdir}nsenter"} TS_CMD_PARTX=${TS_CMD_PARTX-"${ts_commandsdir}partx"} TS_CMD_PIPESZ=${TS_CMD_PIPESZ-"${ts_commandsdir}pipesz"} TS_CMD_RENAME=${TS_CMD_RENAME-"${ts_commandsdir}rename"} diff --git a/tests/expected/nsenter/enter-via-socket b/tests/expected/nsenter/enter-via-socket new file mode 100644 index 000000000..9868c714c --- /dev/null +++ b/tests/expected/nsenter/enter-via-socket @@ -0,0 +1,2 @@ +$?: 0 +==: 0 diff --git a/tests/ts/nsenter/enter-via-socket b/tests/ts/nsenter/enter-via-socket new file mode 100755 index 000000000..531233d9a --- /dev/null +++ b/tests/ts/nsenter/enter-via-socket @@ -0,0 +1,58 @@ +#!/bin/bash +# +# Copyright (C) 2024 Masatake YAMATO +# +# This file is part of util-linux. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +TS_TOPDIR="${0%/*}/../.." +TS_DESC="entering network namespace via socket" + +. "$TS_TOPDIR"/functions.sh +ts_init "$*" + +ts_check_test_command "$TS_CMD_NSENTER" +ts_check_test_command "$TS_HELPER_MKFDS" + +ts_check_prog "readlink" + +ts_skip_nonroot + +"$TS_HELPER_MKFDS" --dont-pause --quiet netns 6 2> /dev/null || ts_skip "ioctl(SIOCGSKNS) is not available" +ts_cd "$TS_OUTDIR" + +FD0=3 +FD1=4 + +PID= +NETNS= + +{ + coproc MKFDS { "$TS_HELPER_MKFDS" foreign-sockets "$FD0" "$FD1"; } + if read -r -u "${MKFDS[0]}" PID NETNS; then + expected_netns="net:[$NETNS]" + output_netns=$("$TS_CMD_NSENTER" --target "$PID" --net-socket "$FD0" readlink /proc/self/ns/net) + echo "\$?: $?" + if [[ "$expected_netns" == "$output_netns" ]]; then + echo "==: 0" + else + echo "==: 1" + echo expected: "${expected_netns}" + echo output: "${output_netns}" + fi + echo DONE >&"${MKFDS[1]}" + fi + wait "${MKFDS_PID}" +} > $TS_OUTPUT 2>&1 + +ts_finalize