The branch main has been updated by kp:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=12184311c16160464a36ae05b1cd8c5e3c24fbaa

commit 12184311c16160464a36ae05b1cd8c5e3c24fbaa
Author:     Kristof Provost <[email protected]>
AuthorDate: 2021-09-02 13:40:51 +0000
Commit:     Kristof Provost <[email protected]>
CommitDate: 2021-09-08 15:17:59 +0000

    netpfil tests: IPv6 dummynet queue test
    
    Same as the v4 test, but with IPv6.
    
    MFC after:      2 weeks
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
    Differential Revision:  https://reviews.freebsd.org/D31789
---
 tests/sys/netpfil/common/dummynet.sh | 107 +++++++++++++++++++++++++++++++++++
 1 file changed, 107 insertions(+)

diff --git a/tests/sys/netpfil/common/dummynet.sh 
b/tests/sys/netpfil/common/dummynet.sh
index 4b3d01e124eb..7ff9a1e18fdc 100644
--- a/tests/sys/netpfil/common/dummynet.sh
+++ b/tests/sys/netpfil/common/dummynet.sh
@@ -214,10 +214,117 @@ queue_cleanup()
        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
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "[email protected]"

Reply via email to