[LTP] [RFC PATCH v8 01/11] lib/test_net.sh: Add unused IP address helper functions

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


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

diff --git a/testcases/lib/test_net.sh b/testcases/lib/test_net.sh
index c11747a27..6575c77f4 100644
--- a/testcases/lib/test_net.sh
+++ b/testcases/lib/test_net.sh
@@ -219,7 +219,7 @@ tst_ipaddr()
 {
 	local type="${1:-lhost}"
 	local ipv="${TST_IPV6:-4}"
-	local tst_host=
+	local tst_host
 
 	if [ "$type" = "lhost" ]; then
 		eval "tst_host=\$LHOST_IPV${ipv}_HOST"
@@ -234,6 +234,77 @@ tst_ipaddr()
 	fi
 }
 
+# Get IP address of unused network, specified by type and counter.
+# This is useful for generating row of unique addresses based on lhost/rhost.
+# tst_ipaddr_un_host [TYPE] [COUNTER]
+# TYPE: { lhost | rhost }; Default value is 'lhost'.
+# COUNTER: Integer value for counting 4th octet and 3rd octet; Default is 1.
+tst_ipaddr_un_host()
+{
+	local type="${1:-lhost}"
+	local counter="${2:-1}"
+	local octet_3 octet_4 max_octet_3 max_octet_4 tmp
+
+	[ $counter -lt 1 ] && counter=1
+	[ "$TST_IPV6" ] && max_octet_3=65535 || max_octet_3=255
+	max_octet_4=$((max_octet_3 - 1))
+	tmp=$((counter * 2))
+	[ "$type" = "rhost" ] && tmp=$((tmp - 1))
+
+	octet_4=$((tmp % max_octet_4))
+	octet_3=$((tmp / max_octet_4))
+
+	if [ $octet_4 -eq 0 ]; then
+		octet_4=$max_octet_4
+		octet_3=$((octet_3 - 1))
+	fi
+
+	[ $octet_3 -gt $max_octet_3 ] && octet_3=$max_octet_3
+	[ $octet_4 -gt $max_octet_4 ] && octet_4=$max_octet_4
+
+	if [ "$TST_IPV6" ]; then
+		[ $octet_3 -gt 0 ] && octet_3="$(printf %x $octet_3)" || octet_3=
+		[ $octet_4 -gt 0 -o "$octet_3" ] && octet_4="$(printf %x $octet_4)" || octet_4=
+		[ "$octet_3" -a "$octet_4" ] && octet_4=":$octet_4"
+		echo "${IPV6_NET32_UNUSED}::${octet_3}${octet_4}"
+	else
+		echo "${IPV4_NET16_UNUSED}.${octet_3}.${octet_4}"
+	fi
+}
+
+# Get IP address of unused network, specified by 3rd and 4th octet.
+# This is useful when 3rd and/or 4th octet are needed to be defined.
+# tst_ipaddr_un_ip [OCTET_3] [OCTET_4]
+# OCTET_3: Integer or hex value of 3rd octet; Default value is 0.
+# OCTET_4: Integer or hex value of 4th octet; Default value is 0.
+tst_ipaddr_un_ip()
+{
+	local octet_3="${1:-0}"
+	local octet_4="${2:-0}"
+	local max
+
+	[ "$TST_IPV6" ] && max=65535 || max=255
+
+	if [ "$TST_IPV6" ]; then
+		octet_3=$(printf %d $octet_3)
+		octet_4=$(printf %d $octet_4)
+	fi
+
+	[ $octet_3 -lt 0 ] && octet_3=0
+	[ $octet_4 -lt 0 ] && octet_4=1
+	[ $octet_3 -gt $max ] && octet_3=$max
+	[ $octet_4 -gt $max ] && octet_4=$max
+
+	if [ "$TST_IPV6" ]; then
+		[ $octet_3 -gt 0 ] && octet_3="$(printf %x $octet_3)" || octet_3=
+		[ $octet_4 -gt 0 -o "$octet_3" ] && octet_4="$(printf %x $octet_4)" || octet_4=
+		[ "$octet_3" -a "$octet_4" ] && octet_4=":$octet_4"
+		echo "${IPV6_NET32_UNUSED}::${octet_3}${octet_4}"
+	else
+		echo "${IPV4_NET16_UNUSED}.${octet_3}.${octet_4}"
+	fi
+}
+
 # tst_init_iface [TYPE] [LINK]
 # TYPE: { lhost | rhost }; Default value is 'lhost'.
 # LINK: link number starting from 0. Default value is '0'.
@@ -436,6 +507,7 @@ tst_ping()
 	local src_iface="${1:-$(tst_iface)}"
 	local dst_addr="${2:-$(tst_ipaddr rhost)}"; shift $(( $# >= 2 ? 2 : 0 ))
 	local msg_sizes="$*"
+	local msg="tst_ping IPv${TST_IPV6:-4} iface $src_iface, msg_size"
 	local ret=0
 
 	# ping cmd use 56 as default message size
@@ -444,9 +516,9 @@ tst_ping()
 			-s $size -i 0 > /dev/null 2>&1
 		ret=$?
 		if [ $ret -eq 0 ]; then
-			tst_resm TINFO "tst_ping IPv${TST_IPV6:-4} msg_size $size pass"
+			tst_resm TINFO "$msg $size: pass"
 		else
-			tst_resm TINFO "tst_ping IPv${TST_IPV6:-4} msg_size $size fail"
+			tst_resm TINFO "$msg $size: fail"
 			break
 		fi
 	done
-- 
2.13.2



More information about the ltp mailing list