From da2cfe93408c1f1849157a5d6fdf9a48ccedde7d Mon Sep 17 00:00:00 2001 From: hoelscher <jens.hoelscher@fh-muenster.de> Date: Fri, 27 Nov 2015 01:47:03 +0100 Subject: [PATCH] change checks for assoc ids in run_systemcall and modify tests --- gtests/net/packetdrill/run_system_call.c | 81 ++++----- .../tests/bsd/sctp/sctp_socket_options.pkt | 48 +++--- .../packetdrill/tests/bsd/sctp/sendmsg.pkt | 155 +++++++++++++----- 3 files changed, 177 insertions(+), 107 deletions(-) diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c index 313fb695..017b7ee7 100644 --- a/gtests/net/packetdrill/run_system_call.c +++ b/gtests/net/packetdrill/run_system_call.c @@ -2573,8 +2573,8 @@ static int check_sctp_sack_info(struct sctp_sack_info_expr *expr, struct sctp_sack_info *sctp_sack_info, char **error) { - if (check_u32_expr(expr->sack_assoc_id, sctp_sack_info->sack_assoc_id, - "sctp_sack_info.sack_assoc_id", error)) + if (check_sctp_assoc_t_expr(expr->sack_assoc_id, sctp_sack_info->sack_assoc_id, + "sctp_sack_info.sack_assoc_id", error)) return STATUS_ERR; if (check_u32_expr(expr->sack_delay, sctp_sack_info->sack_delay, "sctp_sack_info.sack_delay", error)) @@ -2701,8 +2701,8 @@ static int check_sctp_assoc_value(struct sctp_assoc_value_expr *expr, struct sctp_assoc_value *sctp_assoc_value, char **error) { - if (check_u32_expr(expr->assoc_id, sctp_assoc_value->assoc_id, - "sctp_assoc_value.assoc_id", error)) + if (check_sctp_assoc_t_expr(expr->assoc_id, sctp_assoc_value->assoc_id, + "sctp_assoc_value.assoc_id", error)) return STATUS_ERR; if (check_u16_expr(expr->assoc_value, sctp_assoc_value->assoc_value, "sctp_assoc_value.stream_id", error)) @@ -2733,8 +2733,8 @@ static int check_sctp_assocparams(struct sctp_assocparams_expr *expr, struct sctp_assocparams *sctp_assocparams, char **error) { - if (check_u32_expr(expr->sasoc_assoc_id, sctp_assocparams->sasoc_assoc_id, - "sctp_assocparams.sasoc_assoc_id", error)) + if (check_sctp_assoc_t_expr(expr->sasoc_assoc_id, sctp_assocparams->sasoc_assoc_id, + "sctp_assocparams.sasoc_assoc_id", error)) return STATUS_ERR; if (check_u16_expr(expr->sasoc_asocmaxrxt, sctp_assocparams->sasoc_asocmaxrxt, "sctp_assocparams.sasoc_asocmaxrxt", error)) @@ -2761,8 +2761,8 @@ static int check_sctp_event(struct sctp_event_expr *expr, struct sctp_event *sctp_event, char **error) { - if (check_u32_expr(expr->se_assoc_id, sctp_event->se_assoc_id, - "sctp_event.se_assoc_id", error)) + if (check_sctp_assoc_t_expr(expr->se_assoc_id, sctp_event->se_assoc_id, + "sctp_event.se_assoc_id", error)) return STATUS_ERR; if (check_u16_expr(expr->se_type, sctp_event->se_type, "sctp_event.se_type", error)) @@ -2841,8 +2841,8 @@ static int check_sctp_sndinfo(struct sctp_sndinfo_expr *expr, if (check_u32_expr(expr->snd_context, sctp_sndinfo->snd_context, "sctp_sndinfo.snd_context", error)) return STATUS_ERR; - if (check_u32_expr(expr->snd_assoc_id, sctp_sndinfo->snd_assoc_id, - "sctp_sndinfo.snd_assoc_id", error)) + if (check_sctp_assoc_t_expr(expr->snd_assoc_id, sctp_sndinfo->snd_assoc_id, + "sctp_sndinfo.snd_assoc_id", error)) return STATUS_ERR; return STATUS_OK; @@ -3323,13 +3323,9 @@ static int syscall_setsockopt(struct state *state, struct syscall_spec *syscall, break; #ifdef SCTP_RTOINFO case EXPR_SCTP_RTOINFO: - if (val_expression->value.sctp_rtoinfo->srto_assoc_id->type != EXPR_ELLIPSIS) { - if (get_sctp_assoc_t(val_expression->value.sctp_rtoinfo->srto_assoc_id, - &rtoinfo.srto_assoc_id, error)) { - return STATUS_ERR; - } - } else { - rtoinfo.srto_assoc_id = 0; + if (get_sctp_assoc_t(val_expression->value.sctp_rtoinfo->srto_assoc_id, + &rtoinfo.srto_assoc_id, error)) { + return STATUS_ERR; } if (get_u32(val_expression->value.sctp_rtoinfo->srto_initial, &rtoinfo.srto_initial, error)) { @@ -3807,8 +3803,8 @@ static int check_sctp_sndrcvinfo(struct sctp_sndrcvinfo_expr *expr, if (check_u32_expr(expr->sinfo_cumtsn, sctp_sndrcvinfo->sinfo_cumtsn, "sctp_sndrcvinfo.sinfo_cumtsn", error)) return STATUS_ERR; - if (check_u32_expr(expr->sinfo_assoc_id, sctp_sndrcvinfo->sinfo_assoc_id, - "sctp_sndrcvinfo.sinfo_assoc_id", error)) + if (check_sctp_assoc_t_expr(expr->sinfo_assoc_id, sctp_sndrcvinfo->sinfo_assoc_id, + "sctp_sndrcvinfo.sinfo_assoc_id", error)) return STATUS_ERR; return STATUS_OK; @@ -3882,8 +3878,8 @@ static int check_sctp_extrcvinfo(struct sctp_extrcvinfo_expr *expr, "sctp_extrcvinfo.serinfo_next_ppid", error)) return STATUS_ERR; #endif - if (check_u32_expr(expr->sinfo_assoc_id, sctp_extrcvinfo->sinfo_assoc_id, - "sctp_extrcvinfo.sinfo_assoc_id", error)) + if (check_sctp_assoc_t_expr(expr->sinfo_assoc_id, sctp_extrcvinfo->sinfo_assoc_id, + "sctp_extrcvinfo.sinfo_assoc_id", error)) return STATUS_ERR; return STATUS_OK; @@ -4495,8 +4491,8 @@ static int check_sctp_rcvinfo(struct sctp_rcvinfo_expr *expr, if (check_u32_expr(expr->rcv_context, sctp_rcvinfo->rcv_context, "sctp_rcvinfo.rcv_context", error)) return STATUS_ERR; - if (check_u32_expr(expr->rcv_assoc_id, sctp_rcvinfo->rcv_assoc_id, - "sctp_rcvinfo.rcv_assoc_id", error)) + if (check_sctp_assoc_t_expr(expr->rcv_assoc_id, sctp_rcvinfo->rcv_assoc_id, + "sctp_rcvinfo.rcv_assoc_id", error)) return STATUS_ERR; return STATUS_OK; @@ -4508,15 +4504,20 @@ static int check_sctp_nxtinfo(struct sctp_nxtinfo_expr *expr, struct sctp_nxtinfo *sctp_nxtinfo, char **error) { - if (check_u16_expr(expr->nxt_sid, sctp_nxtinfo->nxt_sid, "sctp_nxtinfo.nxt_sid", error)) + if (check_u16_expr(expr->nxt_sid, sctp_nxtinfo->nxt_sid, + "sctp_nxtinfo.nxt_sid", error)) return STATUS_ERR; - if (check_u16_expr(expr->nxt_flags, sctp_nxtinfo->nxt_flags, "sctp_nxtinfo.nxt_flags", error)) + if (check_u16_expr(expr->nxt_flags, sctp_nxtinfo->nxt_flags, + "sctp_nxtinfo.nxt_flags", error)) return STATUS_ERR; - if (check_u32_hton_expr(expr->nxt_ppid, sctp_nxtinfo->nxt_ppid, "sctp_nxtinfo.nxt_ppid", error)) + if (check_u32_hton_expr(expr->nxt_ppid, sctp_nxtinfo->nxt_ppid, + "sctp_nxtinfo.nxt_ppid", error)) return STATUS_ERR; - if (check_u32_expr(expr->nxt_length, sctp_nxtinfo->nxt_length, "sctp_nxtinfo.nxt_length", error)) + if (check_u32_expr(expr->nxt_length, sctp_nxtinfo->nxt_length, + "sctp_nxtinfo.nxt_length", error)) return STATUS_ERR; - if (check_u32_expr(expr->nxt_assoc_id, sctp_nxtinfo->nxt_assoc_id, "sctp_nxtinfo.nxt_assoc_id", error)) + if (check_sctp_assoc_t_expr(expr->nxt_assoc_id, sctp_nxtinfo->nxt_assoc_id, + "sctp_nxtinfo.nxt_assoc_id", error)) return STATUS_ERR; return STATUS_OK; @@ -4548,7 +4549,7 @@ static int check_sctp_assoc_change(struct sctp_assoc_change_expr *expr, if (check_u16_expr(expr->sac_inbound_streams, sctp_event->sac_inbound_streams, "sctp_assoc_change.sac_inbound_streams", error)) return STATUS_ERR; - if (check_u32_expr(expr->sac_assoc_id, sctp_event->sac_assoc_id, + if (check_sctp_assoc_t_expr(expr->sac_assoc_id, sctp_event->sac_assoc_id, "sctp_assoc_change.sac_assoc_id", error)) return STATUS_ERR; if (check_u8array_expr(expr->sac_info, sctp_event->sac_info, sctp_event->sac_length - sizeof(struct sctp_assoc_change), @@ -4581,7 +4582,7 @@ static int check_sctp_paddr_change(struct sctp_paddr_change_expr *expr, if (check_u32_expr(expr->spc_error, sctp_event->spc_error, "sctp_paddr_change.spc_error", error)) return STATUS_ERR; - if (check_u32_expr(expr->spc_assoc_id, sctp_event->spc_assoc_id, + if (check_sctp_assoc_t_expr(expr->spc_assoc_id, sctp_event->spc_assoc_id, "sctp_paddr_change.spc_assoc_id", error)) return STATUS_ERR; @@ -4605,7 +4606,7 @@ static int check_sctp_remote_error(struct sctp_remote_error_expr *expr, if (check_u16_expr(expr->sre_error, sctp_event->sre_error, "sctp_remote_error.sre_error", error)) return STATUS_ERR; - if (check_u32_expr(expr->sre_assoc_id, sctp_event->sre_assoc_id, + if (check_sctp_assoc_t_expr(expr->sre_assoc_id, sctp_event->sre_assoc_id, "sctp_remote_error.sre_assoc_id", error)) return STATUS_ERR; if (check_u8array_expr(expr->sre_data, sctp_event->sre_data, sctp_event->sre_length - sizeof(struct sctp_remote_error), @@ -4638,7 +4639,7 @@ static int check_sctp_send_failed(struct sctp_send_failed_expr *expr, &sctp_event->ssf_info, error)) return STATUS_ERR; } - if (check_u32_expr(expr->ssf_assoc_id, sctp_event->ssf_assoc_id, + if (check_sctp_assoc_t_expr(expr->ssf_assoc_id, sctp_event->ssf_assoc_id, "sctp_send_failed.ssf_assoc_id", error)) return STATUS_ERR; if (check_u8array_expr(expr->ssf_data, sctp_event->ssf_data, sctp_event->ssf_length - sizeof(struct sctp_send_failed), @@ -4663,7 +4664,7 @@ static int check_sctp_shutdown_event(struct sctp_shutdown_event_expr *expr, if (check_u32_expr(expr->sse_length, sctp_event->sse_length, "sctp_shutdown_event.sse_length", error)) return STATUS_ERR; - if (check_u32_expr(expr->sse_assoc_id, sctp_event->sse_assoc_id, + if (check_sctp_assoc_t_expr(expr->sse_assoc_id, sctp_event->sse_assoc_id, "sctp_shutdown_event.sse_assoc_id", error)) return STATUS_ERR; @@ -4688,7 +4689,7 @@ static int check_sctp_adaptation_event(struct sctp_adaptation_event_expr *expr, if (check_u32_expr(expr->sai_adaptation_ind, sctp_event->sai_adaptation_ind, "sctp_adaptation_event.sai_adaptation_ind", error)) return STATUS_ERR; - if (check_u32_expr(expr->sai_assoc_id, sctp_event->sai_assoc_id, + if (check_sctp_assoc_t_expr(expr->sai_assoc_id, sctp_event->sai_assoc_id, "sctp_adaptation_event.sai_assoc_id", error)) return STATUS_ERR; @@ -4733,7 +4734,7 @@ static int check_sctp_pdapi_event(struct sctp_pdapi_event_expr *expr, "sctp_pdapi_event.pdapi_seq", error)) return STATUS_ERR; #endif - if (check_u32_expr(expr->pdapi_assoc_id, sctp_event->pdapi_assoc_id, + if (check_sctp_assoc_t_expr(expr->pdapi_assoc_id, sctp_event->pdapi_assoc_id, "sctp_pdapi_event.pdapi_assoc_id", error)) return STATUS_ERR; @@ -4761,7 +4762,7 @@ static int check_sctp_authkey_event(struct sctp_authkey_event_expr *expr, if (check_u32_expr(expr->auth_indication, sctp_event->auth_indication, "sctp_authkey_event.auth_indication", error)) return STATUS_ERR; - if (check_u32_expr(expr->auth_assoc_id, sctp_event->auth_assoc_id, + if (check_sctp_assoc_t_expr(expr->auth_assoc_id, sctp_event->auth_assoc_id, "sctp_authkey_event.auth_assoc_id", error)) return STATUS_ERR; @@ -4783,7 +4784,7 @@ static int check_sctp_sender_dry_event(struct sctp_sender_dry_event_expr *expr, if (check_u32_expr(expr->sender_dry_length, sctp_event->sender_dry_length, "sctp_sender_dry.sender_dry_length", error)) return STATUS_ERR; - if (check_u32_expr(expr->sender_dry_assoc_id, sctp_event->sender_dry_assoc_id, + if (check_sctp_assoc_t_expr(expr->sender_dry_assoc_id, sctp_event->sender_dry_assoc_id, "sctp_sender_dry.sender_dry_assoc_id", error)) return STATUS_ERR; @@ -4811,7 +4812,7 @@ static int check_sctp_send_failed_event(struct sctp_send_failed_event_expr *expr if (check_sctp_sndinfo(expr->ssfe_info->value.sctp_sndinfo, &sctp_event->ssfe_info, error)) return STATUS_ERR; } - if (check_u32_expr(expr->ssfe_assoc_id, sctp_event->ssfe_assoc_id, + if (check_sctp_assoc_t_expr(expr->ssfe_assoc_id, sctp_event->ssfe_assoc_id, "sctp_send_failed.ssfe_assoc_id", error)) return STATUS_ERR; if (check_u8array_expr(expr->ssfe_data, sctp_event->ssfe_data, @@ -5196,7 +5197,7 @@ static int syscall_sctp_connectx(struct state *state, struct syscall_spec *sysca if (check_arg_count(assoc_expr->value.list, 1, error)) return STATUS_ERR; assoc_expr = get_arg(assoc_expr->value.list, 0, error); - if (check_u32_expr(assoc_expr, (u32)live_associd, + if (check_sctp_assoc_t_expr(assoc_expr, live_associd, "sctp_connectx assoc_id", error)) return STATUS_ERR; @@ -5270,7 +5271,7 @@ static int syscall_sctp_getpaddrs(struct state *state, struct syscall_spec *sysc if (to_live_fd(state, script_fd, &live_fd, error)) return STATUS_ERR; assoc_expr = get_arg(args, 1, error); - if (get_sctp_assoc_t(assoc_expr, (u32 *)&assoc_id, error)) + if (get_sctp_assoc_t(assoc_expr, &assoc_id, error)) return STATUS_ERR; begin_syscall(state, syscall); diff --git a/gtests/net/packetdrill/tests/bsd/sctp/sctp_socket_options.pkt b/gtests/net/packetdrill/tests/bsd/sctp/sctp_socket_options.pkt index 8b975d08..d7fdcc7d 100644 --- a/gtests/net/packetdrill/tests/bsd/sctp/sctp_socket_options.pkt +++ b/gtests/net/packetdrill/tests/bsd/sctp/sctp_socket_options.pkt @@ -19,30 +19,30 @@ +0 setsockopt(3, IPPROTO_SCTP, SCTP_NODELAY, [1], 5) = 0 +0 setsockopt(3, IPPROTO_SCTP, SCTP_NODELAY, [1], 3) = -1 (Invalid argument) -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_value=1}, 8) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_value=0}, 8) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_value=1024}, 8) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_value=1}, 9) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_value=1}, 7) = -1 (Invalid argument) - -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=1000, sack_freq=0}, 12) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=500, sack_freq=0}, 12) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=200, sack_freq=0}, 12) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=100, sack_freq=0}, 12) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=10, sack_freq=0}, 12) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=0, sack_freq=1}, 12) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=0, sack_freq=2}, 12) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=0, sack_freq=4}, 12) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=200, sack_freq=2}, 13) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_delay=200, sack_freq=2}, 11) = -1 (Invalid argument) - -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_value=1}, 8) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_value=0}, 8) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_value=1024}, 8) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_value=1}, 9) = 0 -+0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_value=1}, 7) = -1 (Invalid argument) - -+0 setsockopt(3, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, {spp_address={sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("192.0.2.1")}, ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_id=0, assoc_value=1}, 8) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_id=0, assoc_value=0}, 8) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_id=0, assoc_value=1024}, 8) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_id=0, assoc_value=1}, 9) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAXSEG, {assoc_id=0, assoc_value=1}, 7) = -1 (Invalid argument) + ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=1000, sack_freq=0}, 12) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=500, sack_freq=0}, 12) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=200, sack_freq=0}, 12) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=100, sack_freq=0}, 12) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=10, sack_freq=0}, 12) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=0, sack_freq=1}, 12) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=0, sack_freq=2}, 12) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=0, sack_freq=4}, 12) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=200, sack_freq=2}, 13) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_DELAYED_SACK, {sack_assoc_id=0, sack_delay=200, sack_freq=2}, 11) = -1 (Invalid argument) + ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_id=0, assoc_value=1}, 8) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_id=0, assoc_value=0}, 8) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_id=0, assoc_value=1024}, 8) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_id=0, assoc_value=1}, 9) = 0 ++0 setsockopt(3, IPPROTO_SCTP, SCTP_MAX_BURST, {assoc_id=0, assoc_value=1}, 7) = -1 (Invalid argument) + ++0 setsockopt(3, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, {spp_assoc_id=0, spp_address={sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("192.0.2.1")}, spp_hbinterval=30000, spp_pathmaxrxt=100, spp_pathmtu=1468, spp_flags=0, spp_ipv6_flowlabel=0, spp_dscp=0}, 152) = 0 +0 setsockopt(3, IPPROTO_SCTP, SCTP_EVENTS, {sctp_data_io_event=1, sctp_association_event=0, sctp_address_event=0, sctp_send_failure_event=0, diff --git a/gtests/net/packetdrill/tests/bsd/sctp/sendmsg.pkt b/gtests/net/packetdrill/tests/bsd/sctp/sendmsg.pkt index 67d100db..67f5857f 100644 --- a/gtests/net/packetdrill/tests/bsd/sctp/sendmsg.pkt +++ b/gtests/net/packetdrill/tests/bsd/sctp/sendmsg.pkt @@ -13,69 +13,138 @@ +0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 //sendmsg(sd, msghdr, flags) -+0.0 setsockopt(3, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, {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 setsockopt(3, IPPROTO_SCTP, SCTP_PEER_ADDR_PARAMS, {spp_assoc_id=0, + 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 -+1.0 sendmsg(3, {msg_name(...)=..., msg_iov(1)=[{iov_base=..., iov_len=1000}], msg_control(0)=[], msg_flags=0}, 0) = 1000 ++1.0 sendmsg(3, {msg_name(...)=..., + msg_iov(1)=[{iov_base=..., iov_len=1000}], + msg_control(0)=[], + msg_flags=0}, 0) = 1000 * > 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=[]] //base test -+1.0 sendmsg(3, {msg_name(...)=..., msg_iov(1)=[{iov_base=..., iov_len=1000}], msg_control(28)= - [{cmsg_len=28, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_SNDINFO, cmsg_data= - {snd_sid=2, snd_flags=0, snd_ppid=htonl(3), snd_context=2, snd_assoc_id=0} - }], - msg_flags=0}, 0) = 1000 ++1.0 sendmsg(3, {msg_name(...)=..., + msg_iov(1)=[{iov_base=..., iov_len=1000}], + msg_control(28)=[{cmsg_len=28, + cmsg_level=IPPROTO_SCTP, + cmsg_type=SCTP_SNDINFO, + cmsg_data={snd_sid=2, + snd_flags=0, + snd_ppid=htonl(3), + snd_context=2, + snd_assoc_id=0}}], + msg_flags=0}, 0) = 1000 * > sctp: DATA[flgs=BE, len=1016, tsn=2, sid=2, ssn=0, ppid=3] +0.0 < sctp: SACK[flgs=0, cum_tsn=2, a_rwnd=1500, gaps=[], dups=[]] // test with 2 cmsg -+1.0 sendmsg(3, {msg_name(...)=..., msg_iov(1)=[{iov_base=..., iov_len=1000}], msg_control(44)= - [{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 ++1.0 sendmsg(3, {msg_name(...)=..., + msg_iov(1)=[{iov_base=..., iov_len=1000}], + msg_control(44)=[{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 * > sctp: DATA[flgs=BE, len=1016, tsn=3, sid=2, ssn=1, ppid=4] +0.0 < sctp: SACK[flgs=0, cum_tsn=3, a_rwnd=1500, gaps=[], dups=[]] // test with 2 cmsg -+1.0 sendmsg(3, {msg_name(...)=..., msg_iov(1)=[{iov_base=..., iov_len=1000}], msg_control(64)= - [{cmsg_len=28, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_SNDINFO, cmsg_data= - {snd_sid=2, snd_flags=0, snd_ppid=htonl(5), 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")} - },{cmsg_len=18, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_PRINFO, cmsg_data= - {pr_policy=SCTP_PR_SCTP_TTL, pr_value=30} - }], - msg_flags=0}, 0) = 1000 ++1.0 sendmsg(3, {msg_name(...)=..., + msg_iov(1)=[{iov_base=..., iov_len=1000}], + msg_control(64)=[{cmsg_len=28, + cmsg_level=IPPROTO_SCTP, + cmsg_type=SCTP_SNDINFO, + cmsg_data={snd_sid=2, + snd_flags=0, + snd_ppid=htonl(5), + 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")}}, + {cmsg_len=18, + cmsg_level=IPPROTO_SCTP, + cmsg_type=SCTP_PRINFO, + cmsg_data={pr_policy=SCTP_PR_SCTP_TTL, pr_value=30}}], + msg_flags=0}, 0) = 1000 * > sctp: DATA[flgs=BE, len=1016, tsn=4, sid=2, ssn=2, ppid=5] +0.0 < sctp: SACK[flgs=0, cum_tsn=4, a_rwnd=1500, gaps=[], dups=[]] -// test with 2 cmsg -+1.0 sendmsg(3, {msg_name(...)=..., msg_iov(1)=[{iov_base=..., iov_len=1000}], msg_control(80)= - [{cmsg_len=28, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_SNDINFO, cmsg_data= - {snd_sid=2, snd_flags=0, snd_ppid=htonl(6), 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")} - },{cmsg_len=18, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_PRINFO, cmsg_data= - {pr_policy=SCTP_PR_SCTP_TTL, pr_value=30} - },{cmsg_len=14, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_AUTHINFO, cmsg_data= - {auth_keynumber=123} - }], - msg_flags=0}, 0) = 1000 +// test with 4 cmsg ++1.0 sendmsg(3, {msg_name(...)=..., + msg_iov(1)=[{iov_base=..., iov_len=1000}], + msg_control(80)=[{cmsg_len=28, + cmsg_level=IPPROTO_SCTP, + cmsg_type=SCTP_SNDINFO, + cmsg_data={snd_sid=2, + snd_flags=0, + snd_ppid=htonl(6), + 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")}}, + {cmsg_len=18, + cmsg_level=IPPROTO_SCTP, + cmsg_type=SCTP_PRINFO, + cmsg_data={pr_policy=SCTP_PR_SCTP_TTL, pr_value=30}}, + {cmsg_len=14, + cmsg_level=IPPROTO_SCTP, + cmsg_type=SCTP_AUTHINFO, + cmsg_data={auth_keynumber=123}}], + msg_flags=0}, 0) = 1000 * > sctp: DATA[flgs=BE, len=1016, tsn=5, sid=2, ssn=3, ppid=6] +0.0 < sctp: SACK[flgs=0, cum_tsn=5, a_rwnd=1500, gaps=[], dups=[]] //test for sndrcvinfo -+1.0 sendmsg(3, {msg_name(...)=..., msg_iov(1)=[{iov_base=..., iov_len=1000}], msg_control(168)= - [{cmsg_len=28, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_SNDINFO, cmsg_data= - {snd_sid=2, snd_flags=0, snd_ppid=htonl(6), snd_context=2, snd_assoc_id=0} - },{cmsg_len=140, cmsg_level=IPPROTO_SCTP, cmsg_type=SCTP_SNDRCV, cmsg_data= - {sinfo_stream=3, sinfo_ssn=3, sinfo_flags=0, sinfo_ppid=htonl(7), sinfo_context=0, sinfo_timetolive=0, sinfo_tsn=6, sinfo_cumtsn=6, sinfo_assoc_id=3} - }], - msg_flags=0}, 0) = 1000 ++1.0 sendmsg(3, {msg_name(...)=..., + msg_iov(1)=[{iov_base=..., iov_len=1000}], + msg_control(168)=[{cmsg_len=28, + cmsg_level=IPPROTO_SCTP, + cmsg_type=SCTP_SNDINFO, + cmsg_data={snd_sid=2, + snd_flags=0, + snd_ppid=htonl(6), + snd_context=2, + snd_assoc_id=0}}, + {cmsg_len=140, + cmsg_level=IPPROTO_SCTP, + cmsg_type=SCTP_SNDRCV, + cmsg_data={sinfo_stream=3, + sinfo_ssn=3, + sinfo_flags=0, + sinfo_ppid=htonl(7), + sinfo_context=0, + sinfo_timetolive=0, + sinfo_tsn=6, + sinfo_cumtsn=6, + sinfo_assoc_id=3}}], + msg_flags=0}, 0) = 1000 * > sctp: DATA[flgs=BE, len=1016, tsn=6, sid=3, ssn=0, ppid=7] +0.0 < sctp: SACK[flgs=0, cum_tsn=6, a_rwnd=1500, gaps=[], dups=[]] -- GitLab