From 89d09f89f00e4a4f39abdaf23f91484264bb9e56 Mon Sep 17 00:00:00 2001
From: Aomx <julian.cordes@gmail.com>
Date: Thu, 14 Jul 2016 14:21:14 +0000
Subject: [PATCH] add example test case for usage of nr_sack_chunks

---
 .../tests/bsd/sctp/sctp_nr_sack.pkt           | 53 +++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/sctp_nr_sack.pkt

diff --git a/gtests/net/packetdrill/tests/bsd/sctp/sctp_nr_sack.pkt b/gtests/net/packetdrill/tests/bsd/sctp/sctp_nr_sack.pkt
new file mode 100644
index 00000000..7d2faede
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/sctp_nr_sack.pkt
@@ -0,0 +1,53 @@
+	--tolerance_usecs=75000
+
+ 0.0 `sysctl -w net.inet.sctp.ecn_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.auth_enable=0`
++0.0 `sysctl -w net.inet.sctp.reconfig_enable=0`
++0.0 `sysctl -w net.inet.sctp.nrsack_enable=1`
++0.0 `sysctl -w net.inet.sctp.pktdrop_enable=0`
++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
+
+// 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=0,
+                  SUPPORTED_EXTENSIONS[types=[NR_SACK]],
+                  SUPPORTED_ADDRESS_TYPES[types=...]]
++0.1 < sctp: INIT_ACK[flgs=0, tag=2, a_rwnd=1500, os=1, is=1, tsn=3,
+                      STATE_COOKIE[len=4, val=...],
+                      SUPPORTED_EXTENSIONS[types=[NR_SACK]],
+                      SUPPORTED_ADDRESS_TYPES[types=[IPv4]],
+                      PARAMETER[type=0xbf11, len=5, val=[0x01]]]
++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_PEER_ADDR_PARAMS, {spp_address=..., spp_hbinterval=0, spp_pathmaxrxt=0, spp_pathmtu=0, spp_flags=SPP_HB_DISABLE|SPP_PMTUD_DISABLE, spp_ipv6_flowlabel=0, spp_dscp=0}, 152) = 0
+
++1.0 write(3, ..., 4000) = 4000
++0.0 > sctp: DATA[flgs=B, len=1468, tsn=0, sid=0, ssn=0, ppid=0]
++0.1 < sctp: NR_SACK[flgs=0, cum_tsn=0, a_rwnd=5000, gaps=[], nr_gaps=[], dups=[]]
++0.0 > sctp: DATA[flgs=0, len=1468, tsn=1, sid=0, ssn=0, ppid=0]
++0.0 > sctp: DATA[flgs=E, len=1112, tsn=2, sid=0, ssn=0, ppid=0]
++0.1 < sctp: NR_SACK[flgs=0, cum_tsn=0, a_rwnd=5000, gaps=[], nr_gaps=[1:1], dups=[]]
+* > sctp: DATA[flgs=E, len=1112, tsn=2, sid=0, ssn=0, ppid=0]
++0.1 < sctp: NR_SACK[flgs=0, cum_tsn=2, a_rwnd=5000, gaps=[], nr_gaps=[], dups=[]]
+
+// Receive some data
++1.0 < sctp: DATA[flgs=BE, len=1016, tsn=3, sid=0, ssn=0, ppid=0]
++0.0 read(3, ..., 2000) = 1000
++0.0 > sctp: NR_SACK[flgs=..., cum_tsn=3, a_rwnd=..., gaps=..., nr_gaps=..., dups=...]
+
+// Receive more data, observe a non-delayed SACK
++1.0 < sctp: DATA[flgs=IBE, len=1016, tsn=4, sid=0, ssn=1, ppid=0]
++0.0 read(3, ..., 2000) = 1000
++0.0 > sctp: NR_SACK[flgs=0, cum_tsn=4, a_rwnd=..., gaps=..., nr_gaps=..., dups=...]
+
+// Tear down the association
++0.0 close(3) = 0
++0.0 > sctp: SHUTDOWN[flgs=0, cum_tsn=4]
++0.1 < sctp: SHUTDOWN_ACK[flgs=0]
++0.0 > sctp: SHUTDOWN_COMPLETE[flgs=0]
-- 
GitLab