diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_bindx/sctp_bindx.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_bindx/sctp_bindx.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..664ca300e40758a088790ed15a7f6759908a762e
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_bindx/sctp_bindx.pkt
@@ -0,0 +1,6 @@
+
+ 0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
+
++0.0 sctp_bindx(3, [...], 1, SCTP_BINDX_ADD_ADDR) = 0
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_connectx/sctp_connectx.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_connectx/sctp_connectx.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..8e33925643afae0accb16042ac8dbc7cc6ab48eb
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_connectx/sctp_connectx.pkt
@@ -0,0 +1,17 @@
+
+ 0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
+
++0.0 sctp_bindx(3, [...], 1, SCTP_BINDX_ADD_ADDR) = 0
+
+// Check the handshake with an empty(!) cookie
++0.1 sctp_connectx(3, [...], 1, [3]) = 0
++0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=1, ...]
++0.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=16, is=16, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
+
++0.0 < sctp: SHUTDOWN[flgs=0, cum_tsn=0]
+*    > sctp: SHUTDOWN_ACK[flgs=0]
++0.0 < sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_getladdrs/sctp_getladdrs.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_getladdrs/sctp_getladdrs.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..96dba972178a72aaa935c382fa41ffb925bd08df
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_getladdrs/sctp_getladdrs.pkt
@@ -0,0 +1,19 @@
+
+ 0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
+
++0.0 sctp_bindx(3, [...], 1, SCTP_BINDX_ADD_ADDR) = 0
+
+// Check the handshake with an empty(!) cookie
++0.1 sctp_connectx(3, [...], 1, [3]) = 0
++0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=1, ...]
++0.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=16, is=16, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
+
++0.0 sctp_getladdrs(3, 3, [...]) = 1
++0.0 sctp_freeladdrs([...]) = 0
+
++0.0 sctp_getladdrs(3, 3, [{sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("192.168.0.1")}]) = 1
++0.0 sctp_freeladdrs([...]) = 0
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_getpaddrs/sctp_getpaddrs.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_getpaddrs/sctp_getpaddrs.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..eeec01d894c7558d5e3dec9fc859c56d37887b5a
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_getpaddrs/sctp_getpaddrs.pkt
@@ -0,0 +1,19 @@
+
+ 0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
+
++0.0 sctp_bindx(3, [...], 1, SCTP_BINDX_ADD_ADDR) = 0
+
+// Check the handshake with an empty(!) cookie
++0.1 sctp_connectx(3, [...], 1, [3]) = 0
++0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=1, ...]
++0.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=16, is=16, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
+
++0.0 sctp_getpaddrs(3, 3, [...]) = 1
++0.0 sctp_freepaddrs([...]) = 0
+
++0.0 sctp_getpaddrs(3, 3, [{sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("192.0.2.1")}]) = 1
++0.0 sctp_freepaddrs([...]) = 0
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_peeloff/sctp_peeloff.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_peeloff/sctp_peeloff.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..de7c9edfe1119689b45e514f6427d0e58c4944d3
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_peeloff/sctp_peeloff.pkt
@@ -0,0 +1,15 @@
+
+ 0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
+
++0.0 sctp_bindx(3, [...], 1, SCTP_BINDX_ADD_ADDR) = 0
+
+// Check the handshake with an empty(!) cookie
++0.1 sctp_connectx(3, [...], 1, [3]) = 0
++0.0 > sctp: INIT[flgs=0, tag=1, a_rwnd=..., os=..., is=..., tsn=1, ...]
++0.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=16, is=16, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
+
++0.0 sctp_peeloff(3, 3) = 4
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_1.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_1.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..569fae58952a350ebbbf755449b608e449e90305
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_1.pkt
@@ -0,0 +1,20 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
++0.0 < 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 sctp_recvmsg(3, ..., 1000, ..., ..., ..., MSG_EOR) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=1]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_2.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..be3e3314acdb8ce52ec672ac92986b51858c1e29
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_2.pkt
@@ -0,0 +1,28 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
++0.0 < sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=1234]
+*    > sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=..., gaps=[], dups=[]]
++0.0 sctp_recvmsg(3, ..., 1000, ..., ..., {sinfo_stream=0,
+                                           sinfo_ssn=...,
+                                           sinfo_flags=0,
+                                           sinfo_ppid=htonl(1234),
+                                           sinfo_context=0,
+                                           sinfo_timetolive=0,
+                                           sinfo_tsn=1,
+                                           sinfo_cumtsn=1,
+                                           sinfo_assoc_id=...}, 8) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=1]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_3.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_3.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..36b5c445b31e92b5e51dd2a140fec42a4b27a804
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_3.pkt
@@ -0,0 +1,49 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
++0.0 < 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 sctp_recvmsg(3, ..., 1000,
+                  {sa_family=AF_INET,
+                   sin_port=htons(8080),
+                   sin_addr=inet_addr("192.0.2.1")},
+                  16,
+                  {sinfo_stream=0,
+                   sinfo_ssn=0,
+                   sinfo_flags=0,
+                   sinfo_ppid=htonl(0),
+                   sinfo_context=0,
+                   sinfo_timetolive=0,
+                   sinfo_tsn=1,
+                   sinfo_cumtsn=1,
+                   sinfo_assoc_id=...}, MSG_EOR) = 1000
+
++0.0 < 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 sctp_recvmsg(3, ..., 1000,
+                  {sa_family=AF_INET,
+                   sin_port=htons(8080),
+                   sin_addr=inet_addr("192.0.2.1")},
+                  16,
+                  {sinfo_stream=0,
+                   sinfo_ssn=1,
+                   sinfo_flags=0,
+                   sinfo_ppid=htonl(0),
+                   sinfo_context=0,
+                   sinfo_timetolive=0,
+                   sinfo_tsn=2,
+                   sinfo_cumtsn=2}, MSG_EOR) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=2]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_1.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_1.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..85825263004432971c20b95b5f656d77177cf4af
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_1.pkt
@@ -0,0 +1,21 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
+//base test
++0.0 < 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 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_EOR]) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=1]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_2.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..0eea4a1950d98143386dfd4657f32f13eb333675
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_2.pkt
@@ -0,0 +1,23 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
++0.0 < 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 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, {sa_family=AF_INET,
+						       sin_port=htons(8080),
+						       sin_addr=inet_addr("192.0.2.1")},
+	        16, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_EOR]) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=1]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_3.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_3.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..71ecfe4c913f80270b682279aa0e30b000de70cd
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_3.pkt
@@ -0,0 +1,20 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
++0.0 < 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 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, NULL, 0, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_EOR]) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=1]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_4.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_4.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..3742f14891cb6089af9c54c1e323aee4419368e8
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_4.pkt
@@ -0,0 +1,31 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
+//base SCTP_RECVV_RCVINFO
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVRCVINFO, [1], 4) = 0
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVNXTINFO, [0], 4) = 0
++0.0 < sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=123]
+*    > sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=..., gaps=[], dups=[]]
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {rcv_sid=0,
+								rcv_ssn=0,
+								rcv_flags=0,
+								rcv_ppid=htonl(123),
+								rcv_tsn=1,
+								rcv_cumtsn=1,
+								rcv_context=0, 
+								rcv_assoc_id=...},
+		[28], [SCTP_RECVV_RCVINFO], [MSG_EOR]) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=1]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_5.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_5.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..af38f796f0bb7a086457b45cd4303c8cebd252d7
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_5.pkt
@@ -0,0 +1,31 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
+//base SCTP_RECVV_NXTINFO
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVRCVINFO, [0], 4) = 0
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVNXTINFO, [1], 4) = 0
++0.0 < 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 < sctp: DATA[flgs=BE, len=1016, tsn=2, sid=0, ssn=1, ppid=10]
+*    > sctp: SACK[flgs=0, cum_tsn=2, a_rwnd=..., gaps=[], dups=[]]
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {nxt_sid=0,
+								nxt_flags=32,
+								nxt_ppid=htonl(10),
+								nxt_length=1000,
+								nxt_assoc_id=3},
+	[16], [SCTP_RECVV_NXTINFO], [MSG_EOR]) = 1000
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, NULL, [0], [0], [MSG_EOR]) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=2]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_6.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_6.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..d68c13f82fe03fed73763855810895eb360b0870
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_6.pkt
@@ -0,0 +1,55 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
+//base SCTP_RECVV_RN
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVRCVINFO, [1], 4) = 0
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVNXTINFO, [1], 4) = 0
++0.0 < 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 < sctp: DATA[flgs=BE, len=1016, tsn=2, sid=0, ssn=1, ppid=10]
+*    > sctp: SACK[flgs=0, cum_tsn=2, a_rwnd=..., gaps=[], dups=[]]
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {recvv_rcvinfo={rcv_sid=0,
+									       rcv_ssn=0,
+									       rcv_flags=0,
+									       rcv_ppid=htonl(0),
+									       rcv_tsn=1,
+									       rcv_cumtsn=2,
+									       rcv_context=0,
+									       rcv_assoc_id=3},
+								recvv_nxtinfo={nxt_sid=0,
+									       nxt_flags=32,
+									       nxt_ppid=htonl(10),
+									       nxt_length=1000,
+									       nxt_assoc_id=3}},
+		[44], [SCTP_RECVV_RN], [MSG_EOR]) = 1000
+
++0.0 < sctp: DATA[flgs=BE, len=1016, tsn=3, sid=0, ssn=2, ppid=11]
+*    > sctp: SACK[flgs=0, cum_tsn=3, a_rwnd=..., gaps=[], dups=[]]
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {recvv_rcvinfo={rcv_sid=0,
+									       rcv_ssn=1,
+									       rcv_flags=0,
+									       rcv_ppid=htonl(10),
+									       rcv_tsn=2,
+									       rcv_cumtsn=3,
+									       rcv_context=0},
+								recvv_nxtinfo={nxt_sid=0,
+									       nxt_flags=32,
+									       nxt_ppid=htonl(11),
+									       nxt_length=1000}},
+		[44],[SCTP_RECVV_RN], [MSG_EOR]) = 1000
+
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, NULL ,[0],[SCTP_RECVV_NOINFO], [MSG_EOR]) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=3]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_7.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_7.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..0d2620581f980450a7e79605480ea1f3ca7699fb
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_7.pkt
@@ -0,0 +1,46 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVRCVINFO, [1], 4) = 0
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RECVNXTINFO, [1], 4) = 0
+
++0.0 < sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=10]
+*    > sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=..., gaps=[], dups=[]]
++0.0 < sctp: DATA[flgs=BE, len=1016, tsn=2, sid=0, ssn=1, ppid=10]
+*    > sctp: SACK[flgs=0, cum_tsn=2, a_rwnd=..., gaps=[], dups=[]]
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {recvv_rcvinfo={rcv_sid=0,
+									       rcv_ssn=0,
+									       rcv_flags=0,
+									       rcv_ppid=htonl(10),
+									       rcv_tsn=1,
+									       rcv_cumtsn=2,
+									       rcv_context=0},
+								recvv_nxtinfo=...},
+		[44], [SCTP_RECVV_RN], [MSG_EOR]) = 1000
+
+
++0.0 < sctp: DATA[flgs=BE, len=1016, tsn=3, sid=0, ssn=2, ppid=10]
+*    > sctp: SACK[flgs=0, cum_tsn=3, a_rwnd=..., gaps=[], dups=[]]
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, {recvv_rcvinfo=...,
+								recvv_nxtinfo={nxt_sid=0,
+									       nxt_flags=32,
+									       nxt_ppid=htonl(10),
+									       nxt_length=1000,
+									       nxt_assoc_id=3}},
+		[44], [SCTP_RECVV_RN], [8]) = 1000
+
++0.0 sctp_recvv(3, [{iov_base=..., iov_len=1000}], 1, ..., 16, NULL,[0], [SCTP_RECVV_NOINFO], [8]) = 1000
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=3]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_1.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_1.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..2144bf4d295c4e7600160d8c39d3b015f4a78615
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_1.pkt
@@ -0,0 +1,20 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=16, is=16, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
++0.0 sctp_sendmsg(3, ..., 1000, ..., ..., htonl(1234), SCTP_UNORDERED, 1, 0, 0) = 1000
++0.0 > sctp: DATA[flgs=UBE, len=1016, tsn=1, sid=1, ssn=0, ppid=1234]
++0.0 < sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=1500, gaps=[], dups=[]]
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=0]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_2.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..4e916dca4981c3ea01a7ff47854dd63f0397d60c
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_2.pkt
@@ -0,0 +1,23 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=16, is=16, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
++0.0 sctp_sendmsg(3, ..., 1000, {sa_family=AF_INET,
+				 sin_port=htons(8080),
+				 sin_addr=inet_addr("192.0.2.1")},
+		 16, htonl(0x1234), 0, 0, 0, 0) = 1000
++0.0 > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0x1234]
++0.0 < sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=1500, gaps=[], dups=[]]
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=0]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_3.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_3.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..b02ac279aaae3b92db943cb7e2fc8e6827440f12
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_3.pkt
@@ -0,0 +1,20 @@
++0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=16, is=16, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
++0.0 sctp_sendmsg(3, ..., 1000, NULL, 0, 0, 0, 0, 0, 0) = 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 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=0]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendx/sctp_sendx_1.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendx/sctp_sendx_1.pkt
index c2853ec6011470eb2d89c3fda649df27e2900c2e..e89e65533032c7ea83c058b0abf8ac325644fa59 100644
--- a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendx/sctp_sendx_1.pkt
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendx/sctp_sendx_1.pkt
@@ -24,7 +24,7 @@
 							 spp_ipv6_flowlabel=0,
 							 spp_dscp=0}, 152) = 0
 
-+1.0 sctp_sendx(3, ..., 1000, ..., 1, {sinfo_stream=3,
++0.0 sctp_sendx(3, ..., 1000, ..., 1, {sinfo_stream=3,
                                        sinfo_ssn=3,
                                        sinfo_flags=0,
                                        sinfo_ppid=htonl(1234),
@@ -37,36 +37,6 @@
 +0.0 < sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=1500, gaps=[], dups=[]]
 
 
-+1.0 sctp_sendx(3, ..., 1000, {sa_family=AF_INET,
-                               sin_port=htons(8080),
-                               sin_addr=inet_addr("192.0.2.1")}, 1,
-			      {sinfo_stream=3,
-                               sinfo_ssn=3,
-                               sinfo_flags=0,
-                               sinfo_ppid=htonl(7),
-                               sinfo_context=0,
-                               sinfo_timetolive=0,
-                               sinfo_tsn=1,
-                               sinfo_cumtsn=6,
-                               sinfo_assoc_id=3}, 0) = 1000
-*    > sctp: DATA[flgs=BE, len=1016, tsn=2, sid=3, ssn=1, ppid=7]
-+0.0 < sctp: SACK[flgs=0, cum_tsn=2, a_rwnd=1500, gaps=[], dups=[]]
-
-+1.0 sctp_sendx(3, ..., 1000, [{sa_family=AF_INET,
-                               sin_port=htons(8080),
-                               sin_addr=inet_addr("192.0.2.1")}], 1,
-			      {sinfo_stream=3,
-                               sinfo_ssn=3,
-                               sinfo_flags=0,
-                               sinfo_ppid=htonl(7),
-                               sinfo_context=0,
-                               sinfo_timetolive=0,
-                               sinfo_tsn=1,
-                               sinfo_cumtsn=6,
-                               sinfo_assoc_id=3}, 0) = 1000
-*    > sctp: DATA[flgs=BE, len=1016, tsn=3, sid=3, ssn=2, ppid=7]
-+0.0 < sctp: SACK[flgs=0, cum_tsn=3, a_rwnd=1500, gaps=[], dups=[]]
-
 +0.0 close(3) = 0
 +0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=0]
 +0.1 < sctp: SHUTDOWN_ACK[flgs=0]
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendx/sctp_sendx_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendx/sctp_sendx_2.pkt
new file mode 100644
index 0000000000000000000000000000000000000000..b2e4362a7d5d464a38286a06fc928df122f32f4c
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendx/sctp_sendx_2.pkt
@@ -0,0 +1,45 @@
+--tolerance_usecs=100000
+
+ 0.0 socket(..., SOCK_STREAM, IPPROTO_SCTP) = 3
++0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
++0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
++0.0 bind(3, ..., ...) = 0
+// Check the handshake with an empty(!) cookie
++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.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=16, is=16, tsn=1, STATE_COOKIE[len=4, val=...]]
++0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...]
++0.1 < sctp: COOKIE_ACK[flgs=0]
++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
+
+//Disable Heartbeats
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, {spp_assoc_id=...,
+							 spp_address={sa_family=AF_INET,
+								      sin_port=htons(8080),
+								      sin_addr=inet_addr("192.0.2.1")},
+							 spp_hbinterval=0,
+							 spp_pathmaxrxt=8,
+							 spp_pathmtu=1468,
+							 spp_flags=SPP_HB_DISABLE,
+							 spp_ipv6_flowlabel=0,
+							 spp_dscp=0}, 152) = 0
+
++0.0 sctp_sendx(3, ..., 1000, {sa_family=AF_INET,
+                               sin_port=htons(8080),
+                               sin_addr=inet_addr("192.0.2.1")}, 1,
+			      {sinfo_stream=3,
+                               sinfo_ssn=3,
+                               sinfo_flags=0,
+                               sinfo_ppid=htonl(7),
+                               sinfo_context=0,
+                               sinfo_timetolive=0,
+                               sinfo_tsn=1,
+                               sinfo_cumtsn=6,
+                               sinfo_assoc_id=3}, 0) = 1000
+*    > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=3, ssn=0, ppid=7]
++0.0 < sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=1500, gaps=[], dups=[]]
+
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=0]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]