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

add syntax with and without sctp_assoc_id for all sockopt structures

parent 2a38068b
No related branches found
No related tags found
No related merge requests found
...@@ -610,7 +610,7 @@ static struct tcp_option *new_tcp_fast_open_option(const char *cookie_string, ...@@ -610,7 +610,7 @@ static struct tcp_option *new_tcp_fast_open_option(const char *cookie_string,
%type <expression> sctp_sackinfo sack_delay sack_freq %type <expression> sctp_sackinfo sack_delay sack_freq
%type <expression> sctp_rtoinfo srto_initial srto_max srto_min sctp_paddrinfo %type <expression> sctp_rtoinfo srto_initial srto_max srto_min sctp_paddrinfo
%type <expression> sctp_paddrparams spp_address spp_hbinterval spp_pathmtu spp_pathmaxrxt %type <expression> sctp_paddrparams spp_address spp_hbinterval spp_pathmtu spp_pathmaxrxt
%type <expression> spp_flags spp_ipv6_flowlabel spp_dscp %type <expression> spp_flags spp_ipv6_flowlabel spp_dscp ssp_addr
%type <expression> spinfo_address spinfo_state spinfo_cwnd spinfo_srtt spinfo_rto spinfo_mtu %type <expression> spinfo_address spinfo_state spinfo_cwnd spinfo_srtt spinfo_rto spinfo_mtu
%type <expression> sasoc_asocmaxrxt sasoc_number_peer_destinations sasoc_peer_rwnd %type <expression> sasoc_asocmaxrxt sasoc_number_peer_destinations sasoc_peer_rwnd
%type <expression> sasoc_local_rwnd sasoc_cookie_life sctp_assocparams %type <expression> sasoc_local_rwnd sasoc_cookie_life sctp_assocparams
...@@ -2826,6 +2826,14 @@ sctp_rtoinfo ...@@ -2826,6 +2826,14 @@ sctp_rtoinfo
$$->value.sctp_rtoinfo->srto_max = $8; $$->value.sctp_rtoinfo->srto_max = $8;
$$->value.sctp_rtoinfo->srto_min = $10; $$->value.sctp_rtoinfo->srto_min = $10;
} }
| '{' srto_initial ',' srto_max ',' srto_min '}' {
$$ = new_expression(EXPR_SCTP_RTOINFO);
$$->value.sctp_rtoinfo = calloc(1, sizeof(struct sctp_rtoinfo_expr));
$$->value.sctp_rtoinfo->srto_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_rtoinfo->srto_initial = $2;
$$->value.sctp_rtoinfo->srto_max = $4;
$$->value.sctp_rtoinfo->srto_min = $6;
}
; ;
sinit_num_ostreams sinit_num_ostreams
...@@ -2896,6 +2904,12 @@ sctp_assoc_value ...@@ -2896,6 +2904,12 @@ sctp_assoc_value
$$->value.sctp_assoc_value->assoc_id = $4; $$->value.sctp_assoc_value->assoc_id = $4;
$$->value.sctp_assoc_value->assoc_value = $8; $$->value.sctp_assoc_value->assoc_value = $8;
} }
| '{' ASSOC_VALUE '=' expression '}' {
$$ = new_expression(EXPR_SCTP_ASSOC_VALUE);
$$->value.sctp_assoc_value = calloc(1, sizeof(struct sctp_assoc_value_expr));
$$->value.sctp_assoc_value->assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_assoc_value->assoc_value = $4;
}
; ;
sack_delay sack_delay
...@@ -2924,6 +2938,13 @@ sctp_sackinfo ...@@ -2924,6 +2938,13 @@ sctp_sackinfo
$$->value.sctp_sack_info->sack_delay = $6; $$->value.sctp_sack_info->sack_delay = $6;
$$->value.sctp_sack_info->sack_freq = $8; $$->value.sctp_sack_info->sack_freq = $8;
} }
| '{' sack_delay ',' sack_freq '}' {
$$ = new_expression(EXPR_SCTP_SACKINFO);
$$->value.sctp_sack_info = calloc(1, sizeof(struct sctp_sack_info_expr));
$$->value.sctp_sack_info->sack_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_sack_info->sack_delay = $2;
$$->value.sctp_sack_info->sack_freq = $4;
}
; ;
sstat_state sstat_state
...@@ -3067,6 +3088,18 @@ sctp_paddrinfo ...@@ -3067,6 +3088,18 @@ sctp_paddrinfo
$$->value.sctp_paddrinfo->spinfo_rto = $14; $$->value.sctp_paddrinfo->spinfo_rto = $14;
$$->value.sctp_paddrinfo->spinfo_mtu = $16; $$->value.sctp_paddrinfo->spinfo_mtu = $16;
} }
| '{' spinfo_address ',' spinfo_state ',' spinfo_cwnd ','
spinfo_srtt ',' spinfo_rto ',' spinfo_mtu '}' {
$$ = new_expression(EXPR_SCTP_PADDRINFO);
$$->value.sctp_paddrinfo = calloc(1, sizeof(struct sctp_paddrinfo_expr));
$$->value.sctp_paddrinfo->spinfo_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_paddrinfo->spinfo_address = $2;
$$->value.sctp_paddrinfo->spinfo_state = $4;
$$->value.sctp_paddrinfo->spinfo_cwnd = $6;
$$->value.sctp_paddrinfo->spinfo_srtt = $8;
$$->value.sctp_paddrinfo->spinfo_rto = $10;
$$->value.sctp_paddrinfo->spinfo_mtu = $12;
}
; ;
sctp_status sctp_status
...@@ -3084,6 +3117,20 @@ sctp_status ...@@ -3084,6 +3117,20 @@ sctp_status
$$->value.sctp_status->sstat_fragmentation_point = $18; $$->value.sctp_status->sstat_fragmentation_point = $18;
$$->value.sctp_status->sstat_primary = $20; $$->value.sctp_status->sstat_primary = $20;
} }
| '{' sstat_state ',' sstat_rwnd ',' sstat_unackdata ',' sstat_penddata ',' sstat_instrms ',' sstat_outstrms ','
sstat_fragmentation_point ',' sstat_primary '}' {
$$ = new_expression(EXPR_SCTP_STATUS);
$$->value.sctp_status = calloc(1, sizeof(struct sctp_status_expr));
$$->value.sctp_status->sstat_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_status->sstat_state = $2;
$$->value.sctp_status->sstat_rwnd = $4;
$$->value.sctp_status->sstat_unackdata = $6;
$$->value.sctp_status->sstat_penddata = $8;
$$->value.sctp_status->sstat_instrms = $10;
$$->value.sctp_status->sstat_outstrms = $12;
$$->value.sctp_status->sstat_fragmentation_point = $14;
$$->value.sctp_status->sstat_primary = $16;
}
; ;
spp_address spp_address
...@@ -3159,6 +3206,19 @@ sctp_paddrparams ...@@ -3159,6 +3206,19 @@ sctp_paddrparams
$$->value.sctp_paddrparams->spp_ipv6_flowlabel = $16; $$->value.sctp_paddrparams->spp_ipv6_flowlabel = $16;
$$->value.sctp_paddrparams->spp_dscp = $18; $$->value.sctp_paddrparams->spp_dscp = $18;
} }
| '{' spp_address ',' spp_hbinterval ',' spp_pathmaxrxt ',' spp_pathmtu ','spp_flags ','
spp_ipv6_flowlabel ',' spp_dscp'}' {
$$ = new_expression(EXPR_SCTP_PEER_ADDR_PARAMS);
$$->value.sctp_paddrparams = calloc(1, sizeof(struct sctp_paddrparams_expr));
$$->value.sctp_paddrparams->spp_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_paddrparams->spp_address = $2;
$$->value.sctp_paddrparams->spp_hbinterval = $4;
$$->value.sctp_paddrparams->spp_pathmaxrxt = $6;
$$->value.sctp_paddrparams->spp_pathmtu = $8;
$$->value.sctp_paddrparams->spp_flags = $10;
$$->value.sctp_paddrparams->spp_ipv6_flowlabel = $12;
$$->value.sctp_paddrparams->spp_dscp = $14;
}
; ;
sasoc_asocmaxrxt sasoc_asocmaxrxt
...@@ -3223,6 +3283,17 @@ sctp_assocparams ...@@ -3223,6 +3283,17 @@ sctp_assocparams
$$->value.sctp_assocparams->sasoc_local_rwnd = $12; $$->value.sctp_assocparams->sasoc_local_rwnd = $12;
$$->value.sctp_assocparams->sasoc_cookie_life = $14; $$->value.sctp_assocparams->sasoc_cookie_life = $14;
} }
| '{' sasoc_asocmaxrxt ',' sasoc_number_peer_destinations ','
sasoc_peer_rwnd ',' sasoc_local_rwnd ',' sasoc_cookie_life '}' {
$$ = new_expression(EXPR_SCTP_ASSOCPARAMS);
$$->value.sctp_assocparams = calloc(1, sizeof(struct sctp_assocparams_expr));
$$->value.sctp_assocparams->sasoc_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_assocparams->sasoc_asocmaxrxt = $2;
$$->value.sctp_assocparams->sasoc_number_peer_destinations = $4;
$$->value.sctp_assocparams->sasoc_peer_rwnd = $6;
$$->value.sctp_assocparams->sasoc_local_rwnd = $8;
$$->value.sctp_assocparams->sasoc_cookie_life = $10;
}
; ;
se_type se_type
...@@ -3256,6 +3327,13 @@ sctp_event ...@@ -3256,6 +3327,13 @@ sctp_event
$$->value.sctp_event->se_type = $6; $$->value.sctp_event->se_type = $6;
$$->value.sctp_event->se_on = $8; $$->value.sctp_event->se_on = $8;
} }
| '{' se_type ',' se_on '}' {
$$ = new_expression(EXPR_SCTP_EVENT);
$$->value.sctp_event = calloc(1, sizeof(struct sctp_event_expr));
$$->value.sctp_event->se_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_event->se_type = $2;
$$->value.sctp_event->se_on = $4;
}
; ;
sctp_event_subscribe sctp_event_subscribe
...@@ -3353,20 +3431,33 @@ sctp_sndinfo ...@@ -3353,20 +3431,33 @@ sctp_sndinfo
$$->value.sctp_sndinfo->snd_context = $8; $$->value.sctp_sndinfo->snd_context = $8;
$$->value.sctp_sndinfo->snd_assoc_id = $12; $$->value.sctp_sndinfo->snd_assoc_id = $12;
} }
| '{' snd_sid ',' snd_flags ',' snd_ppid ',' snd_context '}' {
$$ = new_expression(EXPR_SCTP_SNDINFO);
$$->value.sctp_sndinfo = calloc(1, sizeof(struct sctp_sndinfo_expr));
$$->value.sctp_sndinfo->snd_sid = $2;
$$->value.sctp_sndinfo->snd_flags = $4;
$$->value.sctp_sndinfo->snd_ppid = $6;
$$->value.sctp_sndinfo->snd_context = $8;
$$->value.sctp_sndinfo->snd_assoc_id = new_expression(EXPR_ELLIPSIS);
}
;
ssp_addr
: SSP_ADDR '=' sockaddr { $$ = $3; }
| SSP_ADDR '=' ELLIPSIS { $$ = new_expression(EXPR_ELLIPSIS); }
; ;
sctp_setprim sctp_setprim
: '{' SSP_ASSOC_ID '=' sctp_assoc_id ',' SSP_ADDR '=' sockaddr'}' { : '{' SSP_ASSOC_ID '=' sctp_assoc_id ',' ssp_addr '}' {
$$ = new_expression(EXPR_SCTP_SETPRIM); $$ = new_expression(EXPR_SCTP_SETPRIM);
$$->value.sctp_setprim = calloc(1, sizeof(struct sctp_setprim_expr)); $$->value.sctp_setprim = calloc(1, sizeof(struct sctp_setprim_expr));
$$->value.sctp_setprim->ssp_assoc_id = $4; $$->value.sctp_setprim->ssp_assoc_id = $4;
$$->value.sctp_setprim->ssp_addr = $8; $$->value.sctp_setprim->ssp_addr = $6;
} }
| '{' SSP_ASSOC_ID '=' sctp_assoc_id ',' SSP_ADDR '=' ELLIPSIS'}' { | '{' ssp_addr '}' {
$$ = new_expression(EXPR_SCTP_SETPRIM); $$ = new_expression(EXPR_SCTP_SETPRIM);
$$->value.sctp_setprim = calloc(1, sizeof(struct sctp_setprim_expr)); $$->value.sctp_setprim = calloc(1, sizeof(struct sctp_setprim_expr));
$$->value.sctp_setprim->ssp_assoc_id = $4; $$->value.sctp_setprim->ssp_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_setprim->ssp_addr = new_expression(EXPR_ELLIPSIS); $$->value.sctp_setprim->ssp_addr = $2;
} }
; ;
...@@ -3474,6 +3565,20 @@ sctp_sndrcvinfo ...@@ -3474,6 +3565,20 @@ sctp_sndrcvinfo
$$->value.sctp_sndrcvinfo->sinfo_tsn = $14; $$->value.sctp_sndrcvinfo->sinfo_tsn = $14;
$$->value.sctp_sndrcvinfo->sinfo_cumtsn = $16; $$->value.sctp_sndrcvinfo->sinfo_cumtsn = $16;
$$->value.sctp_sndrcvinfo->sinfo_assoc_id = $20; $$->value.sctp_sndrcvinfo->sinfo_assoc_id = $20;
}
| '{' sinfo_stream ',' sinfo_ssn ',' sinfo_flags ',' sinfo_ppid ',' sinfo_context ',' sinfo_timetolive ','
sinfo_tsn ',' sinfo_cumtsn '}' {
$$ = new_expression(EXPR_SCTP_SNDRCVINFO);
$$->value.sctp_sndrcvinfo = calloc(1, sizeof(struct sctp_sndrcvinfo_expr));
$$->value.sctp_sndrcvinfo->sinfo_stream = $2;
$$->value.sctp_sndrcvinfo->sinfo_ssn = $4;
$$->value.sctp_sndrcvinfo->sinfo_flags = $6;
$$->value.sctp_sndrcvinfo->sinfo_ppid = $8;
$$->value.sctp_sndrcvinfo->sinfo_context = $10;
$$->value.sctp_sndrcvinfo->sinfo_timetolive = $12;
$$->value.sctp_sndrcvinfo->sinfo_tsn = $14;
$$->value.sctp_sndrcvinfo->sinfo_cumtsn = $16;
$$->value.sctp_sndrcvinfo->sinfo_assoc_id = new_expression(EXPR_ELLIPSIS);
}; };
sinfo_pr_value sinfo_pr_value
...@@ -3547,6 +3652,25 @@ serinfo_next_flags ',' serinfo_next_stream ',' serinfo_next_aid ',' serinfo_next ...@@ -3547,6 +3652,25 @@ serinfo_next_flags ',' serinfo_next_stream ',' serinfo_next_aid ',' serinfo_next
$$->value.sctp_extrcvinfo->serinfo_next_length = $24; $$->value.sctp_extrcvinfo->serinfo_next_length = $24;
$$->value.sctp_extrcvinfo->serinfo_next_ppid = $26; $$->value.sctp_extrcvinfo->serinfo_next_ppid = $26;
$$->value.sctp_extrcvinfo->sinfo_assoc_id = $30; $$->value.sctp_extrcvinfo->sinfo_assoc_id = $30;
}
| '{' sinfo_stream ',' sinfo_ssn ',' sinfo_flags ',' sinfo_ppid ',' sinfo_context ',' sinfo_pr_value ',' sinfo_tsn ',' sinfo_cumtsn ','
serinfo_next_flags ',' serinfo_next_stream ',' serinfo_next_aid ',' serinfo_next_length ',' serinfo_next_ppid '}' {
$$ = new_expression(EXPR_SCTP_EXTRCVINFO);
$$->value.sctp_extrcvinfo = calloc(1, sizeof(struct sctp_extrcvinfo_expr));
$$->value.sctp_extrcvinfo->sinfo_stream = $2;
$$->value.sctp_extrcvinfo->sinfo_ssn = $4;
$$->value.sctp_extrcvinfo->sinfo_flags = $6;
$$->value.sctp_extrcvinfo->sinfo_ppid = $8;
$$->value.sctp_extrcvinfo->sinfo_context = $10;
$$->value.sctp_extrcvinfo->sinfo_pr_value = $12;
$$->value.sctp_extrcvinfo->sinfo_tsn = $14;
$$->value.sctp_extrcvinfo->sinfo_cumtsn = $16;
$$->value.sctp_extrcvinfo->serinfo_next_flags = $18;
$$->value.sctp_extrcvinfo->serinfo_next_stream = $20;
$$->value.sctp_extrcvinfo->serinfo_next_aid = $22;
$$->value.sctp_extrcvinfo->serinfo_next_length = $24;
$$->value.sctp_extrcvinfo->serinfo_next_ppid = $26;
$$->value.sctp_extrcvinfo->sinfo_assoc_id = new_expression(EXPR_ELLIPSIS);
}; };
rcv_sid rcv_sid
...@@ -3626,6 +3750,18 @@ sctp_rcvinfo ...@@ -3626,6 +3750,18 @@ sctp_rcvinfo
$$->value.sctp_rcvinfo->rcv_context = $14; $$->value.sctp_rcvinfo->rcv_context = $14;
$$->value.sctp_rcvinfo->rcv_assoc_id = $18; $$->value.sctp_rcvinfo->rcv_assoc_id = $18;
} }
| '{' rcv_sid ',' rcv_ssn ',' rcv_flags ',' rcv_ppid ',' rcv_tsn ',' rcv_cumtsn ',' rcv_context '}' {
$$ = new_expression(EXPR_SCTP_RCVINFO);
$$->value.sctp_rcvinfo = calloc(1, sizeof(struct sctp_rcvinfo_expr));
$$->value.sctp_rcvinfo->rcv_sid = $2;
$$->value.sctp_rcvinfo->rcv_ssn = $4;
$$->value.sctp_rcvinfo->rcv_flags = $6;
$$->value.sctp_rcvinfo->rcv_ppid = $8;
$$->value.sctp_rcvinfo->rcv_tsn = $10;
$$->value.sctp_rcvinfo->rcv_cumtsn = $12;
$$->value.sctp_rcvinfo->rcv_context = $14;
$$->value.sctp_rcvinfo->rcv_assoc_id = new_expression(EXPR_ELLIPSIS);
}
; ;
pr_policy pr_policy
...@@ -3731,6 +3867,15 @@ sctp_nxtinfo ...@@ -3731,6 +3867,15 @@ sctp_nxtinfo
$$->value.sctp_nxtinfo->nxt_length = $8; $$->value.sctp_nxtinfo->nxt_length = $8;
$$->value.sctp_nxtinfo->nxt_assoc_id = $12; $$->value.sctp_nxtinfo->nxt_assoc_id = $12;
} }
| '{' nxt_sid ',' nxt_flags ',' nxt_ppid ',' nxt_length '}' {
$$ = new_expression(EXPR_SCTP_NXTINFO);
$$->value.sctp_sendv_spa = calloc(1, sizeof(struct sctp_nxtinfo_expr));
$$->value.sctp_nxtinfo->nxt_sid = $2;
$$->value.sctp_nxtinfo->nxt_flags = $4;
$$->value.sctp_nxtinfo->nxt_ppid = $6;
$$->value.sctp_nxtinfo->nxt_length = $8;
$$->value.sctp_nxtinfo->nxt_assoc_id = new_expression(EXPR_ELLIPSIS);
}
; ;
sctp_recvv_rn sctp_recvv_rn
...@@ -3784,6 +3929,14 @@ sctp_shutdown_event ...@@ -3784,6 +3929,14 @@ sctp_shutdown_event
$$->value.sctp_shutdown_event->sse_flags = $4; $$->value.sctp_shutdown_event->sse_flags = $4;
$$->value.sctp_shutdown_event->sse_length = $6; $$->value.sctp_shutdown_event->sse_length = $6;
$$->value.sctp_shutdown_event->sse_assoc_id = $10; $$->value.sctp_shutdown_event->sse_assoc_id = $10;
}
| '{' sse_type ',' sse_flags ',' sse_length '}' {
$$ = new_expression(EXPR_SCTP_SHUTDOWN_EVENT);
$$->value.sctp_shutdown_event = calloc(1, sizeof(struct sctp_shutdown_event_expr));
$$->value.sctp_shutdown_event->sse_type = $2;
$$->value.sctp_shutdown_event->sse_flags = $4;
$$->value.sctp_shutdown_event->sse_length = $6;
$$->value.sctp_shutdown_event->sse_assoc_id = new_expression(EXPR_ELLIPSIS);
}; };
pdapi_type pdapi_type
...@@ -3865,6 +4018,17 @@ sctp_pdapi_event ...@@ -3865,6 +4018,17 @@ sctp_pdapi_event
$$->value.sctp_pdapi_event->pdapi_seq = $12; $$->value.sctp_pdapi_event->pdapi_seq = $12;
$$->value.sctp_pdapi_event->pdapi_assoc_id = $16; $$->value.sctp_pdapi_event->pdapi_assoc_id = $16;
} }
| '{' pdapi_type',' pdapi_flags ',' pdapi_length ',' pdapi_indication ',' pdapi_stream ',' pdapi_seq '}' {
$$ = new_expression(EXPR_SCTP_PDAPI_EVENT);
$$->value.sctp_pdapi_event = calloc(1, sizeof(struct sctp_pdapi_event_expr));
$$->value.sctp_pdapi_event->pdapi_type = $2;
$$->value.sctp_pdapi_event->pdapi_flags = $4;
$$->value.sctp_pdapi_event->pdapi_length = $6;
$$->value.sctp_pdapi_event->pdapi_indication = $8;
$$->value.sctp_pdapi_event->pdapi_stream = $10;
$$->value.sctp_pdapi_event->pdapi_seq = $12;
$$->value.sctp_pdapi_event->pdapi_assoc_id = new_expression(EXPR_ELLIPSIS);
}
; ;
auth_type auth_type
...@@ -3936,6 +4100,16 @@ sctp_authkey_event ...@@ -3936,6 +4100,16 @@ sctp_authkey_event
$$->value.sctp_authkey_event->auth_indication = $10; $$->value.sctp_authkey_event->auth_indication = $10;
$$->value.sctp_authkey_event->auth_assoc_id = $14; $$->value.sctp_authkey_event->auth_assoc_id = $14;
} }
| '{' auth_type ',' auth_flags ',' auth_length ',' auth_keynumber ',' auth_indication '}' {
$$ = new_expression(EXPR_SCTP_AUTHKEY_EVENT);
$$->value.sctp_authkey_event = calloc(1, sizeof(struct sctp_authkey_event_expr));
$$->value.sctp_authkey_event->auth_type = $2;
$$->value.sctp_authkey_event->auth_flags = $4;
$$->value.sctp_authkey_event->auth_length = $6;
$$->value.sctp_authkey_event->auth_keynumber = $8;
$$->value.sctp_authkey_event->auth_indication = $10;
$$->value.sctp_authkey_event->auth_assoc_id = new_expression(EXPR_ELLIPSIS);
}
; ;
sender_dry_type sender_dry_type
...@@ -3981,6 +4155,14 @@ sctp_sender_dry_event ...@@ -3981,6 +4155,14 @@ sctp_sender_dry_event
$$->value.sctp_sender_dry_event->sender_dry_length = $6; $$->value.sctp_sender_dry_event->sender_dry_length = $6;
$$->value.sctp_sender_dry_event->sender_dry_assoc_id = $10; $$->value.sctp_sender_dry_event->sender_dry_assoc_id = $10;
} }
| '{'sender_dry_type ',' sender_dry_flags ',' sender_dry_length '}' {
$$ = new_expression(EXPR_SCTP_SENDER_DRY_EVENT);
$$->value.sctp_sender_dry_event = calloc(1, sizeof(struct sctp_sender_dry_event_expr));
$$->value.sctp_sender_dry_event->sender_dry_type = $2;
$$->value.sctp_sender_dry_event->sender_dry_flags = $4;
$$->value.sctp_sender_dry_event->sender_dry_length = $6;
$$->value.sctp_sender_dry_event->sender_dry_assoc_id = new_expression(EXPR_ELLIPSIS);
}
; ;
ssfe_type ssfe_type
...@@ -4047,6 +4229,17 @@ sctp_send_failed_event ...@@ -4047,6 +4229,17 @@ sctp_send_failed_event
$$->value.sctp_send_failed_event->ssfe_info = $12; $$->value.sctp_send_failed_event->ssfe_info = $12;
$$->value.sctp_send_failed_event->ssfe_assoc_id = $16; $$->value.sctp_send_failed_event->ssfe_assoc_id = $16;
$$->value.sctp_send_failed_event->ssfe_data = $18; $$->value.sctp_send_failed_event->ssfe_data = $18;
}
| '{' ssfe_type ',' ssfe_flags ',' ssfe_length ',' ssfe_error ',' SSFE_INFO '=' sctp_sndinfo ',' ssfe_data '}' {
$$ = new_expression(EXPR_SCTP_SEND_FAILED_EVENT);
$$->value.sctp_send_failed_event = calloc(1, sizeof(struct sctp_send_failed_event_expr));
$$->value.sctp_send_failed_event->ssfe_type = $2;
$$->value.sctp_send_failed_event->ssfe_flags = $4;
$$->value.sctp_send_failed_event->ssfe_length = $6;
$$->value.sctp_send_failed_event->ssfe_error = $8;
$$->value.sctp_send_failed_event->ssfe_info = $12;
$$->value.sctp_send_failed_event->ssfe_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_send_failed_event->ssfe_data = $14;
}; };
sac_type sac_type
...@@ -4147,6 +4340,20 @@ sac_inbound_streams ',' SAC_ASSOC_ID '=' sctp_assoc_id ',' sac_info '}' { ...@@ -4147,6 +4340,20 @@ sac_inbound_streams ',' SAC_ASSOC_ID '=' sctp_assoc_id ',' sac_info '}' {
$$->value.sctp_assoc_change->sac_assoc_id = $18; $$->value.sctp_assoc_change->sac_assoc_id = $18;
$$->value.sctp_assoc_change->sac_info = $20; $$->value.sctp_assoc_change->sac_info = $20;
} }
| '{' sac_type ',' sac_flags ',' sac_length ',' sac_state ',' sac_error ',' sac_outbound_streams ','
sac_inbound_streams ',' sac_info '}' {
$$ = new_expression(EXPR_SCTP_ASSOC_CHANGE);
$$->value.sctp_assoc_change = calloc(1, sizeof(struct sctp_assoc_change_expr));
$$->value.sctp_assoc_change->sac_type = $2;
$$->value.sctp_assoc_change->sac_flags = $4;
$$->value.sctp_assoc_change->sac_length = $6;
$$->value.sctp_assoc_change->sac_state = $8;
$$->value.sctp_assoc_change->sac_error = $10;
$$->value.sctp_assoc_change->sac_outbound_streams = $12;
$$->value.sctp_assoc_change->sac_inbound_streams = $14;
$$->value.sctp_assoc_change->sac_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_assoc_change->sac_info = $16;
}
; ;
sre_type sre_type
...@@ -4209,6 +4416,16 @@ sctp_remote_error ...@@ -4209,6 +4416,16 @@ sctp_remote_error
$$->value.sctp_remote_error->sre_assoc_id = $12; $$->value.sctp_remote_error->sre_assoc_id = $12;
$$->value.sctp_remote_error->sre_data = $14; $$->value.sctp_remote_error->sre_data = $14;
} }
| '{' sre_type ',' sre_flags ',' sre_length ',' sre_error ',' sre_data '}' {
$$ = new_expression(EXPR_SCTP_REMOTE_ERROR);
$$->value.sctp_remote_error = calloc(1, sizeof(struct sctp_remote_error_expr));
$$->value.sctp_remote_error->sre_type = $2;
$$->value.sctp_remote_error->sre_flags = $4;
$$->value.sctp_remote_error->sre_length = $6;
$$->value.sctp_remote_error->sre_error = $8;
$$->value.sctp_remote_error->sre_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_remote_error->sre_data = $10;
}
; ;
spc_type spc_type
...@@ -4290,6 +4507,17 @@ sctp_paddr_change ...@@ -4290,6 +4507,17 @@ sctp_paddr_change
$$->value.sctp_paddr_change->spc_error = $12; $$->value.sctp_paddr_change->spc_error = $12;
$$->value.sctp_paddr_change->spc_assoc_id = $16; $$->value.sctp_paddr_change->spc_assoc_id = $16;
} }
| '{' spc_type ',' spc_flags ',' spc_length ',' spc_aaddr ',' spc_state ',' spc_error '}' {
$$ = new_expression(EXPR_SCTP_PADDR_CHANGE);
$$->value.sctp_paddr_change = calloc(1, sizeof(struct sctp_paddr_change_expr));
$$->value.sctp_paddr_change->spc_type = $2;
$$->value.sctp_paddr_change->spc_flags = $4;
$$->value.sctp_paddr_change->spc_length = $6;
$$->value.sctp_paddr_change->spc_aaddr = $8;
$$->value.sctp_paddr_change->spc_state = $10;
$$->value.sctp_paddr_change->spc_error = $12;
$$->value.sctp_paddr_change->spc_assoc_id = new_expression(EXPR_ELLIPSIS);
}
; ;
ssf_type ssf_type
: SSF_TYPE '=' INTEGER { : SSF_TYPE '=' INTEGER {
...@@ -4365,6 +4593,17 @@ sctp_send_failed ...@@ -4365,6 +4593,17 @@ sctp_send_failed
$$->value.sctp_send_failed->ssf_assoc_id = $14; $$->value.sctp_send_failed->ssf_assoc_id = $14;
$$->value.sctp_send_failed->ssf_data = $16; $$->value.sctp_send_failed->ssf_data = $16;
} }
| '{' ssf_type ',' ssf_flags ',' ssf_length ',' ssf_error ',' ssf_info ',' ssf_data '}' {
$$ = new_expression(EXPR_SCTP_SEND_FAILED);
$$->value.sctp_send_failed = calloc(1, sizeof(struct sctp_send_failed_expr));
$$->value.sctp_send_failed->ssf_type = $2;
$$->value.sctp_send_failed->ssf_flags = $4;
$$->value.sctp_send_failed->ssf_length = $6;
$$->value.sctp_send_failed->ssf_error = $8;
$$->value.sctp_send_failed->ssf_info = $10;
$$->value.sctp_send_failed->ssf_assoc_id = new_expression(EXPR_ELLIPSIS);
$$->value.sctp_send_failed->ssf_data = $12;
}
; ;
sai_type sai_type
...@@ -4421,6 +4660,15 @@ sctp_adaptation_event ...@@ -4421,6 +4660,15 @@ sctp_adaptation_event
$$->value.sctp_adaptation_event->sai_adaptation_ind = $8; $$->value.sctp_adaptation_event->sai_adaptation_ind = $8;
$$->value.sctp_adaptation_event->sai_assoc_id = $12; $$->value.sctp_adaptation_event->sai_assoc_id = $12;
} }
| '{' sai_type ',' sai_flags ',' sai_length ',' sai_adaptation_ind '}' {
$$ = new_expression(EXPR_SCTP_ADAPTATION_EVENT);
$$->value.sctp_adaptation_event = calloc(1, sizeof(struct sctp_adaptation_event_expr));
$$->value.sctp_adaptation_event->sai_type = $2;
$$->value.sctp_adaptation_event->sai_flags = $4;
$$->value.sctp_adaptation_event->sai_length = $6;
$$->value.sctp_adaptation_event->sai_adaptation_ind = $8;
$$->value.sctp_adaptation_event->sai_assoc_id = new_expression(EXPR_ELLIPSIS);
}
; ;
sn_type sn_type
......
...@@ -2849,20 +2849,32 @@ static int check_sctp_sndinfo(struct sctp_sndinfo_expr *expr, ...@@ -2849,20 +2849,32 @@ static int check_sctp_sndinfo(struct sctp_sndinfo_expr *expr,
} }
#endif #endif
#ifdef SCTP_DEFAULT_PRINFO #ifdef SCTP_DEFAULT_PRINFO
static int check_sctp_default_prinfo(struct sctp_default_prinfo_expr *expr, static int check_sctp_default_prinfo(struct expression *expression,
struct sctp_default_prinfo *info, struct sctp_default_prinfo *info,
char **error) char **error)
{ {
if (check_sctp_assoc_t_expr(expr->pr_assoc_id, info->pr_assoc_id, if (expression->type == EXPR_SCTP_DEFAULT_PRINFO) {
"sctp_default_prinfo.pr_assoc_id", error)) struct sctp_default_prinfo_expr *expr = expression->value.sctp_default_prinfo;
return STATUS_ERR; if (check_sctp_assoc_t_expr(expr->pr_assoc_id, info->pr_assoc_id,
if (check_u16_expr(expr->pr_policy, info->pr_policy, "sctp_default_prinfo.pr_assoc_id", error))
"sctp_default_prinfo.pr_policy", error)) return STATUS_ERR;
return STATUS_ERR; if (check_u16_expr(expr->pr_policy, info->pr_policy,
if (check_u32_expr(expr->pr_value, info->pr_value, "sctp_default_prinfo.pr_policy", error))
"sctp_default_prinfo.pr_value", error)) return STATUS_ERR;
if (check_u32_expr(expr->pr_value, info->pr_value,
"sctp_default_prinfo.pr_value", error))
return STATUS_ERR;
} else if (expression->type == EXPR_SCTP_PRINFO) {
struct sctp_prinfo_expr *expr = expression->value.sctp_prinfo;
if (check_u16_expr(expr->pr_policy, info->pr_policy,
"sctp_default_prinfo.pr_policy", error))
return STATUS_ERR;
if (check_u32_expr(expr->pr_value, info->pr_value,
"sctp_default_prinfo.pr_value", error))
return STATUS_ERR;
} else {
return STATUS_ERR; return STATUS_ERR;
}
return STATUS_OK; return STATUS_OK;
} }
#endif #endif
...@@ -3082,14 +3094,19 @@ static int syscall_getsockopt(struct state *state, struct syscall_spec *syscall, ...@@ -3082,14 +3094,19 @@ static int syscall_getsockopt(struct state *state, struct syscall_spec *syscall,
break; break;
#endif #endif
#ifdef SCTP_DEFAULT_PRINFO #ifdef SCTP_DEFAULT_PRINFO
case EXPR_SCTP_PRINFO:
case EXPR_SCTP_DEFAULT_PRINFO: case EXPR_SCTP_DEFAULT_PRINFO:
live_optval = malloc(sizeof(struct sctp_default_prinfo)); live_optval = malloc(sizeof(struct sctp_default_prinfo));
live_optlen = sizeof(struct sctp_default_prinfo); live_optlen = sizeof(struct sctp_default_prinfo);
if (get_sctp_assoc_t(val_expression->value.sctp_default_prinfo->pr_assoc_id, if (EXPR_SCTP_DEFAULT_PRINFO) {
&((struct sctp_default_prinfo *)live_optval)->pr_assoc_id, if (get_sctp_assoc_t(val_expression->value.sctp_default_prinfo->pr_assoc_id,
error)) { &((struct sctp_default_prinfo *)live_optval)->pr_assoc_id,
free(live_optval); error)) {
return STATUS_ERR; free(live_optval);
return STATUS_ERR;
}
}else{
((struct sctp_default_prinfo *)live_optval)->pr_assoc_id = 0;
} }
break; break;
#endif #endif
...@@ -3204,7 +3221,7 @@ static int syscall_getsockopt(struct state *state, struct syscall_spec *syscall, ...@@ -3204,7 +3221,7 @@ static int syscall_getsockopt(struct state *state, struct syscall_spec *syscall,
#endif #endif
#ifdef SCTP_DEFAULT_PRINFO #ifdef SCTP_DEFAULT_PRINFO
case EXPR_SCTP_DEFAULT_PRINFO: case EXPR_SCTP_DEFAULT_PRINFO:
result = check_sctp_default_prinfo(val_expression->value.sctp_default_prinfo, live_optval, error); result = check_sctp_default_prinfo(val_expression, live_optval, error);
break; break;
#endif #endif
#ifdef SCTP_PRIMARY_ADDR #ifdef SCTP_PRIMARY_ADDR
...@@ -3534,6 +3551,18 @@ static int syscall_setsockopt(struct state *state, struct syscall_spec *syscall, ...@@ -3534,6 +3551,18 @@ static int syscall_setsockopt(struct state *state, struct syscall_spec *syscall,
break; break;
#endif #endif
#ifdef SCTP_DEFAULT_PRINFO #ifdef SCTP_DEFAULT_PRINFO
case EXPR_SCTP_PRINFO:
if (get_u16(val_expression->value.sctp_prinfo->pr_policy,
&default_prinfo.pr_policy, error)) {
return STATUS_ERR;
}
if (get_u32(val_expression->value.sctp_prinfo->pr_value,
&default_prinfo.pr_value, error)) {
return STATUS_ERR;
}
default_prinfo.pr_assoc_id = 0;
optval = &default_prinfo;
break;
case EXPR_SCTP_DEFAULT_PRINFO: case EXPR_SCTP_DEFAULT_PRINFO:
if (get_u16(val_expression->value.sctp_default_prinfo->pr_policy, if (get_u16(val_expression->value.sctp_default_prinfo->pr_policy,
&default_prinfo.pr_policy, error)) { &default_prinfo.pr_policy, error)) {
......
...@@ -63,6 +63,15 @@ set testcases = (setsockopt/sctp_rtoinfo_1 \ ...@@ -63,6 +63,15 @@ set testcases = (setsockopt/sctp_rtoinfo_1 \
getsockopt/sctp_default_prinfo \ getsockopt/sctp_default_prinfo \
getsockopt/sctp_status \ getsockopt/sctp_status \
getsockopt/sctp_get_peer_addr_info \ getsockopt/sctp_get_peer_addr_info \
getsockopt/sctp_peer_auth_chunks \
getsockopt/sctp_local_auth_chunks \
getsockopt/sctp_get_assoc_number \
getsockopt/sctp_get_assoc_id_list \
getsockopt/sctp_set_peer_primary_addr \
getsockopt/sctp_auth_chunk \
getsockopt/sctp_auth_key \
getsockopt/sctp_auth_deactivate_key \
getsockopt/sctp_auth_delete_key \
notifications/sctp_adaptation_event \ notifications/sctp_adaptation_event \
notifications/sctp_notifications_stopped_event \ notifications/sctp_notifications_stopped_event \
notifications/sctp_remote_error \ notifications/sctp_remote_error \
...@@ -74,9 +83,31 @@ set testcases = (setsockopt/sctp_rtoinfo_1 \ ...@@ -74,9 +83,31 @@ set testcases = (setsockopt/sctp_rtoinfo_1 \
notifications/sctp_authentication_event \ notifications/sctp_authentication_event \
notifications/sctp_peer_addr_change \ notifications/sctp_peer_addr_change \
notifications/sctp_send_failed_event \ notifications/sctp_send_failed_event \
sctp_send/sctp_send_1 \ cmsgs/sendmsg_sctp_init \
sctp_send/sctp_send_2 \ cmsgs/sendmsg_sctp_sndrcv \
sctp_sendx/sctp_sendx_1 ) cmsgs/sendmsg_sctp_sndinfo \
cmsgs/sendmsg_sctp_authinfo \
cmsgs/sendmsg_sctp_prinfo \
cmsgs/sendmsg_sctp_dstaddrv4 \
cmsgs/sendmsg_sctp_dstaddrv6 \
cmsgs/recvmsg_sctp_extrcv \
cmsgs/recvmsg_sctp_nxtinfo \
cmsgs/recvmsg_sctp_rcvinfo \
cmsgs/recvmsg_sctp_sndrcv \
cmsgs/recvmsg \
cmsgs/sendmsg \
sctp_send/sctp_send_1 \
sctp_send/sctp_send_2 \
sctp_sendx/sctp_sendx_1 \
sctp_sendv/sctp_sendv \
sctp_sendv/sctp_sendv_1 \
sctp_sendv/sctp_sendv_2 \
sctp_sendv/sctp_sendv_3 \
sctp_sendv/sctp_sendv_4 \
sctp_sendv/sctp_sendv_5 \
sctp_sendv/sctp_sendv_6 \
sctp_sendv/sctp_sendv_7 \
sctp_sendv/sctp_sendv_8 )
set rootdir = `/usr/bin/dirname $0` set rootdir = `/usr/bin/dirname $0`
set os = `uname -s | tr '[A-Z]' '[a-z]'` set os = `uname -s | tr '[A-Z]' '[a-z]'`
......
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