[LTP] [RFC PATCH v8 07/11] lib/test_net.sh: Add function reset_ltp_netspace()

Petr Vorel pvorel@suse.cz
Fri Aug 18 18:44:33 CEST 2017


This function is useful when we know we broke netns (e.g. by unloading
network driver).

It was necessary to introduce new variable LTP_NETNS_CUSTOM, as after
resetting network namespace there is no way to reset LTP_NETNS variable
for subsequent tests and therefore is (for non-custom variant) always
needed to set it even if netns itself is setup.

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 testcases/lib/test_net.sh | 29 ++++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

diff --git a/testcases/lib/test_net.sh b/testcases/lib/test_net.sh
index c4399f637..6c2fb6803 100644
--- a/testcases/lib/test_net.sh
+++ b/testcases/lib/test_net.sh
@@ -21,6 +21,16 @@
 
 [ -z "$TST_LIB_LOADED" ] && . test.sh
 
+set_ltp_netns_var()
+{
+	if [ -z "$LTP_NETNS_CUSTOM" ]; then
+		pid="$(echo $(readlink /var/run/netns/ltp_ns) | cut -f3 -d'/')"
+		export LTP_NETNS="ns_exec $pid net,mnt"
+	else
+		export LTP_NETNS="$LTP_NETNS_CUSTOM"
+	fi
+}
+
 init_ltp_netspace()
 {
 	local pid=
@@ -41,8 +51,7 @@ init_ltp_netspace()
 
 	export TST_INIT_NETNS="no"
 
-	pid="$(echo $(readlink /var/run/netns/ltp_ns) | cut -f3 -d'/')"
-	export LTP_NETNS="${LTP_NETNS:-ns_exec $pid net,mnt}"
+	set_ltp_netns_var
 
 	tst_restore_ipaddr
 	tst_restore_ipaddr rhost
@@ -50,6 +59,18 @@ init_ltp_netspace()
 	tst_wait_ipv6_dad
 }
 
+# Force to reset netns.
+reset_ltp_netspace()
+{
+	[ -n "$TST_USE_NETNS" ] || return
+
+	tst_resm TINFO "reset netns"
+	ip link delete ltp_ns_veth2 2> /dev/null
+	rm -f /var/run/netns/ltp_ns
+	pkill ns_create
+	init_ltp_netspace
+}
+
 # Run command on remote host.
 # Options:
 # -b run in background
@@ -636,7 +657,9 @@ export UPLOAD_REGFILESIZE="${UPLOAD_REGFILESIZE:-1024}"
 export MCASTNUM_NORMAL="${MCASTNUM_NORMAL:-20}"
 export MCASTNUM_HEAVY="${MCASTNUM_HEAVY:-4000}"
 
-[ -n "$TST_USE_NETNS" -a "$TST_INIT_NETNS" != "no" ] && init_ltp_netspace
+if [ -n "$TST_USE_NETNS" ]; then
+	[ "$TST_INIT_NETNS" != "no" ] && init_ltp_netspace || set_ltp_netns_var
+fi
 
 # Warning: make sure to set valid interface names and IP addresses below.
 # Set names for test interfaces, e.g. "eth0 eth1"
-- 
2.13.2



More information about the ltp mailing list