Module Name:    src
Committed By:   ozaki-r
Date:           Tue Oct  4 03:41:33 UTC 2016

Modified Files:
        src/tests/net/ndp: t_dad.sh

Log Message:
Add tests for sysctl net.inet6.ip6.dad_count

>From suzu-ken@IIJ


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/tests/net/ndp/t_dad.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/net/ndp/t_dad.sh
diff -u src/tests/net/ndp/t_dad.sh:1.7 src/tests/net/ndp/t_dad.sh:1.8
--- src/tests/net/ndp/t_dad.sh:1.7	Fri Sep 16 00:50:43 2016
+++ src/tests/net/ndp/t_dad.sh	Tue Oct  4 03:41:33 2016
@@ -1,4 +1,4 @@
-#	$NetBSD: t_dad.sh,v 1.7 2016/09/16 00:50:43 ozaki-r Exp $
+#	$NetBSD: t_dad.sh,v 1.8 2016/10/04 03:41:33 ozaki-r Exp $
 #
 # Copyright (c) 2015 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -39,6 +39,7 @@ duplicated="[Dd][Uu][Pp][Ll][Ii][Cc][Aa]
 
 atf_test_case dad_basic cleanup
 atf_test_case dad_duplicated cleanup
+atf_test_case dad_count cleanup
 
 dad_basic_head()
 {
@@ -52,6 +53,12 @@ dad_duplicated_head()
 	atf_set "require.progs" "rump_server"
 }
 
+dad_count_head()
+{
+	atf_set "descr" "Tests for IPv6 DAD count behavior"
+	atf_set "require.progs" "rump_server"
+}
+
 setup_server()
 {
 	local sock=$1
@@ -202,6 +209,63 @@ dad_duplicated_body()
 	    rump.ifconfig shmif0
 }
 
+dad_count_test()
+{
+	local pkt=
+	local count=$1
+	local id=$2
+	local target=$3
+
+	#
+	# Set DAD count to $count
+	#
+	atf_check -s exit:0 rump.sysctl -w -q net.inet6.ip6.dad_count=$count
+
+	# Add a new address
+	atf_check -s exit:0 rump.ifconfig shmif0 inet6 $target
+
+	# Waiting for DAD complete
+	atf_check -s exit:0 rump.ifconfig -w 20
+
+	# Check the number of DAD probe packets (Neighbor Solicitation Message)
+	atf_check -s exit:0 sleep 2
+	extract_new_packets > ./out
+	$DEBUG && cat ./out
+	pkt=$(make_ns_pkt_str $id $target)
+	atf_check -s exit:0 -o match:"$count" \
+	    -x "cat ./out |grep '$pkt' | wc -l | tr -d ' '"
+}
+
+dad_count_body()
+{
+	local localip1=fc00::1
+	local localip2=fc00::2
+
+	atf_check -s exit:0 ${inetserver} $SOCKLOCAL
+	export RUMP_SERVER=$SOCKLOCAL
+
+	# Check default value
+	atf_check -s exit:0 -o match:"1" rump.sysctl -n net.inet6.ip6.dad_count
+
+	# Setup interface
+	atf_check -s exit:0 rump.ifconfig shmif0 create
+	atf_check -s exit:0 rump.ifconfig shmif0 linkstr bus1
+	atf_check -s exit:0 rump.ifconfig shmif0 up
+	atf_check -s exit:0 sleep 2
+	rump.ifconfig shmif0 > ./out
+	$DEBUG && cat ./out
+
+	#
+	# Set and test DAD count (count=1)
+	#
+	dad_count_test 1 1 $localip1
+
+	#
+	# Set and test DAD count (count=8)
+	#
+	dad_count_test 8 2 $localip2
+}
+
 cleanup()
 {
 	gdb -ex bt /usr/bin/rump_server rump_server.core
@@ -248,8 +312,16 @@ dad_duplicated_cleanup()
 	cleanup
 }
 
+dad_count_cleanup()
+{
+	$DEBUG && dump_local
+	$DEBUG && shmif_dumpbus -p - bus1 2>/dev/null| tcpdump -n -e -r -
+	env RUMP_SERVER=$SOCKLOCAL rump.halt
+}
+
 atf_init_test_cases()
 {
 	atf_add_test_case dad_basic
 	atf_add_test_case dad_duplicated
+	atf_add_test_case dad_count
 }

Reply via email to