From 39087f0cc1dd43b1a79b07f6d02d8bd2a960d8f5 Mon Sep 17 00:00:00 2001 From: hoelscher <jens.hoelscher@fh-muenster.de> Date: Wed, 30 Sep 2015 23:22:09 +0200 Subject: [PATCH] Add for sctp_status symbolic names for sstat_state --- gtests/net/packetdrill/script.c | 21 +++++++++++++++---- .../bsd/sctp/sctp_get_socket_options.pkt | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/gtests/net/packetdrill/script.c b/gtests/net/packetdrill/script.c index 56a74a77..f5d21c2f 100644 --- a/gtests/net/packetdrill/script.c +++ b/gtests/net/packetdrill/script.c @@ -514,7 +514,20 @@ static int evaluate_sctp_status_expression(struct expression *in, in_status = in->value.sctp_status; out_status = out->value.sctp_status; - if (evaluate(in_status->sstat_state, + if (in_status->sstat_state->type == EXPR_WORD) { + s64 val_state = 0; + if (symbol_to_int(in_status->sstat_state->value.string, + &val_state, error) == STATUS_OK) { + out_status->sstat_state = (struct expression*) + calloc(1, sizeof(struct expression)); + out_status->sstat_state->type = EXPR_INTEGER; + out_status->sstat_state->value.num = val_state; + } else { + asprintf(error, "bad expression unknown symbol for sstat_state %s", + in_status->sstat_state->value.string); + return STATUS_ERR; + } + } else if (evaluate(in_status->sstat_state, &out_status->sstat_state, error)) return STATUS_ERR; @@ -624,11 +637,11 @@ static int evaluate(struct expression *in, #endif #ifdef SCTP_STATUS case EXPR_SCTP_PADDRINFO: - result = evaluate_sctp_status_expression(in, out, error); + memcpy(&out->value.sctp_paddrinfo, &in->value.sctp_paddrinfo, + sizeof(in->value.sctp_paddrinfo)); break; case EXPR_SCTP_STATUS: /* copy as-is */ - memcpy(&out->value.sctp_status, &in->value.sctp_status, - sizeof(in->value.sctp_status)); + result = evaluate_sctp_status_expression(in, out, error); break; #endif #ifdef SCTP_PEER_ADDR_PARAMS diff --git a/gtests/net/packetdrill/tests/bsd/sctp/sctp_get_socket_options.pkt b/gtests/net/packetdrill/tests/bsd/sctp/sctp_get_socket_options.pkt index 173449ba..7bc70cd2 100644 --- a/gtests/net/packetdrill/tests/bsd/sctp/sctp_get_socket_options.pkt +++ b/gtests/net/packetdrill/tests/bsd/sctp/sctp_get_socket_options.pkt @@ -11,7 +11,7 @@ //+0.0 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0 -+0 getsockopt(3, IPPROTO_SCTP, SCTP_STATUS, {sstat_state=..., sstat_rwnd=1500, ++0 getsockopt(3, IPPROTO_SCTP, SCTP_STATUS, {sstat_state=SCTP_ESTABLISHED, sstat_rwnd=1500, sstat_unackdata=0, sstat_penddata=0, sstat_instrms=1, sstat_outstrms=1, sstat_fragmentation_point=1452, sstat_primary=...}, [176])= 0 +0 getsockopt(3, IPPROTO_SCTP, SCTP_STATUS, {sstat_state=..., sstat_rwnd=1500, sstat_unackdata=0, -- GitLab