Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 64595
b: refs/heads/master
c: ab3e5e7
h: refs/heads/master
i:
  64593: 6e58854
  64591: 54fb139
v: v3
  • Loading branch information
Vlad Yasevich committed Aug 29, 2007
1 parent 7e3b0bf commit 849b521
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ea2dfb3733d53ac98b17756435d1f99e25490357
refs/heads/master: ab3e5e7b65dde661f5eb86b445496c5967283333
35 changes: 23 additions & 12 deletions trunk/net/sctp/sm_make_chunk.c
Original file line number Diff line number Diff line change
Expand Up @@ -1174,25 +1174,36 @@ int sctp_user_addto_chunk(struct sctp_chunk *chunk, int off, int len,
*/
void sctp_chunk_assign_ssn(struct sctp_chunk *chunk)
{
struct sctp_datamsg *msg;
struct sctp_chunk *lchunk;
struct sctp_stream *stream;
__u16 ssn;
__u16 sid;

if (chunk->has_ssn)
return;

/* This is the last possible instant to assign a SSN. */
if (chunk->chunk_hdr->flags & SCTP_DATA_UNORDERED) {
ssn = 0;
} else {
sid = ntohs(chunk->subh.data_hdr->stream);
if (chunk->chunk_hdr->flags & SCTP_DATA_LAST_FRAG)
ssn = sctp_ssn_next(&chunk->asoc->ssnmap->out, sid);
else
ssn = sctp_ssn_peek(&chunk->asoc->ssnmap->out, sid);
}
/* All fragments will be on the same stream */
sid = ntohs(chunk->subh.data_hdr->stream);
stream = &chunk->asoc->ssnmap->out;

chunk->subh.data_hdr->ssn = htons(ssn);
chunk->has_ssn = 1;
/* Now assign the sequence number to the entire message.
* All fragments must have the same stream sequence number.
*/
msg = chunk->msg;
list_for_each_entry(lchunk, &msg->chunks, frag_list) {
if (lchunk->chunk_hdr->flags & SCTP_DATA_UNORDERED) {
ssn = 0;
} else {
if (lchunk->chunk_hdr->flags & SCTP_DATA_LAST_FRAG)
ssn = sctp_ssn_next(stream, sid);
else
ssn = sctp_ssn_peek(stream, sid);
}

lchunk->subh.data_hdr->ssn = htons(ssn);
lchunk->has_ssn = 1;
}
}

/* Helper function to assign a TSN if needed. This assumes that both
Expand Down

0 comments on commit 849b521

Please sign in to comment.