Page MenuHomeFreeBSD

D53299.diff
No OneTemporary

D53299.diff

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

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)

Event Timeline