selftests: net: lib: remove 'ns' var in setup_ns
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 any 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> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://lore.kernel.org/r/20240607-upstream-net-next-20240607-selftests-mptcp-net-lib-v1-4-e36986faac94@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
577db6bd57
commit
f8a2d2f874
@ -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[@]}")
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user