diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2007-10-03 20:51:34 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:51:31 -0400 |
commit | bbd0d59809f923ea2b540cbd781b32110e249f6e (patch) | |
tree | 8a278cfa0e7bcc7b415e93baf6d1a93536efe17a /net/sctp/inqueue.c | |
parent | 4cd57c8078fae0a4b1bf421191e94626d0cba92a (diff) |
[SCTP]: Implement the receive and verification of AUTH chunk
This patch implements the receive path needed to process authenticated
chunks. Add ability to process the AUTH chunk and handle edge cases
for authenticated COOKIE-ECHO as well.
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/inqueue.c')
-rw-r--r-- | net/sctp/inqueue.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/net/sctp/inqueue.c b/net/sctp/inqueue.c index e4ea7fdf36ed..f10fe7fbf24c 100644 --- a/net/sctp/inqueue.c +++ b/net/sctp/inqueue.c | |||
@@ -100,6 +100,25 @@ void sctp_inq_push(struct sctp_inq *q, struct sctp_chunk *chunk) | |||
100 | q->immediate.func(&q->immediate); | 100 | q->immediate.func(&q->immediate); |
101 | } | 101 | } |
102 | 102 | ||
103 | /* Peek at the next chunk on the inqeue. */ | ||
104 | struct sctp_chunkhdr *sctp_inq_peek(struct sctp_inq *queue) | ||
105 | { | ||
106 | struct sctp_chunk *chunk; | ||
107 | sctp_chunkhdr_t *ch = NULL; | ||
108 | |||
109 | chunk = queue->in_progress; | ||
110 | /* If there is no more chunks in this packet, say so */ | ||
111 | if (chunk->singleton || | ||
112 | chunk->end_of_packet || | ||
113 | chunk->pdiscard) | ||
114 | return NULL; | ||
115 | |||
116 | ch = (sctp_chunkhdr_t *)chunk->chunk_end; | ||
117 | |||
118 | return ch; | ||
119 | } | ||
120 | |||
121 | |||
103 | /* Extract a chunk from an SCTP inqueue. | 122 | /* Extract a chunk from an SCTP inqueue. |
104 | * | 123 | * |
105 | * WARNING: If you need to put the chunk on another queue, you need to | 124 | * WARNING: If you need to put the chunk on another queue, you need to |