aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/sctp
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2007-10-03 20:51:34 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:51:31 -0400
commitbbd0d59809f923ea2b540cbd781b32110e249f6e (patch)
tree8a278cfa0e7bcc7b415e93baf6d1a93536efe17a /include/net/sctp
parent4cd57c8078fae0a4b1bf421191e94626d0cba92a (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 'include/net/sctp')
-rw-r--r--include/net/sctp/constants.h4
-rw-r--r--include/net/sctp/sm.h1
-rw-r--r--include/net/sctp/structs.h8
3 files changed, 12 insertions, 1 deletions
diff --git a/include/net/sctp/constants.h b/include/net/sctp/constants.h
index 777118f06dba..da8354e8e33c 100644
--- a/include/net/sctp/constants.h
+++ b/include/net/sctp/constants.h
@@ -183,7 +183,9 @@ typedef enum {
183 SCTP_IERROR_NO_DATA, 183 SCTP_IERROR_NO_DATA,
184 SCTP_IERROR_BAD_STREAM, 184 SCTP_IERROR_BAD_STREAM,
185 SCTP_IERROR_BAD_PORTS, 185 SCTP_IERROR_BAD_PORTS,
186 186 SCTP_IERROR_AUTH_BAD_HMAC,
187 SCTP_IERROR_AUTH_BAD_KEYID,
188 SCTP_IERROR_PROTO_VIOLATION,
187} sctp_ierror_t; 189} sctp_ierror_t;
188 190
189 191
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h
index 148cdb4b9606..bf2f5ed69c15 100644
--- a/include/net/sctp/sm.h
+++ b/include/net/sctp/sm.h
@@ -143,6 +143,7 @@ sctp_state_fn_t sctp_sf_do_asconf_ack;
143sctp_state_fn_t sctp_sf_do_9_2_reshutack; 143sctp_state_fn_t sctp_sf_do_9_2_reshutack;
144sctp_state_fn_t sctp_sf_eat_fwd_tsn; 144sctp_state_fn_t sctp_sf_eat_fwd_tsn;
145sctp_state_fn_t sctp_sf_eat_fwd_tsn_fast; 145sctp_state_fn_t sctp_sf_eat_fwd_tsn_fast;
146sctp_state_fn_t sctp_sf_eat_auth;
146 147
147/* Prototypes for primitive event state functions. */ 148/* Prototypes for primitive event state functions. */
148sctp_state_fn_t sctp_sf_do_prm_asoc; 149sctp_state_fn_t sctp_sf_do_prm_asoc;
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index 31841c3a7fe8..47e54f8e2b65 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -724,6 +724,13 @@ struct sctp_chunk {
724 */ 724 */
725 struct sctp_transport *transport; 725 struct sctp_transport *transport;
726 726
727 /* SCTP-AUTH: For the special case inbound processing of COOKIE-ECHO
728 * we need save a pointer to the AUTH chunk, since the SCTP-AUTH
729 * spec violates the principle premis that all chunks are processed
730 * in order.
731 */
732 struct sk_buff *auth_chunk;
733
727 __u8 rtt_in_progress; /* Is this chunk used for RTT calculation? */ 734 __u8 rtt_in_progress; /* Is this chunk used for RTT calculation? */
728 __u8 resent; /* Has this chunk ever been retransmitted. */ 735 __u8 resent; /* Has this chunk ever been retransmitted. */
729 __u8 has_tsn; /* Does this chunk have a TSN yet? */ 736 __u8 has_tsn; /* Does this chunk have a TSN yet? */
@@ -1067,6 +1074,7 @@ void sctp_inq_init(struct sctp_inq *);
1067void sctp_inq_free(struct sctp_inq *); 1074void sctp_inq_free(struct sctp_inq *);
1068void sctp_inq_push(struct sctp_inq *, struct sctp_chunk *packet); 1075void sctp_inq_push(struct sctp_inq *, struct sctp_chunk *packet);
1069struct sctp_chunk *sctp_inq_pop(struct sctp_inq *); 1076struct sctp_chunk *sctp_inq_pop(struct sctp_inq *);
1077struct sctp_chunkhdr *sctp_inq_peek(struct sctp_inq *);
1070void sctp_inq_set_th_handler(struct sctp_inq *, work_func_t); 1078void sctp_inq_set_th_handler(struct sctp_inq *, work_func_t);
1071 1079
1072/* This is the structure we use to hold outbound chunks. You push 1080/* This is the structure we use to hold outbound chunks. You push