Skip to content
Snippets Groups Projects
Commit 96b0d588 authored by hoelscher's avatar hoelscher
Browse files

Add support for symbolic name for spinfo_state for sctp_status

parent 39087f0c
No related branches found
No related tags found
No related merge requests found
......@@ -2425,9 +2425,7 @@ sctp_sackinfo
;
sstat_state
: SSTAT_STATE '=' expression {
$$ = $3;
}
: SSTAT_STATE '=' expression { $$ = $3; }
;
sstat_rwnd
......@@ -2502,6 +2500,10 @@ spinfo_state
}
$$ = new_integer_expression($3, "%d");
}
| SPINFO_STATE '=' WORD {
$$ = new_expression(EXPR_WORD);
$$->value.string = $3;
}
| SPINFO_STATE '=' ELLIPSIS { $$ = new_expression(EXPR_ELLIPSIS); }
;
......
......@@ -559,6 +559,21 @@ static int evaluate_sctp_status_expression(struct expression *in,
&out_status->sstat_primary,
error))
return STATUS_ERR;
if (in_status->sstat_primary->type == EXPR_SCTP_PADDRINFO) {
struct sctp_paddrinfo_expr *paddrinfo = in_status->sstat_primary->value.sctp_paddrinfo;
if (paddrinfo->spinfo_state->type == EXPR_WORD) {
s64 val_state = 0;
if (symbol_to_int(paddrinfo->spinfo_state->value.string,
&val_state, error) == STATUS_OK) {
paddrinfo->spinfo_state->type = EXPR_INTEGER;
paddrinfo->spinfo_state->value.num = val_state;
} else {
asprintf(error, "bad expression unknown symbol for spinfo_state %s",
paddrinfo->spinfo_state->value.string);
return STATUS_ERR;
}
}
}
return STATUS_OK;
}
#endif
......
......@@ -98,6 +98,11 @@ struct int_symbol platform_symbols_table[] = {
{ SCTP_SHUTDOWN_ACK_SENT, "SCTP_SHUTDOWN_ACK_SENT" },
{ SCTP_SHUTDOWN_PENDING, "SCTP_SHUTDOWN_PENDING" },
/* /usr/include/netinet/sctp_uio.h */
{ SCTP_UNCONFIRMED, "SCTP_UNCONFIRMED" },
{ SCTP_ACTIVE, "SCTP_ACTIVE" },
{ SCTP_INACTIVE, "SCTP_INACTIVE" },
/* /usr/include/netinet/tcp.h */
{ TCP_NODELAY, "TCP_NODELAY" },
{ TCP_MAXSEG, "TCP_MAXSEG" },
......
......@@ -136,6 +136,9 @@ struct int_symbol platform_symbols_table[] = {
{ SCTP_SHUTDOWN_RECEIVED, "SCTP_SHUTDOWN_RECEIVED" },
{ SCTP_SHUTDOWN_ACK_SENT, "SCTP_SHUTDOWN_ACK_SENT" },
{ SCTP_SHUTDOWN_PENDING, "SCTP_SHUTDOWN_PENDING" },
{ SCTP_UNCONFIRMED, "SCTP_UNCONFIRMED" },
{ SCTP_ACTIVE, "SCTP_ACTIVE" },
{ SCTP_INACTIVE, "SCTP_INACTIVE" },
{ TCP_NODELAY, "TCP_NODELAY" },
{ TCP_MAXSEG, "TCP_MAXSEG" },
......
......@@ -35,9 +35,9 @@ sstat_penddata=0, sstat_instrms=1, sstat_outstrms=..., sstat_fragmentation_point
+0 getsockopt(3, IPPROTO_SCTP, SCTP_STATUS, {sstat_state=8, sstat_rwnd=1500, sstat_unackdata=0,
sstat_penddata=0, sstat_instrms=1, sstat_outstrms=1, sstat_fragmentation_point=..., sstat_primary=...}, [176])= 0
+0 getsockopt(3, IPPROTO_SCTP, SCTP_STATUS, {sstat_state=8, sstat_rwnd=1500, sstat_unackdata=0, sstat_penddata=0, sstat_instrms=1,
sstat_outstrms=1, sstat_fragmentation_point=...,
sstat_primary={ spinfo_state=1, spinfo_cwnd=4464, spinfo_srtt=..., spinfo_rto=1000, spinfo_mtu=1468} }, [176])= 0
+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=...,
sstat_primary={ spinfo_state=SCTP_ACTIVE, spinfo_cwnd=4464, spinfo_srtt=..., spinfo_rto=1000, spinfo_mtu=1468} }, [176])= 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")},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment