From c6da470a46c3879a113d4f58e229be3512a6e265 Mon Sep 17 00:00:00 2001 From: hoelscher <jens.hoelscher@fh-muenster.de> Date: Tue, 20 Oct 2015 04:11:07 +0200 Subject: [PATCH] modify script.c for sctp_events --- gtests/net/packetdrill/script.c | 76 +++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/gtests/net/packetdrill/script.c b/gtests/net/packetdrill/script.c index eaeea6ae..adf37cd8 100644 --- a/gtests/net/packetdrill/script.c +++ b/gtests/net/packetdrill/script.c @@ -76,6 +76,7 @@ struct expression_type_entry expression_type_table[] = { { EXPR_SCTP_STREAM_VALUE, "sctp_stream_value"}, { EXPR_SCTP_ASSOCPARAMS, "sctp_assocparams"}, { EXPR_SCTP_EVENT, "sctp_event" }, + { EXPR_SCTP_EVENT_SUBSCRIBE, "sctp_event_subscribe"}, { EXPR_SCTP_SNDINFO, "sctp_sndinfo" }, { EXPR_SCTP_SETADAPTATION, "sctp_setadaptation"}, { EXPR_SCTP_SNDRCVINFO, "sctp_sndrcvinfo" }, @@ -366,6 +367,18 @@ void free_expression(struct expression *expression) free_expression(expression->value.sctp_event->se_type); free_expression(expression->value.sctp_event->se_on); break; + case EXPR_SCTP_EVENT_SUBSCRIBE: + free_expression(expression->value.sctp_event_subscribe->sctp_data_io_event); + free_expression(expression->value.sctp_event_subscribe->sctp_association_event); + free_expression(expression->value.sctp_event_subscribe->sctp_address_event); + free_expression(expression->value.sctp_event_subscribe->sctp_send_failure_event); + free_expression(expression->value.sctp_event_subscribe->sctp_peer_error_event); + free_expression(expression->value.sctp_event_subscribe->sctp_shutdown_event); + free_expression(expression->value.sctp_event_subscribe->sctp_partial_delivery_event); + free_expression(expression->value.sctp_event_subscribe->sctp_adaptation_layer_event); + free_expression(expression->value.sctp_event_subscribe->sctp_authentication_event); + free_expression(expression->value.sctp_event_subscribe->sctp_sender_dry_event); + break; case EXPR_SCTP_SNDINFO: free_expression(expression->value.sctp_sndinfo->snd_sid); free_expression(expression->value.sctp_sndinfo->snd_flags); @@ -924,6 +937,66 @@ static int evaluate_sctp_event_expression(struct expression *in, return STATUS_OK; } +static int evaluate_sctp_event_subscribe_expression(struct expression *in, + struct expression *out, + char **error) +{ + struct sctp_event_subscribe_expr *in_event; + struct sctp_event_subscribe_expr *out_event; + + assert(in->type == EXPR_SCTP_EVENT_SUBSCRIBE); + assert(in->value.sctp_event_subscribe); + assert(out->type == EXPR_SCTP_EVENT_SUBSCRIBE); + + out->value.sctp_event_subscribe = calloc(1, sizeof(struct sctp_event_subscribe_expr)); + + in_event = in->value.sctp_event_subscribe; + out_event = out->value.sctp_event_subscribe; + + if (evaluate(in_event->sctp_data_io_event, + &out_event->sctp_data_io_event, + error)) + return STATUS_ERR; + if (evaluate(in_event->sctp_association_event, + &out_event->sctp_association_event, + error)) + return STATUS_ERR; + if (evaluate(in_event->sctp_address_event, + &out_event->sctp_address_event, + error)) + return STATUS_ERR; + if (evaluate(in_event->sctp_send_failure_event, + &out_event->sctp_send_failure_event, + error)) + return STATUS_ERR; + if (evaluate(in_event->sctp_peer_error_event, + &out_event->sctp_peer_error_event, + error)) + return STATUS_ERR; + if (evaluate(in_event->sctp_shutdown_event, + &out_event->sctp_shutdown_event, + error)) + return STATUS_ERR; + if (evaluate(in_event->sctp_partial_delivery_event, + &out_event->sctp_partial_delivery_event, + error)) + return STATUS_ERR; + if (evaluate(in_event->sctp_adaptation_layer_event, + &out_event->sctp_adaptation_layer_event, + error)) + return STATUS_ERR; + if (evaluate(in_event->sctp_authentication_event, + &out_event->sctp_authentication_event, + error)) + return STATUS_ERR; + if (evaluate(in_event->sctp_sender_dry_event, + &out_event->sctp_sender_dry_event, + error)) + return STATUS_ERR; + + return STATUS_ERR; +} + static int evaluate_sctp_accocparams_expression(struct expression *in, struct expression *out, char **error) @@ -1360,6 +1433,9 @@ static int evaluate(struct expression *in, case EXPR_SCTP_EVENT: result = evaluate_sctp_event_expression(in, out, error); break; + case EXPR_SCTP_EVENT_SUBSCRIBE: + result = evaluate_sctp_event_subscribe_expression(in, out, error); + break; case EXPR_SCTP_SNDINFO: result = evaluate_sctp_sndinfo_expression(in, out, error); break; -- GitLab