1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-17 10:26:15 +00:00

frag6 test cases: check more counters, wait for expiry

When done with tests check that both the per-VNET and the global-fragmented-
packets-in-system counters are zero to make sure we do not leak counters or
queue entries.

This implies that for all test cases we either have to check for the ICMPv6
packet sent in case of TLL=0 expiry (if it is sent) or sleep at least long
enough for the TTL to expire for all packets (e.g., fragments where we do not
have the off=0 packet).

This also means that statistics are now updated to include all the expired
packets.

There are cases when we do not check for counters to be zero and this is
when testing VNET teardown to behave properly and not panic, when we are
intentionally leaving fragments in the system.

MFC after:	3 weeks
Sponsored by:	Netflix
This commit is contained in:
Bjoern A. Zeeb 2019-10-24 20:08:33 +00:00
parent 4a91aa8fc9
commit 4527b28baf
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=354045
23 changed files with 275 additions and 32 deletions

View File

@ -52,6 +52,16 @@ frag6_01_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.

View File

@ -52,6 +52,16 @@ frag6_02_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.

View File

@ -82,20 +82,21 @@ def main():
########################################################################
#
# (1) Atomic fragment.
# Atomic fragment.
#
# A: Nothing listening on UDP port.
# R: ICMPv6 dst unreach, unreach port.
#
ip6f01 = sp.Ether() / \
sp.IPv6(src=args.src[0], dst=args.to[0]) / \
sp.IPv6ExtHdrFragment(offset=0, m=0, id=1) / \
sp.IPv6ExtHdrFragment(offset=0, m=0, id=3) / \
sp.UDP(dport=3456, sport=6543)
if args.debug :
ip6f01.display()
sp.sendp(ip6f01, iface=args.sendif[0], verbose=False)
sleep(0.10)
sniffer.setEnd()
sniffer.join()
if not sniffer.foundCorrectPacket:
sys.exit(1)

View File

@ -52,6 +52,16 @@ frag6_03_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.

View File

@ -52,6 +52,16 @@ frag6_04_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.

View File

@ -76,6 +76,8 @@ def main():
ip6f01.display()
sp.sendp(ip6f01, iface=args.sendif[0], verbose=False)
# Wait for possible expiry to happen.
sleep(75)
sys.exit(0)
if __name__ == '__main__':

View File

@ -47,6 +47,17 @@ frag6_05_check_stats_0() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check that the sysctl is set to what we expect.
#
@ -229,6 +240,16 @@ frag6_05_check_stats_1() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check that the sysctl is set to what we expect.
@ -272,7 +293,7 @@ EOF
<dropped-bad-version>0</dropped-bad-version>
<received-fragments>20</received-fragments>
<dropped-fragment>10</dropped-fragment>
<dropped-fragment-after-timeout>0</dropped-fragment-after-timeout>
<dropped-fragment-after-timeout>10</dropped-fragment-after-timeout>
<dropped-fragments-overflow>0</dropped-fragments-overflow>
<atomic-fragments>0</atomic-fragments>
<reassembled-packets>0</reassembled-packets>
@ -300,7 +321,7 @@ EOF
# XXX-TODO check output histogram (just too hard to parse [no multi-line-grep])
#
cat <<EOF > ${HOME}/filter-${jname}.txt
<icmp6-calls>0</icmp6-calls>
<icmp6-calls>10</icmp6-calls>
<no-route>0</no-route>
<admin-prohibited>0</admin-prohibited>
<beyond-scope>0</beyond-scope>
@ -308,7 +329,7 @@ EOF
<port-unreachable>0</port-unreachable>
<packet-too-big>0</packet-too-big>
<time-exceed-transmit>0</time-exceed-transmit>
<time-exceed-reassembly>0</time-exceed-reassembly>
<time-exceed-reassembly>10</time-exceed-reassembly>
<bad-header>0</bad-header>
<bad-next-header>0</bad-next-header>
<bad-option>0</bad-option>
@ -372,10 +393,10 @@ EOF
<received-echo-replies>0</received-echo-replies>
<received-router-solicitation>0</received-router-solicitation>
<received-router-advertisement>0</received-router-advertisement>
<sent-errors>0</sent-errors>
<sent-errors>10</sent-errors>
<sent-destination-unreachable>0</sent-destination-unreachable>
<sent-admin-prohibited>0</sent-admin-prohibited>
<sent-time-exceeded>0</sent-time-exceeded>
<sent-time-exceeded>10</sent-time-exceeded>
<sent-bad-parameter>0</sent-bad-parameter>
<sent-packet-too-big>0</sent-packet-too-big>
<sent-echo-requests>0</sent-echo-requests>

View File

@ -61,6 +61,17 @@ frag6_06_check_stats_0() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check that the sysctl is set to what we expect.
#

View File

@ -54,6 +54,25 @@ def check_icmp6_error(args, packet):
#icmp6.display()
return True
def check_icmp6_error_2(args, packet):
ip6 = packet.getlayer(sp.IPv6)
if not ip6:
return False
oip6 = sp.IPv6(src=args.src[0], dst=args.to[0])
if ip6.dst != oip6.src:
return False
icmp6 = packet.getlayer(sp.ICMPv6TimeExceeded)
if not icmp6:
return False
# ICMP6_TIME_EXCEED_REASSEMBLY 1
if icmp6.code != 1:
return False
# Should we check the payload as well?
# We are running in a very isolated environment and nothing else
# should trigger an ICMPv6 Time Exceeded / Frag reassembly so leave it.
#icmp6.display()
return True
def main():
parser = argparse.ArgumentParser("frag6.py",
description="IPv6 fragementation test tool")
@ -78,6 +97,7 @@ def main():
# Start sniffing on recvif
sniffer = Sniffer(args, check_icmp6_error)
sniffer2 = Sniffer(args, check_icmp6_error_2)
########################################################################
@ -88,6 +108,7 @@ def main():
#
# A: Reassembly failure.
# R: ICMPv6 param prob, param header.
# R: ICMPv6 timeout (1st frag, off=0)
#
data = "6" * 1280
ip6f01 = \
@ -144,6 +165,13 @@ def main():
if not sniffer.foundCorrectPacket:
sys.exit(1)
# Wait for expiry from first test run.
sleep(75)
sniffer2.setEnd()
sniffer2.join()
if not sniffer2.foundCorrectPacket:
sys.exit(1)
sys.exit(0)
if __name__ == '__main__':

View File

@ -47,6 +47,17 @@ frag6_07_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.
#
@ -81,7 +92,7 @@ EOF
<dropped-bad-version>0</dropped-bad-version>
<received-fragments>3</received-fragments>
<dropped-fragment>0</dropped-fragment>
<dropped-fragment-after-timeout>0</dropped-fragment-after-timeout>
<dropped-fragment-after-timeout>1</dropped-fragment-after-timeout>
<dropped-fragments-overflow>0</dropped-fragments-overflow>
<atomic-fragments>0</atomic-fragments>
<reassembled-packets>0</reassembled-packets>
@ -109,7 +120,7 @@ EOF
# XXX-TODO check output histogram (just too hard to parse [no multi-line-grep])
#
cat <<EOF > ${HOME}/filter-${jname}.txt
<icmp6-calls>2</icmp6-calls>
<icmp6-calls>3</icmp6-calls>
<no-route>0</no-route>
<admin-prohibited>0</admin-prohibited>
<beyond-scope>0</beyond-scope>
@ -117,7 +128,7 @@ EOF
<port-unreachable>0</port-unreachable>
<packet-too-big>0</packet-too-big>
<time-exceed-transmit>0</time-exceed-transmit>
<time-exceed-reassembly>0</time-exceed-reassembly>
<time-exceed-reassembly>1</time-exceed-reassembly>
<bad-header>2</bad-header>
<bad-next-header>0</bad-next-header>
<bad-option>0</bad-option>
@ -181,10 +192,10 @@ EOF
<received-echo-replies>0</received-echo-replies>
<received-router-solicitation>0</received-router-solicitation>
<received-router-advertisement>0</received-router-advertisement>
<sent-errors>2</sent-errors>
<sent-errors>3</sent-errors>
<sent-destination-unreachable>0</sent-destination-unreachable>
<sent-admin-prohibited>0</sent-admin-prohibited>
<sent-time-exceeded>0</sent-time-exceeded>
<sent-time-exceeded>1</sent-time-exceeded>
<sent-bad-parameter>2</sent-bad-parameter>
<sent-packet-too-big>0</sent-packet-too-big>
<sent-echo-requests>0</sent-echo-requests>

View File

@ -54,6 +54,26 @@ def check_icmp6_error(args, packet):
#icmp6.display()
return True
def check_icmp6_error_2(args, packet):
ip6 = packet.getlayer(sp.IPv6)
if not ip6:
return False
oip6 = sp.IPv6(src=args.src[0], dst=args.to[0])
if ip6.dst != oip6.src:
return False
icmp6 = packet.getlayer(sp.ICMPv6TimeExceeded)
if not icmp6:
return False
# ICMP6_TIME_EXCEED_REASSEMBLY 1
if icmp6.code != 1:
return False
# Should we check the payload as well?
# We are running in a very isolated environment and nothing else
# should trigger an ICMPv6 Time Exceeded / Frag reassembly so leave it.
#icmp6.display()
return True
def main():
parser = argparse.ArgumentParser("frag6.py",
description="IPv6 fragementation test tool")
@ -78,15 +98,20 @@ def main():
# Start sniffing on recvif
sniffer = Sniffer(args, check_icmp6_error)
sniffer2 = Sniffer(args, check_icmp6_error_2)
########################################################################
#
# A fragment with payload and offset set to add up to >64k when
# another frag with offset=0 arrives and has an unfrag part.
# This is us checking for all fragments queued already when the
# one with off=0 arrives. Note: unless the off=0 has its own problem
# it will be queued and off!=0 ones might be expunged with param prob.
#
# A: Reassembly failure (timeout) after
# R: ICMPv6 param prob, param header (earlier).
# A: Reassembly failure, timeout after
# R: ICMPv6 param prob, param header (1st frag)
# R: ICMPv6 time exceeded (2nd frag, as off=0)
#
data = "6" * 15
ip6f01 = \
@ -115,6 +140,11 @@ def main():
sniffer.join()
if not sniffer.foundCorrectPacket:
sys.exit(1)
sleep(75)
sniffer2.setEnd()
sniffer2.join()
if not sniffer2.foundCorrectPacket:
sys.exit(1)
sys.exit(0)

View File

@ -47,6 +47,17 @@ frag6_08_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.
#
@ -81,7 +92,7 @@ EOF
<dropped-bad-version>0</dropped-bad-version>
<received-fragments>2</received-fragments>
<dropped-fragment>0</dropped-fragment>
<dropped-fragment-after-timeout>0</dropped-fragment-after-timeout>
<dropped-fragment-after-timeout>1</dropped-fragment-after-timeout>
<dropped-fragments-overflow>0</dropped-fragments-overflow>
<atomic-fragments>0</atomic-fragments>
<reassembled-packets>0</reassembled-packets>
@ -109,7 +120,7 @@ EOF
# XXX-TODO check output histogram (just too hard to parse [no multi-line-grep])
#
cat <<EOF > ${HOME}/filter-${jname}.txt
<icmp6-calls>1</icmp6-calls>
<icmp6-calls>2</icmp6-calls>
<no-route>0</no-route>
<admin-prohibited>0</admin-prohibited>
<beyond-scope>0</beyond-scope>
@ -117,7 +128,7 @@ EOF
<port-unreachable>0</port-unreachable>
<packet-too-big>0</packet-too-big>
<time-exceed-transmit>0</time-exceed-transmit>
<time-exceed-reassembly>0</time-exceed-reassembly>
<time-exceed-reassembly>1</time-exceed-reassembly>
<bad-header>1</bad-header>
<bad-next-header>0</bad-next-header>
<bad-option>0</bad-option>
@ -181,10 +192,10 @@ EOF
<received-echo-replies>0</received-echo-replies>
<received-router-solicitation>0</received-router-solicitation>
<received-router-advertisement>0</received-router-advertisement>
<sent-errors>1</sent-errors>
<sent-errors>2</sent-errors>
<sent-destination-unreachable>0</sent-destination-unreachable>
<sent-admin-prohibited>0</sent-admin-prohibited>
<sent-time-exceeded>0</sent-time-exceeded>
<sent-time-exceeded>1</sent-time-exceeded>
<sent-bad-parameter>1</sent-bad-parameter>
<sent-packet-too-big>0</sent-packet-too-big>
<sent-echo-requests>0</sent-echo-requests>

View File

@ -52,6 +52,16 @@ frag6_09_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.

View File

@ -72,6 +72,8 @@ def main():
sp.sendp(ip6f01, iface=args.sendif[0], verbose=False)
# We do not generate ICMPv6 for non-off=0-segments.
# Wait for expiry.
sleep(75)
sys.exit(0)

View File

@ -52,6 +52,16 @@ frag6_10_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.
@ -77,8 +87,8 @@ EOF
#
# Check selection of global IPv6 stats.
# We do not seem to sent a timeout ICMPv6 for this one?
# No, as it is not an off=0 segment.
# We do not sent a timeout ICMPv6 for this one
# as it is not an off=0 segment.
#
cat <<EOF > ${HOME}/filter-${jname}.txt
<dropped-below-minimum-size>0</dropped-below-minimum-size>
@ -87,7 +97,7 @@ EOF
<dropped-bad-version>0</dropped-bad-version>
<received-fragments>1</received-fragments>
<dropped-fragment>0</dropped-fragment>
<dropped-fragment-after-timeout>0</dropped-fragment-after-timeout>
<dropped-fragment-after-timeout>1</dropped-fragment-after-timeout>
<dropped-fragments-overflow>0</dropped-fragments-overflow>
<atomic-fragments>0</atomic-fragments>
<reassembled-packets>0</reassembled-packets>

View File

@ -52,6 +52,16 @@ frag6_11_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.

View File

@ -52,6 +52,16 @@ frag6_12_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.

View File

@ -114,6 +114,8 @@ def main():
sp.sendp(ip6f01, iface=args.sendif[0], verbose=False)
sp.sendp(ip6f02, iface=args.sendif[0], verbose=False)
# Wait for expiry.
sleep(75)
sys.exit(0)
if __name__ == '__main__':

View File

@ -52,6 +52,16 @@ frag6_13_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.
@ -85,7 +95,7 @@ EOF
<dropped-bad-version>0</dropped-bad-version>
<received-fragments>4</received-fragments>
<dropped-fragment>2</dropped-fragment>
<dropped-fragment-after-timeout>0</dropped-fragment-after-timeout>
<dropped-fragment-after-timeout>2</dropped-fragment-after-timeout>
<dropped-fragments-overflow>0</dropped-fragments-overflow>
<atomic-fragments>0</atomic-fragments>
<reassembled-packets>0</reassembled-packets>
@ -112,7 +122,7 @@ EOF
# Check selection of global ICMPv6 stats.
#
cat <<EOF > ${HOME}/filter-${jname}.txt
<icmp6-calls>0</icmp6-calls>
<icmp6-calls>2</icmp6-calls>
<no-route>0</no-route>
<admin-prohibited>0</admin-prohibited>
<beyond-scope>0</beyond-scope>
@ -120,7 +130,7 @@ EOF
<port-unreachable>0</port-unreachable>
<packet-too-big>0</packet-too-big>
<time-exceed-transmit>0</time-exceed-transmit>
<time-exceed-reassembly>0</time-exceed-reassembly>
<time-exceed-reassembly>2</time-exceed-reassembly>
<bad-header>0</bad-header>
<bad-next-header>0</bad-next-header>
<bad-option>0</bad-option>
@ -184,10 +194,10 @@ EOF
<received-echo-replies>0</received-echo-replies>
<received-router-solicitation>0</received-router-solicitation>
<received-router-advertisement>0</received-router-advertisement>
<sent-errors>0</sent-errors>
<sent-errors>2</sent-errors>
<sent-destination-unreachable>0</sent-destination-unreachable>
<sent-admin-prohibited>0</sent-admin-prohibited>
<sent-time-exceeded>0</sent-time-exceeded>
<sent-time-exceeded>2</sent-time-exceeded>
<sent-bad-parameter>0</sent-bad-parameter>
<sent-packet-too-big>0</sent-packet-too-big>
<sent-echo-requests>0</sent-echo-requests>

View File

@ -129,6 +129,8 @@ def main():
sp.sendp(ip6f01, iface=args.sendif[0], verbose=False)
sp.sendp(ip6f02, iface=args.sendif[0], verbose=False)
# Wait for expiry.
sleep(75)
sys.exit(0)
if __name__ == '__main__':

View File

@ -52,6 +52,16 @@ frag6_14_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.
@ -85,7 +95,7 @@ EOF
<dropped-bad-version>0</dropped-bad-version>
<received-fragments>6</received-fragments>
<dropped-fragment>2</dropped-fragment>
<dropped-fragment-after-timeout>0</dropped-fragment-after-timeout>
<dropped-fragment-after-timeout>4</dropped-fragment-after-timeout>
<dropped-fragments-overflow>0</dropped-fragments-overflow>
<atomic-fragments>0</atomic-fragments>
<reassembled-packets>0</reassembled-packets>
@ -112,7 +122,7 @@ EOF
# Check selection of global ICMPv6 stats.
#
cat <<EOF > ${HOME}/filter-${jname}.txt
<icmp6-calls>0</icmp6-calls>
<icmp6-calls>1</icmp6-calls>
<no-route>0</no-route>
<admin-prohibited>0</admin-prohibited>
<beyond-scope>0</beyond-scope>
@ -120,7 +130,7 @@ EOF
<port-unreachable>0</port-unreachable>
<packet-too-big>0</packet-too-big>
<time-exceed-transmit>0</time-exceed-transmit>
<time-exceed-reassembly>0</time-exceed-reassembly>
<time-exceed-reassembly>1</time-exceed-reassembly>
<bad-header>0</bad-header>
<bad-next-header>0</bad-next-header>
<bad-option>0</bad-option>
@ -184,10 +194,10 @@ EOF
<received-echo-replies>0</received-echo-replies>
<received-router-solicitation>0</received-router-solicitation>
<received-router-advertisement>0</received-router-advertisement>
<sent-errors>0</sent-errors>
<sent-errors>1</sent-errors>
<sent-destination-unreachable>0</sent-destination-unreachable>
<sent-admin-prohibited>0</sent-admin-prohibited>
<sent-time-exceeded>0</sent-time-exceeded>
<sent-time-exceeded>1</sent-time-exceeded>
<sent-bad-parameter>0</sent-bad-parameter>
<sent-packet-too-big>0</sent-packet-too-big>
<sent-echo-requests>0</sent-echo-requests>

View File

@ -61,6 +61,17 @@ frag6_15_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check that the sysctl is set to what we expect.
#

View File

@ -48,6 +48,17 @@ frag6_16_check_stats() {
# The Python script has to wait for this already to get the ICMPv6
# hence we do not sleep here anymore.
nf=`jexec ${jname} sysctl -n net.inet6.ip6.frag6_nfragpackets`
case ${nf} in
0) break ;;
*) atf_fail "VNET frag6_nfragpackets not 0 but: ${nf}" ;;
esac
nf=`sysctl -n net.inet6.ip6.frag6_nfrags`
case ${nf} in
0) break ;;
*) atf_fail "Global frag6_nfrags not 0 but: ${nf}" ;;
esac
#
# Check selection of global UDP stats.
#