Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F147535967
D53299.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
5 KB
Referenced Files
None
Subscribers
None
D53299.diff
View Options
diff --git a/tests/sys/netinet6/ndp.sh b/tests/sys/netinet6/ndp.sh
--- a/tests/sys/netinet6/ndp.sh
+++ b/tests/sys/netinet6/ndp.sh
@@ -34,6 +34,19 @@
atf_set require.user root
}
+wait_tentative()
+{
+ jail="$1"
+ itf="$2"
+ addr="$3"
+
+ for i in `seq 1 25`; do
+ if [ $(ifconfig -j ${jail} ${itf} inet6 | grep -E "${addr}" | fgrep -c "tentative") = "0" ]; then return; fi
+ sleep 0.2
+ done
+ atf_fail "Timed out while waiting for DAD on ${itf} for '${addr}'"
+}
+
ndp_add_gu_success_body() {
local epair0 jname
@@ -50,9 +63,7 @@
jexec ${jname} ifconfig ${epair0}a inet6 2001:db8::1/64
# wait for DAD to complete
- while [ `jexec ${jname} ifconfig | grep inet6 | grep -c tentative` != "0" ]; do
- sleep 0.1
- done
+ wait_tentative ${jname} ${epair0}a "inet6 fe80:[:0-9a-f]+%${epair0}a"
atf_check jexec ${jname} ndp -s 2001:db8::2 90:10:00:01:02:03
@@ -90,9 +101,7 @@
jexec ${jname} ifconfig ${epair0}a inet6 2001:db8::1/64
# wait for DAD to complete
- while [ `jexec ${jname} ifconfig | grep inet6 | grep -c tentative` != "0" ]; do
- sleep 0.1
- done
+ wait_tentative ${jname} ${epair0}a "inet6 2001:db8::1"
jexec ${jname} ping -c1 -t1 2001:db8::2
@@ -113,9 +122,8 @@
fi
atf_check ${jname} ifconfig ${ifname} up
atf_check ${jname} ifconfig ${ifname} inet6 -ifdisabled
- while ${jname} ifconfig ${ifname} inet6 | grep tentative; do
- sleep 0.1
- done
+ # wait for DAD to complete
+ wait_tentative ${jname} ${ifname} "inet6 fe80:[:0-9a-f]+%${ifname}"
}
ndp_if_lladdr()
@@ -188,9 +196,132 @@
vnet_cleanup
}
+atf_test_case "ndp_lookup_host" "cleanup"
+ndp_lookup_host_head() {
+ atf_set descr 'Test looking up a specific host'
+ atf_set require.user root
+}
+
+ndp_lookup_host_body() {
+
+ vnet_init
+
+ jname="v6t-ndp_lookup_host"
+
+ epair0=$(vnet_mkepair)
+
+ vnet_mkjail ${jname}a ${epair0}a
+ vnet_mkjail ${jname}b ${epair0}b
+
+ ipa=2001:db8::1
+ ipb=2001:db8::2
+
+ atf_check -o ignore \
+ ifconfig -j ${jname}a ${epair0}a inet6 ${ipa}/64
+ atf_check -o ignore \
+ ifconfig -j ${jname}b ${epair0}b inet6 ${ipb}/64
+
+ # get jail b's MAC address
+ eth="$(ifconfig -j ${jname}b ${epair0}b |
+ sed -nE "s/^\tether ([0-9a-f:]*)$/\1/p")"
+
+ # no entry yet
+ atf_check -s exit:1 -o ignore -e match:"\(${ipb}\) -- no entry" \
+ jexec ${jname}a ndp -n ${ipb}
+
+ # now ping jail b from jail a
+ atf_check -o ignore \
+ jexec ${jname}a ping -c1 ${ipb}
+
+ # should be populated
+ atf_check -o match:"${ipb}( +)$eth( +)${epair0}a" \
+ jexec ${jname}a ndp -n ${ipb}
+
+}
+
+ndp_lookup_host_cleanup() {
+ vnet_cleanup
+}
+
+
+atf_test_case "dad" "cleanup"
+dad_head() {
+ atf_set descr 'Test Duplicate Address Detection works'
+ atf_set require.user root
+}
+
+dad_body() {
+
+ vnet_init
+
+ jname="v6t-ndp_dad_host"
+
+ epair0=$(vnet_mkepair)
+
+ vnet_mkjail ${jname}a ${epair0}a
+ vnet_mkjail ${jname}b ${epair0}b
+
+ ip=2001:db8:f00:baa::1
+
+ atf_check ifconfig -j ${jname}a ${epair0}a inet6 -ifdisabled up
+ atf_check -o "match:inet6 fe80:[:0-9a-f]+%${epair0}a prefixlen 64 tentative scopeid" ifconfig -j ${jname}a ${epair0}a
+ atf_check ifconfig -j ${jname}b ${epair0}b inet6 -ifdisabled up
+ atf_check -o "match:inet6 fe80:[:0-9a-f]+%${epair0}b prefixlen 64 tentative scopeid" ifconfig -j ${jname}b ${epair0}b
+ # Wait for DAD of LL addresses
+ wait_tentative ${jname}a ${epair0}a "inet6 fe80:[:0-9a-f]+%${epair0}a"
+ wait_tentative ${jname}b ${epair0}b "inet6 fe80:[:0-9a-f]+%${epair0}b"
+ atf_check -o "match:inet6 fe80:[:0-9a-f]+%${epair0}a prefixlen 64 scopeid" ifconfig -j ${jname}a ${epair0}a
+ atf_check -o "match:inet6 fe80:[:0-9a-f]+%${epair0}b prefixlen 64 scopeid" ifconfig -j ${jname}b ${epair0}b
+ atf_check ifconfig -j ${jname}a ${epair0}a inet6 ${ip}/64
+ atf_check -o "match:inet6 ${ip} prefixlen 64 tentative$" ifconfig -j ${jname}a ${epair0}a
+ wait_tentative ${jname}a ${epair0}a "inet6 ${ip}"
+ atf_check -o "match:inet6 ${ip} prefixlen 64$" ifconfig -j ${jname}a ${epair0}a
+
+ # the jail B ifconfig will trigger DAD and duplicate must be detected
+ atf_check ifconfig -j ${jname}b ${epair0}b inet6 ${ip}/64
+ atf_check -o "match:inet6 ${ip} prefixlen 64 tentative$" ifconfig -j ${jname}b ${epair0}b
+ wait_tentative ${jname}b ${epair0}b "inet6 ${ip}"
+ atf_check -o "match:inet6 ${ip} prefixlen 64 duplicated$" ifconfig -j ${jname}b ${epair0}b
+}
+
+dad_cleanup() {
+ vnet_cleanup
+}
+
+
+atf_test_case "static_temporary" "cleanup"
+static_temporary_head() {
+ atf_set descr 'Test Duplicate Address Detection works'
+ atf_set require.user root
+}
+
+static_temporary_body() {
+
+ vnet_init
+
+ set -x
+ jname="v6t-static_temporary"
+
+ epair0=$(vnet_mkepair)
+
+ vnet_mkjail ${jname} ${epair0}a
+
+ jexec ${jname} ifconfig ${epair0}a inet6 2001:db8::1/64
+
+ atf_check jexec ${jname} ndp -s 2001:db8::2 90:10:00:01:02:03 temp
+ atf_check -o "match:2001:db8::2( +)90:10:00:01:02:03( +)${epair0}a( +)[12][09]m[0-9]{1,2}s( +)" jexec ${jname} ndp -n 2001:db8::2
+}
+
+static_temporary_cleanup() {
+ vnet_cleanup
+}
+
atf_init_test_cases()
{
atf_add_test_case "ndp_add_gu_success"
atf_add_test_case "ndp_del_gu_success"
atf_add_test_case "ndp_slaac_default_route"
+ atf_add_test_case "ndp_lookup_host"
+ atf_add_test_case "dad"
+ atf_add_test_case "static_temporary"
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Mar 12, 5:18 PM (6 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29555840
Default Alt Text
D53299.diff (5 KB)
Attached To
Mode
D53299: Add some tests for sbin/ndp binary
Attached
Detach File
Event Timeline
Log In to Comment