From b3ed76a441524eaf9e1cd69e933ee8891df89b64 Mon Sep 17 00:00:00 2001 From: hoelscher <jens.hoelscher@fh-muenster.de> Date: Fri, 27 Nov 2015 13:28:43 +0100 Subject: [PATCH] modify tests for tests without assoc_id for notifications --- gtests/net/packetdrill/parser.y | 2 +- .../notifications/sctp_adaptation_event.pkt | 7 ++- .../notifications/sctp_assoc_change_event.pkt | 22 ++++++-- .../sctp_authentication_event.pkt | 8 ++- .../sctp_authentication_event_2.pkt | 23 +++++++++ .../sctp_partial_delivery_event_2.pkt | 25 +++++++++ .../notifications/sctp_peer_addr_change_2.pkt | 46 +++++++++++++++++ .../notifications/sctp_remote_error.pkt | 10 ++-- .../notifications/sctp_remote_error_2.pkt | 22 ++++++++ .../notifications/sctp_send_failed_2.pkt | 51 +++++++++++++++++++ .../sctp_send_failed_event_2.pkt | 48 +++++++++++++++++ .../notifications/sctp_sender_dry_event_2.pkt | 34 +++++++++++++ .../notifications/sctp_shutdown_event_2.pkt | 26 ++++++++++ .../tests/bsd/sctp/api_tests/run-all-tests | 8 +++ 14 files changed, 319 insertions(+), 13 deletions(-) create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_authentication_event_2.pkt create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_partial_delivery_event_2.pkt create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_peer_addr_change_2.pkt create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_remote_error_2.pkt create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_send_failed_2.pkt create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_send_failed_event_2.pkt create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_sender_dry_event_2.pkt create mode 100644 gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_shutdown_event_2.pkt diff --git a/gtests/net/packetdrill/parser.y b/gtests/net/packetdrill/parser.y index 7437bc1e..569c9be5 100644 --- a/gtests/net/packetdrill/parser.y +++ b/gtests/net/packetdrill/parser.y @@ -3578,7 +3578,7 @@ sctp_sndrcvinfo $$->value.sctp_sndrcvinfo->sinfo_timetolive = $12; $$->value.sctp_sndrcvinfo->sinfo_tsn = $14; $$->value.sctp_sndrcvinfo->sinfo_cumtsn = $16; - $$->value.sctp_sndrcvinfo->sinfo_assoc_id = new_integer_expression(0, "%u"); + $$->value.sctp_sndrcvinfo->sinfo_assoc_id = new_expression(EXPR_ELLIPSIS); }; sinfo_pr_value diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_adaptation_event.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_adaptation_event.pkt index 6a3a663b..c2706023 100644 --- a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_adaptation_event.pkt +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_adaptation_event.pkt @@ -23,5 +23,8 @@ +0.0 accept(3, ..., ...) = 4 //TODO: Packetdrill does not support Path reconfiguration, after that update this test -+0.0 sctp_recvv(4, [{iov_base={sai_type=SCTP_ADAPTATION_INDICATION, sai_flags=0, sai_length=16, sai_adaptation_ind=3, sai_assoc_id=...}, -iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO],[MSG_NOTIFICATION|MSG_EOR]) = 16 ++0.0 sctp_recvv(4, [{iov_base={sai_type=SCTP_ADAPTATION_INDICATION, + sai_flags=0, + sai_length=16, + sai_adaptation_ind=3, + sai_assoc_id=...}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO],[MSG_NOTIFICATION|MSG_EOR]) = 16 diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_assoc_change_event.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_assoc_change_event.pkt index f110cab2..39332546 100644 --- a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_assoc_change_event.pkt +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_assoc_change_event.pkt @@ -9,14 +9,26 @@ +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 sctp_recvv(3, [{iov_base={sac_type=SCTP_ASSOC_CHANGE, sac_flags=0, sac_length=21, sac_state=SCTP_COMM_UP, sac_error=0, sac_outbound_streams=1, -sac_inbound_streams=1, sac_assoc_id=..., sac_info=[SCTP_ASSOC_SUPPORTS_MULTIBUF]}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], -[MSG_NOTIFICATION|MSG_EOR]) = 21 ++0.0 sctp_recvv(3, [{iov_base={sac_type=SCTP_ASSOC_CHANGE, + sac_flags=0, + sac_length=21, + sac_state=SCTP_COMM_UP, + sac_error=0, + sac_outbound_streams=1, + sac_inbound_streams=1, + sac_assoc_id=..., + sac_info=[SCTP_ASSOC_SUPPORTS_MULTIBUF]}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 21 +0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 +0.0 < sctp: SHUTDOWN[flgs=0, cum_tsn=0] * > sctp: SHUTDOWN_ACK[flgs=0] +0.0 < sctp: SHUTDOWN_COMPLETE[flgs=0] -+0.0 sctp_recvv(3, [{iov_base={sac_type=SCTP_ASSOC_CHANGE, sac_flags=0, sac_length=20, sac_state=SCTP_SHUTDOWN_COMP, sac_error=0, sac_outbound_streams=1, -sac_inbound_streams=1, sac_assoc_id=..., sac_info=[]}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 20 ++0.0 sctp_recvv(3, [{iov_base={sac_type=SCTP_ASSOC_CHANGE, + sac_flags=0, + sac_length=20, + sac_state=SCTP_SHUTDOWN_COMP, + sac_error=0, + sac_outbound_streams=1, + sac_inbound_streams=1, + sac_info=[]}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 20 diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_authentication_event.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_authentication_event.pkt index 4b216e98..d94a2f81 100644 --- a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_authentication_event.pkt +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_authentication_event.pkt @@ -10,8 +10,12 @@ +0.0 > sctp: COOKIE_ECHO[flgs=0, len=4, val=...] +0.1 < sctp: COOKIE_ACK[flgs=0] -+0.0 sctp_recvv(3, [{iov_base={auth_type=SCTP_AUTHENTICATION_EVENT, auth_flags=0, auth_length=20, auth_keynumber=0, auth_indication=SCTP_AUTH_NO_AUTH, -auth_assoc_id=3}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 20 ++0.0 sctp_recvv(3, [{iov_base={auth_type=SCTP_AUTHENTICATION_EVENT, + auth_flags=0, + auth_length=20, + auth_keynumber=0, + auth_indication=SCTP_AUTH_NO_AUTH, + auth_assoc_id=3}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 20 +0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 +0.0 < sctp: SHUTDOWN[flgs=0, cum_tsn=0] diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_authentication_event_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_authentication_event_2.pkt new file mode 100644 index 00000000..b43bf482 --- /dev/null +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_authentication_event_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 +// 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_assoc_id=0, se_type=SCTP_AUTHENTICATION_EVENT, se_on=1}, 8) = 0 ++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_AUTHENTICATION_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] + ++0.0 sctp_recvv(3, [{iov_base={auth_type=SCTP_AUTHENTICATION_EVENT, + auth_flags=0, + auth_length=20, + auth_keynumber=0, + auth_indication=SCTP_AUTH_NO_AUTH}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 20 + ++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 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/notifications/sctp_partial_delivery_event_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_partial_delivery_event_2.pkt new file mode 100644 index 00000000..53dfa543 --- /dev/null +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_partial_delivery_event_2.pkt @@ -0,0 +1,25 @@ ++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=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] +//Enable Partial delivery event ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_PARTIAL_DELIVERY_EVENT, se_on=1}, 8) = 0 ++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_PARTIAL_DELIVERY_EVENT, se_on=1}, [8]) = 0 + ++0.0 < sctp: DATA[flgs=B, len=300, tsn=1, sid=0, ssn=0, ppid=0] ++0.0 > sctp: SACK[flgs=0, cum_tsn=1, a_rwnd=..., gaps=[], dups=[]] ++0.0 < sctp: DATA[flgs=0, len=300, tsn=2, sid=0, ssn=0, ppid=0] +* > sctp: SACK[flgs=0, cum_tsn=2, a_rwnd=..., gaps=[], dups=[]] ++0.0 < sctp: ABORT[flgs=0] ++1.5 sctp_recvv(3, [{iov_base=..., iov_len=1000}, + {iov_base={pdapi_type=SCTP_PARTIAL_DELIVERY_EVENT, + pdapi_flags=0, + pdapi_length=24, + pdapi_indication=SCTP_PARTIAL_DELIVERY_ABORTED, + pdapi_stream=0, + pdapi_seq=0}, iov_len=1000}], 2, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 21 diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_peer_addr_change_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_peer_addr_change_2.pkt new file mode 100644 index 00000000..c69c7697 --- /dev/null +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_peer_addr_change_2.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 +// 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_assoc_id=0, se_type=SCTP_PEER_ADDR_CHANGE, se_on=1}, 8) = 0 ++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_PEER_ADDR_CHANGE, 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] ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, {spp_assoc_id=..., + spp_address=..., + spp_hbinterval=1, + spp_pathmaxrxt=3, + spp_pathmtu=1468, + spp_flags=SPP_HB_ENABLE, + spp_ipv6_flowlabel=0, + spp_dscp=0}, 152) = 0 + +* > sctp: HEARTBEAT[flgs=0, HEARTBEAT_INFORMATION[len=..., val=...]] +* > sctp: HEARTBEAT[flgs=0, HEARTBEAT_INFORMATION[len=..., val=...]] +* > sctp: HEARTBEAT[flgs=0, HEARTBEAT_INFORMATION[len=..., val=...]] +* > sctp: HEARTBEAT[flgs=0, HEARTBEAT_INFORMATION[len=..., val=...]] +* > sctp: HEARTBEAT[flgs=0, HEARTBEAT_INFORMATION[len=..., val=...]] + ++0.5 sctp_recvv(3, [{iov_base={spc_type=SCTP_PEER_ADDR_CHANGE, + spc_flags=0, + spc_length=152, + spc_aaddr=..., + spc_state=SCTP_ADDR_UNREACHABLE, + spc_error=0, + spc_assoc_id=...}, + iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 152 + ++0.0 < sctp: HEARTBEAT_ACK[flgs=0, HEARTBEAT_INFORMATION[len=..., val=...]] + ++0.5 sctp_recvv(3, [{iov_base={spc_type=SCTP_PEER_ADDR_CHANGE, + spc_flags=0, + spc_length=152, + spc_aaddr=..., + spc_state=SCTP_ADDR_AVAILABLE, + spc_error=0}, + iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 152 diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_remote_error.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_remote_error.pkt index 7479fdc1..0d7557b6 100644 --- a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_remote_error.pkt +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_remote_error.pkt @@ -14,6 +14,10 @@ +0.0 < sctp: ERROR[flgs=0, INVALID_STREAM_IDENTIFIER[sid=1]] -+0.0 sctp_recvv(3, [{iov_base={sre_type=SCTP_REMOTE_ERROR, sre_flags=0, sre_length=32, sre_error=1, -sre_assoc_id=..., sre_data=[0x09, 0x00, 0x00 , 0x0C, 0x00, 0x01, 0x00 , 0x08, 0x00, 0x01, 0x00 , 0x00]}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], -[MSG_NOTIFICATION|MSG_EOR]) = 32 ++0.0 sctp_recvv(3, [{iov_base={sre_type=SCTP_REMOTE_ERROR, + sre_flags=0, + sre_length=32, + sre_error=1, + sre_assoc_id=..., + sre_data=[0x09, 0x00, 0x00 , 0x0C, 0x00, 0x01, 0x00 , 0x08, 0x00, 0x01, 0x00 , 0x00]}, + iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 32 diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_remote_error_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_remote_error_2.pkt new file mode 100644 index 00000000..eeda20bc --- /dev/null +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_remote_error_2.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 +// 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_assoc_id=0, se_type=SCTP_REMOTE_ERROR, se_on=1}, 8) = 0 ++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_REMOTE_ERROR, 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] + ++0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 + ++0.0 < sctp: ERROR[flgs=0, INVALID_STREAM_IDENTIFIER[sid=1]] + ++0.0 sctp_recvv(3, [{iov_base={sre_type=SCTP_REMOTE_ERROR, + sre_flags=0, + sre_length=32, + sre_error=1, + sre_data=[0x09, 0x00, 0x00 , 0x0C, 0x00, 0x01, 0x00 , 0x08, 0x00, 0x01, 0x00 , 0x00]}, + iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 32 diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_send_failed_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_send_failed_2.pkt new file mode 100644 index 00000000..2244a167 --- /dev/null +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_send_failed_2.pkt @@ -0,0 +1,51 @@ ++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=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_PEER_ADDR_PARAMS, {spp_assoc_id=..., + spp_address=..., + spp_hbinterval=0, + spp_pathmaxrxt=100, + spp_pathmtu=1468, + spp_flags=SPP_HB_DISABLE, + spp_ipv6_flowlabel=0, + spp_dscp=0}, 152) = 0 + +//test for SEND_FAILED_EVENT ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_SEND_FAILED, se_on=1}, 8) = 0 ++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_SEND_FAILED, se_on=1}, [8]) = 0 + ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RTOINFO, {srto_assoc_id=0, + srto_initial=100, + srto_max=150, + srto_min=50}, 16) = 0 + ++0.0 write(3, ..., 1000) = 1000 ++0.0 > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] ++1.0 sctp_recvv(3, [{iov_base={ssf_type=SCTP_SEND_FAILED, + ssf_flags=SCTP_DATA_SENT, + ssf_length=1144, + ssf_error=0, + ssf_info={sinfo_stream=0, + sinfo_ssn=0, + sinfo_flags=3, + sinfo_ppid=htonl(0), + sinfo_context=0, + sinfo_timetolive=0, + sinfo_tsn=0, + sinfo_cumtsn=0}, + ssf_data=...}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION]) = 1000 diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_send_failed_event_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_send_failed_event_2.pkt new file mode 100644 index 00000000..39d8113e --- /dev/null +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_send_failed_event_2.pkt @@ -0,0 +1,48 @@ ++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=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 setsockopt(3, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, {spp_assoc_id=..., + spp_address=..., + spp_hbinterval=0, + spp_pathmaxrxt=100, + spp_pathmtu=1468, + spp_flags=SPP_HB_DISABLE, + spp_ipv6_flowlabel=0, + spp_dscp=0}, 152) = 0 + +//test for SEND_FAILED_EVENT ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, + se_type=SCTP_SEND_FAILED_EVENT, + se_on=1}, 8) = 0 + ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_RTOINFO, {srto_assoc_id=0, + srto_initial=100, + srto_max=150, + srto_min=50}, 16) = 0 + ++0.0 write(3, ..., 1000) = 1000 ++0.0 > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] +* > sctp: DATA[flgs=BE, len=1016, tsn=1, sid=0, ssn=0, ppid=0] ++1.0 sctp_recvv(3, [{iov_base={ssfe_type=SCTP_SEND_FAILED_EVENT, + ssfe_flags=SCTP_DATA_SENT, + ssfe_length=1032, + ssfe_error=0, + ssfe_info={snd_sid=0, + snd_flags=3, + snd_ppid=htonl(0), + snd_context=0}, + ssfe_data=...}, iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION]) = 1000 diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_sender_dry_event_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_sender_dry_event_2.pkt new file mode 100644 index 00000000..b298a700 --- /dev/null +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_sender_dry_event_2.pkt @@ -0,0 +1,34 @@ ++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=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 + +//test for enable socketoptions with SCTP_EVENT and SCTP_EVENTS ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENTS, {sctp_data_io_event=1, + sctp_association_event=1, + sctp_address_event=0, + sctp_send_failure_event=1, + sctp_peer_error_event=0, + sctp_shutdown_event=1, + sctp_partial_delivery_event=0, + sctp_adaptation_layer_event=0, + sctp_authentication_event=0, + sctp_sender_dry_event=0}, 11) = 0 + ++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_SHUTDOWN_EVENT, se_on=1}, [8]) = 0 + +//test for SENDER_DRY_EVENT ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_SENDER_DRY_EVENT, se_on=1}, 8) = 0 ++0.0 sctp_recvv(3, [{iov_base={sender_dry_type=SCTP_SENDER_DRY_EVENT, + sender_dry_flags=0, + sender_dry_length=12}, + iov_len=1000}], 1, ..., 20, NULL, [0], [SCTP_RECVV_NOINFO], [MSG_NOTIFICATION|MSG_EOR]) = 12 + ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_SENDER_DRY_EVENT, se_on=0}, 8) = 0 + diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_shutdown_event_2.pkt b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_shutdown_event_2.pkt new file mode 100644 index 00000000..19762c46 --- /dev/null +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/notifications/sctp_shutdown_event_2.pkt @@ -0,0 +1,26 @@ ++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=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 + +//test for enable socketoptions with SCTP_EVENT and SCTP_EVENTS ++0.0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_SHUTDOWN_EVENT, se_on=1}, 8) = 0 ++0.0 getsockopt(3, IPPROTO_SCTP, SCTP_EVENT, {se_assoc_id=0, se_type=SCTP_SHUTDOWN_EVENT, se_on=1}, [8]) = 0 + +// Tear down the association ++0.0 < sctp: SHUTDOWN[flgs=0, cum_tsn=0] +* > sctp: SHUTDOWN_ACK[flgs=0] ++0.0 < sctp: SHUTDOWN_COMPLETE[flgs=0] ++0.0 recvmsg(3, {msg_name(...)=..., + msg_iov(1)=[{iov_base={sse_type=SCTP_SHUTDOWN_EVENT, + sse_flags=0, + sse_length=12}, + iov_len=1000}], + msg_control(0)=[], + msg_flags=MSG_NOTIFICATION|MSG_EOR}, 0) = 12 diff --git a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/run-all-tests b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/run-all-tests index 24ee914c..97fb7ec8 100755 --- a/gtests/net/packetdrill/tests/bsd/sctp/api_tests/run-all-tests +++ b/gtests/net/packetdrill/tests/bsd/sctp/api_tests/run-all-tests @@ -75,14 +75,22 @@ set testcases = (setsockopt/sctp_rtoinfo_1 \ notifications/sctp_adaptation_event \ notifications/sctp_notifications_stopped_event \ notifications/sctp_remote_error \ + notifications/sctp_remote_error_2 \ notifications/sctp_sender_dry_event \ + notifications/sctp_sender_dry_event_2 \ notifications/sctp_assoc_change_event \ notifications/sctp_partial_delivery_event \ + notifications/sctp_partial_delivery_event_2 \ notifications/sctp_send_failed \ + notifications/sctp_send_failed_2 \ notifications/sctp_shutdown_event \ + notifications/sctp_shutdown_event_2 \ notifications/sctp_authentication_event \ + notifications/sctp_authentication_event_2 \ notifications/sctp_peer_addr_change \ + notifications/sctp_peer_addr_change_2 \ notifications/sctp_send_failed_event \ + notifications/sctp_send_failed_event_2 \ cmsgs/sendmsg_sctp_init \ cmsgs/sendmsg_sctp_sndrcv \ cmsgs/sendmsg_sctp_sndinfo \ -- GitLab