diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c index 84a6a847285ddc96ada006b170f0246fab3b72e8..de752955ddeff4fb5c4685378213b734e912dd1c 100644 --- a/gtests/net/packetdrill/run_system_call.c +++ b/gtests/net/packetdrill/run_system_call.c @@ -3923,6 +3923,7 @@ static int parse_expression_to_sctp_sendv_spa(struct expression *expr, struct sc } #endif +#if defined(__FreeBSD__) static int get_sockaddr_from_list(struct expression *expr, size_t *addr_size, struct sockaddr **addrs, char **error) { if (expr->type == EXPR_LIST) { struct expression_list *addrs_expr_list = (struct expression_list *)expr->value.list; @@ -3969,6 +3970,7 @@ static int get_sockaddr_from_list(struct expression *expr, size_t *addr_size, st return STATUS_ERR; } } +#endif static int syscall_sctp_sendv(struct state *state, struct syscall_spec *syscall, struct expression_list *args, @@ -4792,6 +4794,11 @@ static int syscall_sctp_connectx(struct state *state, struct syscall_spec *sysca return STATUS_ERR; assoc_expr = get_arg(args, 3, error); + if (check_type(assoc_expr, EXPR_LIST, error)) + return STATUS_ERR; + 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, "sctp_connectx assoc_id", error)) return STATUS_ERR; diff --git a/gtests/net/packetdrill/tests/bsd/sctp/sctp_active_x.pkt b/gtests/net/packetdrill/tests/bsd/sctp/sctp_active_x.pkt index 15af1333eb151f2d0780e248a68803e24081f1ca..e8927bdabe1e1a5da477d1c09220fddf79ed6ae9 100644 --- a/gtests/net/packetdrill/tests/bsd/sctp/sctp_active_x.pkt +++ b/gtests/net/packetdrill/tests/bsd/sctp/sctp_active_x.pkt @@ -5,7 +5,7 @@ +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.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=...]