All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
To: mptcp@lists.linux.dev
Cc: geliang@kernel.org, "Matthieu Baerts (NGI0)" <matttbe@kernel.org>,
	 Geliang Tang <tanggeliang@kylinos.cn>
Subject: [PATCH mptcp-next v6 7/9] selftests: net: lib: remove 'ns' var in setup_ns
Date: Mon, 27 May 2024 12:58:34 +0200	[thread overview]
Message-ID: <20240527-selftests-net-lib-fixes-v6-7-72411ff2460e@kernel.org> (raw)
In-Reply-To: <20240527-selftests-net-lib-fixes-v6-0-72411ff2460e@kernel.org>

From: Geliang Tang <tanggeliang@kylinos.cn>

The helper setup_ns() doesn't work when a net namespace named "ns" is
passed to it.

For example, in net/mptcp/diag.sh, the name of the namespace is "ns". If
"setup_ns ns" is used in it, diag.sh fails with errors:

  Invalid netns name "./mptcp_connect"
  Cannot open network namespace "10000": No such file or directory
  Cannot open network namespace "10000": No such file or directory

That is because "ns" is also a local variable in setup_ns, and it will
not set the value for the global variable that has been giving in
argument. To solve this, we could rename the variable, but it sounds
better to drop it, as we can resolve the name using the variable passed
in argument instead.

The other local variables -- "ns_list" and "ns_name" -- are more
unlikely to conflict with existing global variables. They don't seem to
be currently used in other net selftests.

Co-developed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 tools/testing/selftests/net/lib.sh | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/tools/testing/selftests/net/lib.sh b/tools/testing/selftests/net/lib.sh
index 114b927fee25..915f319bcc8b 100644
--- a/tools/testing/selftests/net/lib.sh
+++ b/tools/testing/selftests/net/lib.sh
@@ -167,26 +167,30 @@ cleanup_all_ns()
 # setup_ns local remote
 setup_ns()
 {
-	local ns=""
 	local ns_name=""
 	local ns_list=()
 	for ns_name in "$@"; do
-		# Some test may setup/remove same netns multi times
-		if [ -z "${!ns_name}" ]; then
-			ns="${ns_name,,}-$(mktemp -u XXXXXX)"
-			eval "${ns_name}=${ns}"
-		else
-			ns="${!ns_name}"
-			cleanup_ns "$ns"
+		# avoid conflicts with local var: internal error
+		if [ "${ns_name}" = "ns_name" ]; then
+			echo "Failed to setup namespace '${ns_name}': invalid name"
+			cleanup_ns "${ns_list[@]}"
+			exit $ksft_fail
 		fi
 
-		if ! ip netns add "$ns"; then
+		# Some test may setup/remove same netns multi times
+		if [ -z "${!ns_name}" ]; then
+			eval "${ns_name}=${ns_name,,}-$(mktemp -u XXXXXX)"
+		else
+			cleanup_ns "${!ns_name}"
+		fi
+
+		if ! ip netns add "${!ns_name}"; then
 			echo "Failed to create namespace $ns_name"
 			cleanup_ns "${ns_list[@]}"
 			return $ksft_skip
 		fi
-		ip -n "$ns" link set lo up
-		ns_list+=("$ns")
+		ip -n "${!ns_name}" link set lo up
+		ns_list+=("${!ns_name}")
 	done
 	NS_LIST+=("${ns_list[@]}")
 }

-- 
2.43.0


  parent reply	other threads:[~2024-05-27 10:58 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-27 10:58 [PATCH mptcp-next v6 0/9] use helpers in lib.sh and net_helpers.sh Matthieu Baerts (NGI0)
2024-05-27 10:58 ` [PATCH mptcp-next v6 1/9] selftests: net: lib: set 'i' as local Matthieu Baerts (NGI0)
2024-05-27 10:58 ` [PATCH mptcp-next v6 2/9] selftests: net: lib: support errexit with busywait Matthieu Baerts (NGI0)
2024-05-27 10:58 ` [PATCH mptcp-next v6 3/9] selftests: net: lib: avoid error removing empty netns name Matthieu Baerts (NGI0)
2024-05-27 10:58 ` [PATCH mptcp-next v6 4/9] selftests: net: lib: ignore possible error Matthieu Baerts (NGI0)
2024-05-27 10:58 ` [PATCH mptcp-next v6 5/9] selftests: net: lib: remove ns from list after clean-up Matthieu Baerts (NGI0)
2024-05-28  3:47   ` Geliang Tang
2024-05-28 10:38     ` Matthieu Baerts
2024-05-28 13:18       ` Geliang Tang
2024-05-28 15:26         ` Matthieu Baerts
2024-05-29  1:31           ` Geliang Tang
2024-05-27 10:58 ` [PATCH mptcp-next v6 6/9] selftests: net: lib: do not set ns var as readonly Matthieu Baerts (NGI0)
2024-05-27 10:58 ` Matthieu Baerts (NGI0) [this message]
2024-05-27 10:58 ` [PATCH mptcp-next v6 8/9] selftests: mptcp: lib: use setup/cleanup_ns helpers Matthieu Baerts (NGI0)
2024-05-27 10:58 ` [PATCH mptcp-next v6 9/9] selftests: mptcp: lib: use wait_local_port_listen helper Matthieu Baerts (NGI0)
2024-05-27 11:47 ` [PATCH mptcp-next v6 0/9] use helpers in lib.sh and net_helpers.sh MPTCP CI
2024-05-28 13:19 ` Geliang Tang
2024-06-03 16:01 ` Matthieu Baerts

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240527-selftests-net-lib-fixes-v6-7-72411ff2460e@kernel.org \
    --to=matttbe@kernel.org \
    --cc=geliang@kernel.org \
    --cc=mptcp@lists.linux.dev \
    --cc=tanggeliang@kylinos.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.