From eda59ca8c8193386a3064cd05c607c7b1625691a Mon Sep 17 00:00:00 2001 From: Michael Tuexen <tuexen@fh-muenster.de> Date: Sat, 19 Sep 2015 05:18:46 +0200 Subject: [PATCH] Add support for SCTP_INTERLEAVING_SUPPORTED socket option. This is untested, since the kernel doesn't support it yet... --- gtests/net/packetdrill/parser.y | 2 +- gtests/net/packetdrill/run_system_call.c | 2 +- gtests/net/packetdrill/script.c | 6 +++--- gtests/net/packetdrill/script.h | 4 ++-- gtests/net/packetdrill/symbols_freebsd.c | 3 +++ gtests/net/packetdrill/symbols_linux.c | 3 +++ 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/gtests/net/packetdrill/parser.y b/gtests/net/packetdrill/parser.y index 551dd66a..bf8fee59 100644 --- a/gtests/net/packetdrill/parser.y +++ b/gtests/net/packetdrill/parser.y @@ -2517,7 +2517,7 @@ sctp_initmsg sctp_assocval : '{' ASSOC_VALUE '=' INTEGER '}' { -#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) +#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) || defined(SCTP_INTERLEAVING_SUPPORTED) $$ = new_expression(EXPR_SCTP_ASSOCVAL); if (!is_valid_u32($4)) { semantic_error("assoc_value out of range"); diff --git a/gtests/net/packetdrill/run_system_call.c b/gtests/net/packetdrill/run_system_call.c index a60b0662..77d7aeb4 100644 --- a/gtests/net/packetdrill/run_system_call.c +++ b/gtests/net/packetdrill/run_system_call.c @@ -1645,7 +1645,7 @@ static int syscall_setsockopt(struct state *state, struct syscall_spec *syscall, } else if (val_expression->type == EXPR_SCTP_INITMSG) { optval = &val_expression->value.sctp_initmsg; #endif -#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) +#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) || defined(SCTP_INTERLEAVING_SUPPORTED) } else if (val_expression->type == EXPR_SCTP_ASSOCVAL) { optval = &val_expression->value.sctp_assoc_value; #endif diff --git a/gtests/net/packetdrill/script.c b/gtests/net/packetdrill/script.c index c4fdb4b2..96e53b80 100644 --- a/gtests/net/packetdrill/script.c +++ b/gtests/net/packetdrill/script.c @@ -71,7 +71,7 @@ struct expression_type_entry expression_type_table[] = { #ifdef SCTP_INITMSG { EXPR_SCTP_INITMSG, "sctp_initmsg"}, #endif -#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) +#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) || defined(SCTP_INTERLEAVING_SUPPORTED) { EXPR_SCTP_ASSOCVAL, "sctp_assocvalue"}, #endif #ifdef SCTP_DELAYED_SACK @@ -292,7 +292,7 @@ void free_expression(struct expression *expression) #ifdef SCTP_INITMSG case EXPR_SCTP_INITMSG: #endif -#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) +#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) || defined(SCTP_INTERLEAVING_SUPPORTED) case EXPR_SCTP_ASSOCVAL: #endif #ifdef SCTP_DELAYED_SACK @@ -522,7 +522,7 @@ static int evaluate(struct expression *in, sizeof(in->value.sctp_initmsg)); break; #endif -#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) +#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) || defined(SCTP_INTERLEAVING_SUPPORTED) case EXPR_SCTP_ASSOCVAL: /* copy as-is */ memcpy(&out->value.sctp_assoc_value, &in->value.sctp_assoc_value, diff --git a/gtests/net/packetdrill/script.h b/gtests/net/packetdrill/script.h index a2b2e46b..62fa122a 100644 --- a/gtests/net/packetdrill/script.h +++ b/gtests/net/packetdrill/script.h @@ -51,7 +51,7 @@ enum expression_t { #ifdef SCTP_INITMSG EXPR_SCTP_INITMSG, /* struct sctp_initmsg for SCTP_INITMSG */ #endif -#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) +#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) || defined(SCTP_INTERLEAVING_SUPPORTED) EXPR_SCTP_ASSOCVAL, /* struct sctp_assoc_value */ #endif #ifdef SCTP_DELAYED_SACK @@ -86,7 +86,7 @@ struct expression { #ifdef SCTP_INITMSG struct sctp_initmsg sctp_initmsg; #endif -#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) +#if defined(SCTP_MAXSEG) || defined(SCTP_MAX_BURST) || defined(SCTP_INTERLEAVING_SUPPORTED) struct sctp_assoc_value sctp_assoc_value; #endif #ifdef SCTP_DELAYED_SACK diff --git a/gtests/net/packetdrill/symbols_freebsd.c b/gtests/net/packetdrill/symbols_freebsd.c index 9e4e8093..87796ca9 100644 --- a/gtests/net/packetdrill/symbols_freebsd.c +++ b/gtests/net/packetdrill/symbols_freebsd.c @@ -86,6 +86,9 @@ struct int_symbol platform_symbols_table[] = { { SCTP_DELAYED_SACK, "SCTP_DELAYED_SACK" }, { SCTP_MAX_BURST, "SCTP_MAX_BURST" }, { SCTP_STATUS, "SCTP_STATUS" }, +#if defined(SCTP_INTERLEAVING_SUPPORTED) + { SCTP_INTERLEAVING_SUPPORTED, "SCTP_INTERLEAVING_SUPPORTED" }, +#endif { SCTP_CLOSED, "SCTP_CLOSED" }, { SCTP_BOUND, "SCTP_BOUND" }, { SCTP_LISTEN, "SCTP_LISTEN" }, diff --git a/gtests/net/packetdrill/symbols_linux.c b/gtests/net/packetdrill/symbols_linux.c index 33b7797c..c79051eb 100644 --- a/gtests/net/packetdrill/symbols_linux.c +++ b/gtests/net/packetdrill/symbols_linux.c @@ -120,6 +120,9 @@ struct int_symbol platform_symbols_table[] = { #endif #ifdef SCTP_STATUS { SCTP_STATUS, "SCTP_STATUS" }, +#endif +#if defined(SCTP_INTERLEAVING_SUPPORTED) + { SCTP_INTERLEAVING_SUPPORTED, "SCTP_INTERLEAVING_SUPPORTED" }, #endif { SCTP_CLOSED, "SCTP_CLOSED" }, #if 0 -- GitLab