Skip to content
Snippets Groups Projects
Commit 81c4b311 authored by Hoelscher's avatar Hoelscher
Browse files

add testcases for sctp stream reconfiguration events

parent 2803baab
No related branches found
No related tags found
No related merge requests found
--tolerance_usecs=75000
0.0 `sysctl -w net.inet.sctp.ecn_enable=1` 0.0 `sysctl -w net.inet.sctp.ecn_enable=1`
+0.0 `sysctl -w net.inet.sctp.pr_enable=0` +0.0 `sysctl -w net.inet.sctp.pr_enable=0`
+0.0 `sysctl -w net.inet.sctp.asconf_enable=0` +0.0 `sysctl -w net.inet.sctp.asconf_enable=0`
+0.0 `sysctl -w net.inet.sctp.auth_enable=0` +0.0 `sysctl -w net.inet.sctp.auth_disable=1`
+0.0 `sysctl -w net.inet.sctp.reconfig_enable=0` +0.0 `sysctl -w net.inet.sctp.reconfig_enable=0`
+0.0 `sysctl -w net.inet.sctp.nrsack_enable=0`
+0.0 `sysctl -w net.inet.sctp.pktdrop_enable=0`
+0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3 +0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
+0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR) +0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
+0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 +0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
// Check the handshake with an empty(!) cookie // Check the handshake with an empty(!) cookie
+0.1 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress) +0.1 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress)
+0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=0, +0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=0,
...@@ -19,7 +21,9 @@ ...@@ -19,7 +21,9 @@
PARAMETER[type=0xbf11, len=5, val=[0x01]]] PARAMETER[type=0xbf11, len=5, val=[0x01]]]
+0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...] +0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
+0.1 < sctp: COOKIE_ACK[flgs=0] +0.1 < sctp: COOKIE_ACK[flgs=0]
+0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 +0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
// Send some data // Send some data
+0.5 < sctp: HEARTBEAT[flgs=0, HEARTBEAT_INFORMATION[len=9, val=...]]; +0.5 < sctp: HEARTBEAT[flgs=0, HEARTBEAT_INFORMATION[len=9, val=...]];
PAD[flgs=0, len=1300, val=...] PAD[flgs=0, len=1300, val=...]
...@@ -27,14 +31,17 @@ ...@@ -27,14 +31,17 @@
+1.0 write(3, ..., 1000) = 1000 +1.0 write(3, ..., 1000) = 1000
+0.0 > sctp: DATA[flgs=BE, len=1016, tsn=0, sid=0, ssn=0, ppid=0] +0.0 > sctp: DATA[flgs=BE, len=1016, tsn=0, sid=0, ssn=0, ppid=0]
+0.1 < sctp: SACK[flgs=0, cum_tsn=0, a_rwnd=1500, gaps=[], dups=[]] +0.1 < sctp: SACK[flgs=0, cum_tsn=0, a_rwnd=1500, gaps=[], dups=[]]
// Receive some data // Receive some data
+1.0 < sctp: DATA[flgs=BE, len=1016, tsn=3, sid=0, ssn=0, ppid=0] +1.0 < sctp: DATA[flgs=BE, len=1016, tsn=3, sid=0, ssn=0, ppid=0]
+0.0 read(3, ..., 2000) = 1000 +0.0 read(3, ..., 2000) = 1000
+0.0 > sctp: SACK[flgs=..., cum_tsn=3, a_rwnd=..., gaps=..., dups=...] +0.0 > sctp: SACK[flgs=..., cum_tsn=3, a_rwnd=..., gaps=..., dups=...]
// Receive more data, observe a non-delayed SACK // Receive more data, observe a non-delayed SACK
+1.0 < sctp: DATA[flgs=IBE, len=1016, tsn=4, sid=0, ssn=1, ppid=0] +1.0 < sctp: DATA[flgs=IBE, len=1016, tsn=4, sid=0, ssn=1, ppid=0]
+0.0 read(3, ..., 2000) = 1000 +0.0 read(3, ..., 2000) = 1000
+0.0 > sctp: SACK[flgs=0, cum_tsn=4, a_rwnd=..., gaps=..., dups=...] +0.0 > sctp: SACK[flgs=0, cum_tsn=4, a_rwnd=..., gaps=..., dups=...]
// Tear down the association // Tear down the association
+0.0 close(3) = 0 +0.0 close(3) = 0
+0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=4] +0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=4]
......
--tolerance_usecs=100000
+0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
+0.0 setsockopt(3, IPPROTO_SCTP, SCTP_ENABLE_STREAM_RESET, {assoc_id=0, assoc_value=SCTP_ENABLE_CHANGE_ASSOC_REQ}, 8) = 0
+0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_type=SCTP_STREAM_CHANGE_EVENT, se_on=1}, 8) = 0
+0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_type=SCTP_STREAM_CHANGE_EVENT, se_on=1}, [8]) = 0
+0.0 bind(3, ..., ...) = 0
+0.0 listen(3, 1) = 0
+0.0 < sctp: INIT[flgs=0, tag=1, a_rwnd=1500, os=1, is=1, tsn=1,
ECN_CAPABLE[],
SUPPORTED_EXTENSIONS[types=[0x82]],
COOKIE_PRESERVATIVE[incr=12345],
SUPPORTED_ADDRESS_TYPES[types=[IPv4]]]
+0.0 > sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=..., os=..., is=..., tsn=10, ...]
+0.1 < sctp: COOKIE_ECHO[flgs=0, len=..., val=...]
+0.0 > sctp: COOKIE_ACK[flgs=0]
+0.0 accept(3, ..., ...) = 4
+1.0 write(4, ..., 1000) = 1000
* > sctp: DATA[flgs=BE, len=1016, tsn=10, sid=0, ssn=0, ppid=0]
+0.1 < sctp: SACK[flgs=0, cum_tsn=10, a_rwnd=1500, gaps=[], dups=[]]
+1.0 write(4, ..., 1000) = 1000
* > sctp: DATA[flgs=BE, len=1016, tsn=11, sid=0, ssn=1, ppid=0]
+0.0 < sctp: SACK[flgs=0, cum_tsn=11, a_rwnd=1500, gaps=[], dups=[]]
+0.1 < sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0]
* > sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=..., gaps=[], dups=[]]
+0.0 read(4, ..., 1000) = 1000
+0.1 < sctp: DATA[flgs=BE, len=1016, tsn=2, sid=0, ssn=1, ppid=0]
* > sctp: SACK[flgs=0, cum_tsn=2, a_rwnd=..., gaps=[], dups=[]]
+0.0 read(4, ..., 1000) = 1000
+0.0 setsockopt(4, IPPROTO_SCTP, SCTP_ADD_STREAMS, {sas_instrms=0,
sas_outstrms=10}, 8) = 0
+0.0 > sctp: RECONFIG[flgs=0, ADD_OUTGOING_STREAMS[req_sn=10, number_of_new_streams=10]]
+0.0 < sctp: RECONFIG[flgs=0, RECONFIG_RESPONSE[resp_sn=10, result=1]]
+0.2 recvmsg(4, {msg_name(...)=...,
msg_iov(1)=[{iov_base={strchange_type=SCTP_STREAM_CHANGE_EVENT,
strchange_flags=0,
strchange_length=16,
strchange_assoc_id=3,
strchange_instrms=1,
strchange_outstrms=11},
iov_len=1000}],
msg_control(0)=[],
msg_flags=MSG_NOTIFICATION|MSG_EOR}, 0) = 16
+0 close(3) = 0
+0 close(4) = 0
--tolerance_usecs=100000
// Create a non-blocking 1-to-1 style socket
0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
+0.0 fcntl(3, F_GETFL) = 0x02 (flags O_RDWR)
+0.0 fcntl(3, F_SETFL, O_RDWR | O_NONBLOCK) = 0
+0.0 setsockopt(3, IPPROTO_SCTP, SCTP_ENABLE_STREAM_RESET, {assoc_id=3, assoc_value=SCTP_ENABLE_RESET_STREAM_REQ|SCTP_ENABLE_RESET_ASSOC_REQ|SCTP_ENABLE_CHANGE_ASSOC_REQ}, 8) = 0
+0.0 getsockopt(3, IPPROTO_SCTP, SCTP_ENABLE_STREAM_RESET, {assoc_id=3, assoc_value=SCTP_ENABLE_RESET_STREAM_REQ|SCTP_ENABLE_RESET_ASSOC_REQ|SCTP_ENABLE_CHANGE_ASSOC_REQ}, [8]) = 0
+0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_type=SCTP_ASSOC_RESET_EVENT, se_on=1}, 8) = 0
+0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_type=SCTP_ASSOC_RESET_EVENT, se_on=1}, [8]) = 0
// Trigger the active associtation setup
+0.1 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress)
+0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=1, ...]
+0.0 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...], SUPPORTED_EXTENSIONS[types=[0x82]]]
+0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
+0.0 < sctp: COOKIE_ACK[flgs=0]
// Check if the setup was sucessful
+0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
// Generate some traffic so the tsn and ssn increase
+0.0 write(3, ..., 1000) = 1000
+0.0 > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0]
+0.0 < sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=1500, gaps=[], dups=[]]
+0.0 write(3, ..., 1000) = 1000
+0.0 > sctp: DATA[flgs=BE, len=1016, tsn=2, sid=0, ssn=1, ppid=0]
+0.0 < sctp: SACK[flgs=0, cum_tsn=2, a_rwnd=1500, gaps=[], dups=[]]
// Reset Stream 0
+0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RESET_ASSOC, [3], 4) = 0
+0.0 > sctp: RECONFIG[flgs=0, SSN_TSN_RESET[req_sn=1]]
+0.0 < sctp: RECONFIG[flgs=0, RECONFIG_RESPONSE[resp_sn=1, result=1, sender_next_tsn=1, receiver_next_tsn=1]]
+0.2 recvmsg(3, {msg_name(...)=...,
msg_iov(1)=[{iov_base={assocreset_type=SCTP_ASSOC_RESET_EVENT,
assocreset_flags=0,
assocreset_length=20,
assocreset_assoc_id=3,
assocreset_local_tsn=1,
assocreset_remote_tsn=2},
iov_len=1000}],
msg_control(0)=[],
msg_flags=MSG_NOTIFICATION|MSG_EOR}, 0) = 20
+1.0 close(3) = 0
--tolerance_usecs=100000
// Create a non-blocking 1-to-1 style socket
0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
+0.0 fcntl(3, F_GETFL) = 0x02 (flags O_RDWR)
+0.0 fcntl(3, F_SETFL, O_RDWR | O_NONBLOCK) = 0
+0.0 setsockopt(3, IPPROTO_SCTP, SCTP_ENABLE_STREAM_RESET, {assoc_id=3, assoc_value=SCTP_ENABLE_RESET_STREAM_REQ}, 8) = 0
+0.0 getsockopt(3, IPPROTO_SCTP, SCTP_ENABLE_STREAM_RESET, {assoc_id=3, assoc_value=SCTP_ENABLE_RESET_STREAM_REQ}, [8]) = 0
+0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_type=SCTP_STREAM_RESET_EVENT, se_on=1}, 8) = 0
+0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_type=SCTP_STREAM_RESET_EVENT, se_on=1}, [8]) = 0
// Trigger the active associtation setup
+0.1 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress)
+0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=1, ...]
+0.0 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...], SUPPORTED_EXTENSIONS[types=[0x82]]]
+0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
+0.0 < sctp: COOKIE_ACK[flgs=0]
// Check if the setup was sucessful
+0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
// Generate some traffic so the tsn and ssn increase
+0.0 write(3, ..., 1000) = 1000
+0.0 > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0]
+0.0 < sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=1500, gaps=[], dups=[]]
+0.0 write(3, ..., 1000) = 1000
+0.0 > sctp: DATA[flgs=BE, len=1016, tsn=2, sid=0, ssn=1, ppid=0]
+0.0 < sctp: SACK[flgs=0, cum_tsn=2, a_rwnd=1500, gaps=[], dups=[]]
// Reset Stream 0
+0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RESET_STREAMS, {srs_assoc_id=3,
srs_flags=SCTP_STREAM_RESET_OUTGOING,
srs_number_streams=0,
srs_stream_list=[]}, 8) = 0
+0.0 > sctp: RECONFIG[flgs=0, OUTGOING_SSN_RESET[req_sn=1, resp_sn=0, last_tsn=2, sids=[]]]
+0.0 < sctp: RECONFIG[flgs=0, RECONFIG_RESPONSE[resp_sn=1, result=1]]
+0.2 recvmsg(3, {msg_name(...)=...,
msg_iov(1)=[{iov_base={strreset_type=SCTP_STREAM_RESET_EVENT,
strreset_flags=SCTP_STREAM_RESET_OUTGOING,
strreset_length=12,
strreset_assoc_id=3,
strreset_stream_list=[]},
iov_len=1000}],
msg_control(0)=[],
msg_flags=MSG_NOTIFICATION|MSG_EOR}, 0) = 12
+1.0 close(3) = 0
+0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3 0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
+0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR) +0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
+0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0 +0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
// Check the handshake with an empty(!) cookie // Check the handshake with an empty(!) cookie
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment