From fb346668f4d324578cbd5760e464820187dd90b9 Mon Sep 17 00:00:00 2001
From: hoelscher <jens.hoelscher@fh-muenster.de>
Date: Sat, 31 Oct 2015 05:58:56 +0100
Subject: [PATCH] add testcases

---
 .../sctp_notifications_stopped_event.pkt      | 17 ++++++++++++++
 .../tests/bsd/sctp/sendmsg_init.pkt           | 22 +++++++++++++++++++
 2 files changed, 39 insertions(+)
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/notifications/sctp_notifications_stopped_event.pkt
 create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/sendmsg_init.pkt

diff --git a/gtests/net/packetdrill/tests/bsd/sctp/notifications/sctp_notifications_stopped_event.pkt b/gtests/net/packetdrill/tests/bsd/sctp/notifications/sctp_notifications_stopped_event.pkt
new file mode 100644
index 00000000..6adecb8f
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/notifications/sctp_notifications_stopped_event.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
+// Check the handshake with an empty(!) cookie
++0.1 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress)
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_type=SCTP_ADAPTATION_INDICATION, se_on=1}, 8) = 0
++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_type=SCTP_ADAPTATION_INDICATION, se_on=1}, [8]) = 0
++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_type=SCTP_NOTIFICATIONS_STOPPED_EVENT, se_on=1}, 8) = 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=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]
+// No implementation provides this messages, so it can't be tested
+// as discribed in rfc, create an notification storm so that the implementation disable notifications
++0.0 sctp_recvv(3, [{iov_base={sn_type=SCTP_NOTIFICATIONS_STOPPED_EVENT, sn_flags=0, sn_length=8}, iov_len=1000}], 1,
+..., 20, NULL, [0], [SCTP_RECVV_NOINFO],[MSG_NOTIFICATION|MSG_EOR]) = 21
diff --git a/gtests/net/packetdrill/tests/bsd/sctp/sendmsg_init.pkt b/gtests/net/packetdrill/tests/bsd/sctp/sendmsg_init.pkt
new file mode 100644
index 00000000..a4e6d984
--- /dev/null
+++ b/gtests/net/packetdrill/tests/bsd/sctp/sendmsg_init.pkt
@@ -0,0 +1,22 @@
+
++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
+
++1.0 sendmsg(3, {msg_name(...)=..., msg_iov(1)=[{iov_base=..., iov_len=1000}], msg_control(64)=
+	[{cmsg_len=20, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_INIT, cmsg_data=
+	 {sinit_num_ostreams=1, sinit_max_instreams=1, sinit_max_attempts=1, sinit_max_init_timeo=100}
+	},{cmsg_len=28, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_SNDINFO, cmsg_data=
+	 {snd_sid=2, snd_flags=0, snd_ppid=htonl(4), snd_context=2, snd_assoc_id=0}
+	},{cmsg_len=16, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_DSTADDRV4, cmsg_data=
+	 {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("192.0.2.1")}
+	}],
+	msg_flags=0}, 0) = 1000
+
++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=...]; DATA[flgs=BE, len=1016, tsn=1, sid=2, ssn=0, ppid=4]
++0.1 < sctp: COOKIE_ACK[flgs=0]; SACK[flgs=0, cum_tsn=1, a_rwnd=1500, gaps=[], dups=[]]
+
-- 
GitLab