Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F102898701
D31789.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D31789.diff
View Options
diff --git a/tests/sys/netpfil/common/dummynet.sh b/tests/sys/netpfil/common/dummynet.sh
--- a/tests/sys/netpfil/common/dummynet.sh
+++ b/tests/sys/netpfil/common/dummynet.sh
@@ -214,10 +214,117 @@
firewall_cleanup $1
}
+queue_v6_head()
+{
+ atf_set descr 'Basic queue test'
+ atf_set require.user root
+}
+
+queue_v6_body()
+{
+ fw=$1
+ firewall_init $fw
+ dummynet_init $fw
+
+ epair=$(vnet_mkepair)
+ vnet_mkjail alcatraz ${epair}b
+
+ ifconfig ${epair}a inet6 2001:db8:42::1/64 no_dad up
+ jexec alcatraz ifconfig ${epair}b inet6 2001:db8:42::2 no_dad up
+ jexec alcatraz /usr/sbin/inetd -p inetd-alcatraz.pid \
+ $(atf_get_srcdir)/../pf/echo_inetd.conf
+
+ # Sanity check
+ atf_check -s exit:0 -o ignore ping6 -i .1 -c 3 -s 1200 2001:db8:42::2
+ reply=$(echo "foo" | nc -N 2001:db8:42::2 7)
+ if [ "$reply" != "foo" ];
+ then
+ atf_fail "Echo sanity check failed"
+ fi
+
+ jexec alcatraz dnctl pipe 1 config bw 1MByte/s
+ jexec alcatraz dnctl sched 1 config pipe 1 type wf2q+
+ jexec alcatraz dnctl queue 100 config sched 1 weight 99 mask all
+ jexec alcatraz dnctl queue 200 config sched 1 weight 1 mask all
+
+ firewall_config alcatraz ${fw} \
+ "ipfw" \
+ "ipfw add 1001 queue 100 tcp from 2001:db8:42::2 to any out" \
+ "ipfw add 1000 queue 200 ipv6-icmp from 2001:db8:42::2 to any out" \
+ "ipfw add 1002 allow ip6 from any to any" \
+ "pf" \
+ "pass out proto tcp dnqueue 100" \
+ "pass out proto icmp6 dnqueue 200"
+
+ # Single ping succeeds
+ atf_check -s exit:0 -o ignore ping6 -c 1 2001:db8:42::2
+
+ # Unsaturated TCP succeeds
+ reply=$(echo "foo" | nc -w 5 -N 2001:db8:42::2 7)
+ if [ "$reply" != "foo" ];
+ then
+ atf_fail "Unsaturated echo failed"
+ fi
+
+ # Saturate the link
+ ping6 -f -s 1200 2001:db8:42::2 &
+
+ # Allow this to fill the queue
+ sleep 1
+
+ # TCP should still just pass
+ fails=0
+ for i in `seq 1 3`
+ do
+ result=$(dd if=/dev/zero bs=1024 count=1000 | timeout 3 nc -w 5 -N 2001:db8:42::2 7 | wc -c)
+ if [ $result -ne 1024000 ];
+ then
+ echo "Failed to prioritise TCP traffic. Got only $result bytes"
+ fails=$(( ${fails} + 1 ))
+ fi
+ done
+ if [ ${fails} -gt 0 ];
+ then
+ atf_fail "We failed prioritisation ${fails} times"
+ fi
+
+ # What happens if we prioritise ICMP over TCP?
+ firewall_config alcatraz ${fw} \
+ "ipfw" \
+ "ipfw add 1001 queue 200 tcp from 2001:db8:42::2 to any out" \
+ "ipfw add 1000 queue 100 ipv6-icmp from 2001:db8:42::2 to any out" \
+ "ipfw add 1002 allow ip6 from any to any" \
+ "pf" \
+ "pass out proto tcp dnqueue 200" \
+ "pass out proto icmp6 dnqueue 100"
+
+ fails=0
+ for i in `seq 1 3`
+ do
+ result=$(dd if=/dev/zero bs=1024 count=1000 | timeout 3 nc -w 5 -N 2001:db8:42::2 7 | wc -c)
+ if [ $result -ne 1024000 ];
+ then
+ echo "Failed to prioritise TCP traffic. Got only $result bytes"
+ fails=$(( ${fails} + 1 ))
+ fi
+ done
+ if [ ${fails} -lt 3 ];
+ then
+ atf_fail "We failed reversed prioritisation only ${fails} times."
+ fi
+}
+
+queue_v6_cleanup()
+{
+ firewall_cleanup $1
+}
+
setup_tests \
pipe \
ipfw \
pipe_v6 \
ipfw \
queue \
+ ipfw \
+ queue_v6 \
ipfw
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Nov 19, 11:47 AM (22 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14715949
Default Alt Text
D31789.diff (3 KB)
Attached To
Mode
D31789: netpfil tests: IPv6 dummynet queue test
Attached
Detach File
Event Timeline
Log In to Comment