From 8567f70f1282d6fc37499f9b4ad3f58e4df6ff8c Mon Sep 17 00:00:00 2001
From: hoelscher <jens.hoelscher@fh-muenster.de>
Date: Fri, 27 Nov 2015 15:23:32 +0100
Subject: [PATCH] add some more test for api test script

---
 .../sctp/api_tests/sctp_bindx/sctp_bindx.pkt  |  6 ++
 .../api_tests/sctp_connectx/sctp_connectx.pkt | 17 ++++++
 .../sctp_getladdrs/sctp_getladdrs.pkt         | 19 +++++++
 .../sctp_getpaddrs/sctp_getpaddrs.pkt         | 19 +++++++
 .../api_tests/sctp_peeloff/sctp_peeloff.pkt   | 15 +++++
 .../api_tests/sctp_recvmsg/sctp_recvmsg_1.pkt | 20 +++++++
 .../api_tests/sctp_recvmsg/sctp_recvmsg_2.pkt | 28 ++++++++++
 .../api_tests/sctp_recvmsg/sctp_recvmsg_3.pkt | 49 +++++++++++++++++
 .../api_tests/sctp_recvv/sctp_recvv_1.pkt     | 21 +++++++
 .../api_tests/sctp_recvv/sctp_recvv_2.pkt     | 23 ++++++++
 .../api_tests/sctp_recvv/sctp_recvv_3.pkt     | 20 +++++++
 .../api_tests/sctp_recvv/sctp_recvv_4.pkt     | 31 +++++++++++
 .../api_tests/sctp_recvv/sctp_recvv_5.pkt     | 31 +++++++++++
 .../api_tests/sctp_recvv/sctp_recvv_6.pkt     | 55 +++++++++++++++++++
 .../api_tests/sctp_recvv/sctp_recvv_7.pkt     | 46 ++++++++++++++++
 .../api_tests/sctp_sendmsg/sctp_sendmsg_1.pkt | 20 +++++++
 .../api_tests/sctp_sendmsg/sctp_sendmsg_2.pkt | 23 ++++++++
 .../api_tests/sctp_sendmsg/sctp_sendmsg_3.pkt | 20 +++++++
 .../api_tests/sctp_sendx/sctp_sendx_1.pkt     | 32 +----------
 .../api_tests/sctp_sendx/sctp_sendx_2.pkt     | 45 +++++++++++++++
 20 files changed, 509 insertions(+), 31 deletions(-)
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_bindx/sctp_bindx.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_connectx/sctp_connectx.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_getladdrs/sctp_getladdrs.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_getpaddrs/sctp_getpaddrs.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_peeloff/sctp_peeloff.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_1.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_2.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvmsg/sctp_recvmsg_3.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_1.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_2.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_3.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_4.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_5.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_6.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_recvv/sctp_recvv_7.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_1.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_2.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendmsg/sctp_sendmsg_3.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/sctp_sendx/sctp_sendx_2.pkt

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 00000000..664ca300
--- /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 00000000..8e339256
--- /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 00000000..96dba972
--- /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 00000000..eeec01d8
--- /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 00000000..de7c9edf
--- /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 00000000..569fae58
--- /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 00000000..be3e3314
--- /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 00000000..36b5c445
--- /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 00000000..85825263
--- /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 00000000..0eea4a19
--- /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 00000000..71ecfe4c
--- /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 00000000..3742f148
--- /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 00000000..af38f796
--- /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 00000000..d68c13f8
--- /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 00000000..0d262058
--- /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 00000000..2144bf4d
--- /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 00000000..4e916dca
--- /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 00000000..b02ac279
--- /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 c2853ec6..e89e6553 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 00000000..b2e4362a
--- /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]
-- 
GitLab