|
@@ -235,7 +235,7 @@ sctp_disposition_t sctp_sf_do_4_C(struct net *net,
|
|
|
return sctp_sf_violation_chunk(net, ep, asoc, type, arg, commands);
|
|
|
|
|
|
/* Make sure that the SHUTDOWN_COMPLETE chunk has a valid length. */
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -345,7 +345,7 @@ sctp_disposition_t sctp_sf_do_5_1B_init(struct net *net,
|
|
|
* error, but since we don't have an association, we'll
|
|
|
* just discard the packet.
|
|
|
*/
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_init_chunk_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_init_chunk)))
|
|
|
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
|
|
|
|
|
|
/* If the INIT is coming toward a closing socket, we'll send back
|
|
@@ -360,7 +360,7 @@ sctp_disposition_t sctp_sf_do_5_1B_init(struct net *net,
|
|
|
/* Verify the INIT chunk before processing it. */
|
|
|
err_chunk = NULL;
|
|
|
if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type,
|
|
|
- (sctp_init_chunk_t *)chunk->chunk_hdr, chunk,
|
|
|
+ (struct sctp_init_chunk *)chunk->chunk_hdr, chunk,
|
|
|
&err_chunk)) {
|
|
|
/* This chunk contains fatal error. It is to be discarded.
|
|
|
* Send an ABORT, with causes if there is any.
|
|
@@ -368,9 +368,9 @@ sctp_disposition_t sctp_sf_do_5_1B_init(struct net *net,
|
|
|
if (err_chunk) {
|
|
|
packet = sctp_abort_pkt_new(net, ep, asoc, arg,
|
|
|
(__u8 *)(err_chunk->chunk_hdr) +
|
|
|
- sizeof(sctp_chunkhdr_t),
|
|
|
+ sizeof(struct sctp_chunkhdr),
|
|
|
ntohs(err_chunk->chunk_hdr->length) -
|
|
|
- sizeof(sctp_chunkhdr_t));
|
|
|
+ sizeof(struct sctp_chunkhdr));
|
|
|
|
|
|
sctp_chunk_free(err_chunk);
|
|
|
|
|
@@ -389,10 +389,10 @@ sctp_disposition_t sctp_sf_do_5_1B_init(struct net *net,
|
|
|
}
|
|
|
|
|
|
/* Grab the INIT header. */
|
|
|
- chunk->subh.init_hdr = (sctp_inithdr_t *)chunk->skb->data;
|
|
|
+ chunk->subh.init_hdr = (struct sctp_inithdr *)chunk->skb->data;
|
|
|
|
|
|
/* Tag the variable length parameters. */
|
|
|
- chunk->param_hdr.v = skb_pull(chunk->skb, sizeof(sctp_inithdr_t));
|
|
|
+ chunk->param_hdr.v = skb_pull(chunk->skb, sizeof(struct sctp_inithdr));
|
|
|
|
|
|
new_asoc = sctp_make_temp_asoc(ep, chunk, GFP_ATOMIC);
|
|
|
if (!new_asoc)
|
|
@@ -405,7 +405,7 @@ sctp_disposition_t sctp_sf_do_5_1B_init(struct net *net,
|
|
|
|
|
|
/* The call, sctp_process_init(), can fail on memory allocation. */
|
|
|
if (!sctp_process_init(new_asoc, chunk, sctp_source(chunk),
|
|
|
- (sctp_init_chunk_t *)chunk->chunk_hdr,
|
|
|
+ (struct sctp_init_chunk *)chunk->chunk_hdr,
|
|
|
GFP_ATOMIC))
|
|
|
goto nomem_init;
|
|
|
|
|
@@ -417,7 +417,7 @@ sctp_disposition_t sctp_sf_do_5_1B_init(struct net *net,
|
|
|
len = 0;
|
|
|
if (err_chunk)
|
|
|
len = ntohs(err_chunk->chunk_hdr->length) -
|
|
|
- sizeof(sctp_chunkhdr_t);
|
|
|
+ sizeof(struct sctp_chunkhdr);
|
|
|
|
|
|
repl = sctp_make_init_ack(new_asoc, chunk, GFP_ATOMIC, len);
|
|
|
if (!repl)
|
|
@@ -437,7 +437,7 @@ sctp_disposition_t sctp_sf_do_5_1B_init(struct net *net,
|
|
|
*/
|
|
|
unk_param = (sctp_unrecognized_param_t *)
|
|
|
((__u8 *)(err_chunk->chunk_hdr) +
|
|
|
- sizeof(sctp_chunkhdr_t));
|
|
|
+ sizeof(struct sctp_chunkhdr));
|
|
|
/* Replace the cause code with the "Unrecognized parameter"
|
|
|
* parameter type.
|
|
|
*/
|
|
@@ -503,7 +503,7 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(struct net *net,
|
|
|
sctp_cmd_seq_t *commands)
|
|
|
{
|
|
|
struct sctp_chunk *chunk = arg;
|
|
|
- sctp_init_chunk_t *initchunk;
|
|
|
+ struct sctp_init_chunk *initchunk;
|
|
|
struct sctp_chunk *err_chunk;
|
|
|
struct sctp_packet *packet;
|
|
|
|
|
@@ -522,12 +522,12 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(struct net *net,
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
/* Grab the INIT header. */
|
|
|
- chunk->subh.init_hdr = (sctp_inithdr_t *) chunk->skb->data;
|
|
|
+ chunk->subh.init_hdr = (struct sctp_inithdr *)chunk->skb->data;
|
|
|
|
|
|
/* Verify the INIT chunk before processing it. */
|
|
|
err_chunk = NULL;
|
|
|
if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type,
|
|
|
- (sctp_init_chunk_t *)chunk->chunk_hdr, chunk,
|
|
|
+ (struct sctp_init_chunk *)chunk->chunk_hdr, chunk,
|
|
|
&err_chunk)) {
|
|
|
|
|
|
sctp_error_t error = SCTP_ERROR_NO_RESOURCE;
|
|
@@ -540,9 +540,9 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(struct net *net,
|
|
|
if (err_chunk) {
|
|
|
packet = sctp_abort_pkt_new(net, ep, asoc, arg,
|
|
|
(__u8 *)(err_chunk->chunk_hdr) +
|
|
|
- sizeof(sctp_chunkhdr_t),
|
|
|
+ sizeof(struct sctp_chunkhdr),
|
|
|
ntohs(err_chunk->chunk_hdr->length) -
|
|
|
- sizeof(sctp_chunkhdr_t));
|
|
|
+ sizeof(struct sctp_chunkhdr));
|
|
|
|
|
|
sctp_chunk_free(err_chunk);
|
|
|
|
|
@@ -576,9 +576,9 @@ sctp_disposition_t sctp_sf_do_5_1C_ack(struct net *net,
|
|
|
/* Tag the variable length parameters. Note that we never
|
|
|
* convert the parameters in an INIT chunk.
|
|
|
*/
|
|
|
- chunk->param_hdr.v = skb_pull(chunk->skb, sizeof(sctp_inithdr_t));
|
|
|
+ chunk->param_hdr.v = skb_pull(chunk->skb, sizeof(struct sctp_inithdr));
|
|
|
|
|
|
- initchunk = (sctp_init_chunk_t *) chunk->chunk_hdr;
|
|
|
+ initchunk = (struct sctp_init_chunk *)chunk->chunk_hdr;
|
|
|
|
|
|
sctp_add_cmd_sf(commands, SCTP_CMD_PEER_INIT,
|
|
|
SCTP_PEER_INIT(initchunk));
|
|
@@ -653,7 +653,7 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(struct net *net,
|
|
|
{
|
|
|
struct sctp_chunk *chunk = arg;
|
|
|
struct sctp_association *new_asoc;
|
|
|
- sctp_init_chunk_t *peer_init;
|
|
|
+ struct sctp_init_chunk *peer_init;
|
|
|
struct sctp_chunk *repl;
|
|
|
struct sctp_ulpevent *ev, *ai_ev = NULL;
|
|
|
int error = 0;
|
|
@@ -673,7 +673,7 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(struct net *net,
|
|
|
* chunk header. More detailed verification is done
|
|
|
* in sctp_unpack_cookie().
|
|
|
*/
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
|
|
|
|
|
|
/* If the endpoint is not listening or if the number of associations
|
|
@@ -691,7 +691,7 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(struct net *net,
|
|
|
chunk->subh.cookie_hdr =
|
|
|
(struct sctp_signed_cookie *)chunk->skb->data;
|
|
|
if (!pskb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) -
|
|
|
- sizeof(sctp_chunkhdr_t)))
|
|
|
+ sizeof(struct sctp_chunkhdr)))
|
|
|
goto nomem;
|
|
|
|
|
|
/* 5.1 D) Upon reception of the COOKIE ECHO chunk, Endpoint
|
|
@@ -770,9 +770,10 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(struct net *net,
|
|
|
auth.skb = chunk->auth_chunk;
|
|
|
auth.asoc = chunk->asoc;
|
|
|
auth.sctp_hdr = chunk->sctp_hdr;
|
|
|
- auth.chunk_hdr = skb_push(chunk->auth_chunk,
|
|
|
- sizeof(sctp_chunkhdr_t));
|
|
|
- skb_pull(chunk->auth_chunk, sizeof(sctp_chunkhdr_t));
|
|
|
+ auth.chunk_hdr = (struct sctp_chunkhdr *)
|
|
|
+ skb_push(chunk->auth_chunk,
|
|
|
+ sizeof(struct sctp_chunkhdr));
|
|
|
+ skb_pull(chunk->auth_chunk, sizeof(struct sctp_chunkhdr));
|
|
|
auth.transport = chunk->transport;
|
|
|
|
|
|
ret = sctp_sf_authenticate(net, ep, new_asoc, type, &auth);
|
|
@@ -886,7 +887,7 @@ sctp_disposition_t sctp_sf_do_5_1E_ca(struct net *net,
|
|
|
/* Verify that the chunk length for the COOKIE-ACK is OK.
|
|
|
* If we don't do this, any bundled chunks may be junked.
|
|
|
*/
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -1080,7 +1081,7 @@ sctp_disposition_t sctp_sf_beat_8_3(struct net *net,
|
|
|
void *arg,
|
|
|
sctp_cmd_seq_t *commands)
|
|
|
{
|
|
|
- sctp_paramhdr_t *param_hdr;
|
|
|
+ struct sctp_paramhdr *param_hdr;
|
|
|
struct sctp_chunk *chunk = arg;
|
|
|
struct sctp_chunk *reply;
|
|
|
size_t paylen = 0;
|
|
@@ -1097,9 +1098,9 @@ sctp_disposition_t sctp_sf_beat_8_3(struct net *net,
|
|
|
* respond with a HEARTBEAT ACK that contains the Heartbeat
|
|
|
* Information field copied from the received HEARTBEAT chunk.
|
|
|
*/
|
|
|
- chunk->subh.hb_hdr = (sctp_heartbeathdr_t *) chunk->skb->data;
|
|
|
- param_hdr = (sctp_paramhdr_t *) chunk->subh.hb_hdr;
|
|
|
- paylen = ntohs(chunk->chunk_hdr->length) - sizeof(sctp_chunkhdr_t);
|
|
|
+ chunk->subh.hb_hdr = (sctp_heartbeathdr_t *)chunk->skb->data;
|
|
|
+ param_hdr = (struct sctp_paramhdr *)chunk->subh.hb_hdr;
|
|
|
+ paylen = ntohs(chunk->chunk_hdr->length) - sizeof(struct sctp_chunkhdr);
|
|
|
|
|
|
if (ntohs(param_hdr->length) > paylen)
|
|
|
return sctp_sf_violation_paramlen(net, ep, asoc, type, arg,
|
|
@@ -1164,7 +1165,7 @@ sctp_disposition_t sctp_sf_backbeat_8_3(struct net *net,
|
|
|
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
|
|
|
|
|
|
/* Make sure that the HEARTBEAT-ACK chunk has a valid length. */
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t) +
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr) +
|
|
|
sizeof(sctp_sender_hb_info_t)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
@@ -1449,19 +1450,19 @@ static sctp_disposition_t sctp_sf_do_unexpected_init(
|
|
|
* In this case, we generate a protocol violation since we have
|
|
|
* an association established.
|
|
|
*/
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_init_chunk_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_init_chunk)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
/* Grab the INIT header. */
|
|
|
- chunk->subh.init_hdr = (sctp_inithdr_t *) chunk->skb->data;
|
|
|
+ chunk->subh.init_hdr = (struct sctp_inithdr *)chunk->skb->data;
|
|
|
|
|
|
/* Tag the variable length parameters. */
|
|
|
- chunk->param_hdr.v = skb_pull(chunk->skb, sizeof(sctp_inithdr_t));
|
|
|
+ chunk->param_hdr.v = skb_pull(chunk->skb, sizeof(struct sctp_inithdr));
|
|
|
|
|
|
/* Verify the INIT chunk before processing it. */
|
|
|
err_chunk = NULL;
|
|
|
if (!sctp_verify_init(net, ep, asoc, chunk->chunk_hdr->type,
|
|
|
- (sctp_init_chunk_t *)chunk->chunk_hdr, chunk,
|
|
|
+ (struct sctp_init_chunk *)chunk->chunk_hdr, chunk,
|
|
|
&err_chunk)) {
|
|
|
/* This chunk contains fatal error. It is to be discarded.
|
|
|
* Send an ABORT, with causes if there is any.
|
|
@@ -1469,9 +1470,9 @@ static sctp_disposition_t sctp_sf_do_unexpected_init(
|
|
|
if (err_chunk) {
|
|
|
packet = sctp_abort_pkt_new(net, ep, asoc, arg,
|
|
|
(__u8 *)(err_chunk->chunk_hdr) +
|
|
|
- sizeof(sctp_chunkhdr_t),
|
|
|
+ sizeof(struct sctp_chunkhdr),
|
|
|
ntohs(err_chunk->chunk_hdr->length) -
|
|
|
- sizeof(sctp_chunkhdr_t));
|
|
|
+ sizeof(struct sctp_chunkhdr));
|
|
|
|
|
|
if (packet) {
|
|
|
sctp_add_cmd_sf(commands, SCTP_CMD_SEND_PKT,
|
|
@@ -1508,7 +1509,7 @@ static sctp_disposition_t sctp_sf_do_unexpected_init(
|
|
|
* place (local tie-tag and per tie-tag) within the state cookie.
|
|
|
*/
|
|
|
if (!sctp_process_init(new_asoc, chunk, sctp_source(chunk),
|
|
|
- (sctp_init_chunk_t *)chunk->chunk_hdr,
|
|
|
+ (struct sctp_init_chunk *)chunk->chunk_hdr,
|
|
|
GFP_ATOMIC))
|
|
|
goto nomem;
|
|
|
|
|
@@ -1535,7 +1536,7 @@ static sctp_disposition_t sctp_sf_do_unexpected_init(
|
|
|
len = 0;
|
|
|
if (err_chunk) {
|
|
|
len = ntohs(err_chunk->chunk_hdr->length) -
|
|
|
- sizeof(sctp_chunkhdr_t);
|
|
|
+ sizeof(struct sctp_chunkhdr);
|
|
|
}
|
|
|
|
|
|
repl = sctp_make_init_ack(new_asoc, chunk, GFP_ATOMIC, len);
|
|
@@ -1556,7 +1557,7 @@ static sctp_disposition_t sctp_sf_do_unexpected_init(
|
|
|
*/
|
|
|
unk_param = (sctp_unrecognized_param_t *)
|
|
|
((__u8 *)(err_chunk->chunk_hdr) +
|
|
|
- sizeof(sctp_chunkhdr_t));
|
|
|
+ sizeof(struct sctp_chunkhdr));
|
|
|
/* Replace the cause code with the "Unrecognized parameter"
|
|
|
* parameter type.
|
|
|
*/
|
|
@@ -1729,7 +1730,7 @@ static sctp_disposition_t sctp_sf_do_dupcook_a(struct net *net,
|
|
|
sctp_cmd_seq_t *commands,
|
|
|
struct sctp_association *new_asoc)
|
|
|
{
|
|
|
- sctp_init_chunk_t *peer_init;
|
|
|
+ struct sctp_init_chunk *peer_init;
|
|
|
struct sctp_ulpevent *ev;
|
|
|
struct sctp_chunk *repl;
|
|
|
struct sctp_chunk *err;
|
|
@@ -1844,7 +1845,7 @@ static sctp_disposition_t sctp_sf_do_dupcook_b(struct net *net,
|
|
|
sctp_cmd_seq_t *commands,
|
|
|
struct sctp_association *new_asoc)
|
|
|
{
|
|
|
- sctp_init_chunk_t *peer_init;
|
|
|
+ struct sctp_init_chunk *peer_init;
|
|
|
struct sctp_chunk *repl;
|
|
|
|
|
|
/* new_asoc is a brand-new association, so these are not yet
|
|
@@ -2044,7 +2045,7 @@ sctp_disposition_t sctp_sf_do_5_2_4_dupcook(struct net *net,
|
|
|
* enough for the chunk header. Cookie length verification is
|
|
|
* done later.
|
|
|
*/
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -2053,7 +2054,7 @@ sctp_disposition_t sctp_sf_do_5_2_4_dupcook(struct net *net,
|
|
|
*/
|
|
|
chunk->subh.cookie_hdr = (struct sctp_signed_cookie *)chunk->skb->data;
|
|
|
if (!pskb_pull(chunk->skb, ntohs(chunk->chunk_hdr->length) -
|
|
|
- sizeof(sctp_chunkhdr_t)))
|
|
|
+ sizeof(struct sctp_chunkhdr)))
|
|
|
goto nomem;
|
|
|
|
|
|
/* In RFC 2960 5.2.4 3, if both Verification Tags in the State Cookie
|
|
@@ -2806,7 +2807,7 @@ sctp_disposition_t sctp_sf_do_9_2_reshutack(struct net *net,
|
|
|
struct sctp_chunk *reply;
|
|
|
|
|
|
/* Make sure that the chunk has a valid length */
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -2989,7 +2990,7 @@ sctp_disposition_t sctp_sf_eat_data_6_2(struct net *net,
|
|
|
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
|
|
|
}
|
|
|
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_data_chunk_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_data_chunk)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -3009,7 +3010,8 @@ sctp_disposition_t sctp_sf_eat_data_6_2(struct net *net,
|
|
|
return SCTP_DISPOSITION_ABORT;
|
|
|
case SCTP_IERROR_PROTO_VIOLATION:
|
|
|
return sctp_sf_abort_violation(net, ep, asoc, chunk, commands,
|
|
|
- (u8 *)chunk->subh.data_hdr, sizeof(sctp_datahdr_t));
|
|
|
+ (u8 *)chunk->subh.data_hdr,
|
|
|
+ sizeof(struct sctp_datahdr));
|
|
|
default:
|
|
|
BUG();
|
|
|
}
|
|
@@ -3107,7 +3109,7 @@ sctp_disposition_t sctp_sf_eat_data_fast_4_4(struct net *net,
|
|
|
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
|
|
|
}
|
|
|
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_data_chunk_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_data_chunk)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -3123,7 +3125,8 @@ sctp_disposition_t sctp_sf_eat_data_fast_4_4(struct net *net,
|
|
|
return SCTP_DISPOSITION_ABORT;
|
|
|
case SCTP_IERROR_PROTO_VIOLATION:
|
|
|
return sctp_sf_abort_violation(net, ep, asoc, chunk, commands,
|
|
|
- (u8 *)chunk->subh.data_hdr, sizeof(sctp_datahdr_t));
|
|
|
+ (u8 *)chunk->subh.data_hdr,
|
|
|
+ sizeof(struct sctp_datahdr));
|
|
|
default:
|
|
|
BUG();
|
|
|
}
|
|
@@ -3358,7 +3361,7 @@ sctp_disposition_t sctp_sf_do_9_2_final(struct net *net,
|
|
|
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
|
|
|
|
|
|
/* Make sure that the SHUTDOWN_ACK chunk has a valid length. */
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
/* 10.2 H) SHUTDOWN COMPLETE notification
|
|
@@ -3435,7 +3438,7 @@ sctp_disposition_t sctp_sf_ootb(struct net *net,
|
|
|
{
|
|
|
struct sctp_chunk *chunk = arg;
|
|
|
struct sk_buff *skb = chunk->skb;
|
|
|
- sctp_chunkhdr_t *ch;
|
|
|
+ struct sctp_chunkhdr *ch;
|
|
|
sctp_errhdr_t *err;
|
|
|
__u8 *ch_end;
|
|
|
int ootb_shut_ack = 0;
|
|
@@ -3443,10 +3446,10 @@ sctp_disposition_t sctp_sf_ootb(struct net *net,
|
|
|
|
|
|
SCTP_INC_STATS(net, SCTP_MIB_OUTOFBLUES);
|
|
|
|
|
|
- ch = (sctp_chunkhdr_t *) chunk->chunk_hdr;
|
|
|
+ ch = (struct sctp_chunkhdr *)chunk->chunk_hdr;
|
|
|
do {
|
|
|
/* Report violation if the chunk is less then minimal */
|
|
|
- if (ntohs(ch->length) < sizeof(sctp_chunkhdr_t))
|
|
|
+ if (ntohs(ch->length) < sizeof(*ch))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -3487,7 +3490,7 @@ sctp_disposition_t sctp_sf_ootb(struct net *net,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ch = (sctp_chunkhdr_t *) ch_end;
|
|
|
+ ch = (struct sctp_chunkhdr *)ch_end;
|
|
|
} while (ch_end < skb_tail_pointer(skb));
|
|
|
|
|
|
if (ootb_shut_ack)
|
|
@@ -3560,7 +3563,7 @@ static sctp_disposition_t sctp_sf_shut_8_4_5(struct net *net,
|
|
|
/* If the chunk length is invalid, we don't want to process
|
|
|
* the reset of the packet.
|
|
|
*/
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_pdiscard(net, ep, asoc, type, arg, commands);
|
|
|
|
|
|
/* We need to discard the rest of the packet to prevent
|
|
@@ -3591,7 +3594,7 @@ sctp_disposition_t sctp_sf_do_8_5_1_E_sa(struct net *net,
|
|
|
struct sctp_chunk *chunk = arg;
|
|
|
|
|
|
/* Make sure that the SHUTDOWN_ACK chunk has a valid length. */
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -4256,7 +4259,7 @@ sctp_disposition_t sctp_sf_unk_chunk(struct net *net,
|
|
|
{
|
|
|
struct sctp_chunk *unk_chunk = arg;
|
|
|
struct sctp_chunk *err_chunk;
|
|
|
- sctp_chunkhdr_t *hdr;
|
|
|
+ struct sctp_chunkhdr *hdr;
|
|
|
|
|
|
pr_debug("%s: processing unknown chunk id:%d\n", __func__, type.chunk);
|
|
|
|
|
@@ -4267,7 +4270,7 @@ sctp_disposition_t sctp_sf_unk_chunk(struct net *net,
|
|
|
* Since we don't know the chunk type, we use a general
|
|
|
* chunkhdr structure to make a comparison.
|
|
|
*/
|
|
|
- if (!sctp_chunk_length_valid(unk_chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(unk_chunk, sizeof(*hdr)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -4340,7 +4343,7 @@ sctp_disposition_t sctp_sf_discard_chunk(struct net *net,
|
|
|
* Since we don't know the chunk type, we use a general
|
|
|
* chunkhdr structure to make a comparison.
|
|
|
*/
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -4405,7 +4408,7 @@ sctp_disposition_t sctp_sf_violation(struct net *net,
|
|
|
struct sctp_chunk *chunk = arg;
|
|
|
|
|
|
/* Make sure that the chunk has a valid length. */
|
|
|
- if (!sctp_chunk_length_valid(chunk, sizeof(sctp_chunkhdr_t)))
|
|
|
+ if (!sctp_chunk_length_valid(chunk, sizeof(struct sctp_chunkhdr)))
|
|
|
return sctp_sf_violation_chunklen(net, ep, asoc, type, arg,
|
|
|
commands);
|
|
|
|
|
@@ -6121,9 +6124,9 @@ static struct sctp_packet *sctp_ootb_pkt_new(struct net *net,
|
|
|
switch (chunk->chunk_hdr->type) {
|
|
|
case SCTP_CID_INIT:
|
|
|
{
|
|
|
- sctp_init_chunk_t *init;
|
|
|
+ struct sctp_init_chunk *init;
|
|
|
|
|
|
- init = (sctp_init_chunk_t *)chunk->chunk_hdr;
|
|
|
+ init = (struct sctp_init_chunk *)chunk->chunk_hdr;
|
|
|
vtag = ntohl(init->init_hdr.init_tag);
|
|
|
break;
|
|
|
}
|
|
@@ -6196,7 +6199,7 @@ static int sctp_eat_data(const struct sctp_association *asoc,
|
|
|
struct sctp_chunk *chunk,
|
|
|
sctp_cmd_seq_t *commands)
|
|
|
{
|
|
|
- sctp_datahdr_t *data_hdr;
|
|
|
+ struct sctp_datahdr *data_hdr;
|
|
|
struct sctp_chunk *err;
|
|
|
size_t datalen;
|
|
|
sctp_verb_t deliver;
|
|
@@ -6209,8 +6212,9 @@ static int sctp_eat_data(const struct sctp_association *asoc,
|
|
|
u16 sid;
|
|
|
u8 ordered = 0;
|
|
|
|
|
|
- data_hdr = chunk->subh.data_hdr = (sctp_datahdr_t *)chunk->skb->data;
|
|
|
- skb_pull(chunk->skb, sizeof(sctp_datahdr_t));
|
|
|
+ data_hdr = (struct sctp_datahdr *)chunk->skb->data;
|
|
|
+ chunk->subh.data_hdr = data_hdr;
|
|
|
+ skb_pull(chunk->skb, sizeof(*data_hdr));
|
|
|
|
|
|
tsn = ntohl(data_hdr->tsn);
|
|
|
pr_debug("%s: TSN 0x%x\n", __func__, tsn);
|
|
@@ -6258,7 +6262,7 @@ static int sctp_eat_data(const struct sctp_association *asoc,
|
|
|
* Actually, allow a little bit of overflow (up to a MTU).
|
|
|
*/
|
|
|
datalen = ntohs(chunk->chunk_hdr->length);
|
|
|
- datalen -= sizeof(sctp_data_chunk_t);
|
|
|
+ datalen -= sizeof(struct sctp_data_chunk);
|
|
|
|
|
|
deliver = SCTP_CMD_CHUNK_ULP;
|
|
|
|