aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristof Provost <kp@FreeBSD.org>2023-09-05 17:00:49 +0000
committerKristof Provost <kp@FreeBSD.org>2023-09-07 17:05:01 +0000
commit97340b68d18bbbdebf0f73ed900c5a33894061dd (patch)
treec47eeaf828337d1fb1025ce2c77eec55fb1b9ae8
parent4d3af82f78961180149e8a579b481dc382f76eef (diff)
downloadsrc-97340b68d18bbbdebf0f73ed900c5a33894061dd.tar.gz
src-97340b68d18bbbdebf0f73ed900c5a33894061dd.zip
pf tests: extend SCTP tests to test state removal through ASCONF
pf can now mark shut down multihomed connections shutting down. Verify that pf does the right thing. MFC after: 3 weeks Sponsored by: Orange Business Services
-rw-r--r--tests/sys/netpfil/pf/sctp.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/sys/netpfil/pf/sctp.py b/tests/sys/netpfil/pf/sctp.py
index b24d0c414ac8..5e6dca5dd64b 100644
--- a/tests/sys/netpfil/pf/sctp.py
+++ b/tests/sys/netpfil/pf/sctp.py
@@ -342,6 +342,24 @@ class TestSCTP(VnetTestTemplate):
assert re.search(r"all sctp 192.0.2.1:.*192.0.2.3:1234", states)
assert re.search(r"all sctp 192.0.2.10:.*192.0.2.3:1234", states)
+ # Now remove 192.0.2.1 as an address
+ client.bindx("192.0.2.1", False)
+
+ # We can still communicate
+ try:
+ client.send(b"More data", 0)
+ rcvd = self.wait_object(srv_vnet.pipe, 5)
+ print(rcvd)
+ assert rcvd['ppid'] == 0
+ assert rcvd['data'] =="More data"
+ finally:
+ # Debug output
+ ToolsHelper.print_output("/sbin/pfctl -ss -vv")
+
+ # Verify that state is closing
+ states = ToolsHelper.get_output("/sbin/pfctl -ss")
+ assert re.search(r"all sctp 192.0.2.1:.*192.0.2.3:1234.*SHUTDOWN", states)
+
class TestSCTPv6(VnetTestTemplate):
REQUIRED_MODULES = ["sctp", "pf"]
TOPOLOGY = {
@@ -440,3 +458,21 @@ class TestSCTPv6(VnetTestTemplate):
states = ToolsHelper.get_output("/sbin/pfctl -ss")
assert re.search(r"all sctp 2001:db8::1\[.*2001:db8::3\[1234\]", states)
assert re.search(r"all sctp 2001:db8::10\[.*2001:db8::3\[1234\]", states)
+
+ # Now remove 2001:db8::1 as an address
+ client.bindx("2001:db8::1", False)
+
+ # Wecan still communicate
+ try:
+ client.send(b"More data", 0)
+ rcvd = self.wait_object(srv_vnet.pipe, 5)
+ print(rcvd)
+ assert rcvd['ppid'] == 0
+ assert rcvd['data'] == "More data"
+ finally:
+ # Debug output
+ ToolsHelper.print_output("/sbin/pfctl -ss -vv")
+
+ # Verify that the state is closing
+ states = ToolsHelper.get_output("/sbin/pfctl -ss")
+ assert re.search(r"all sctp 2001:db8::1\[.*2001:db8::3\[1234\].*SHUTDOWN", states)