summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJon Grimm <jgrimm@jgrimm.austin.ibm.com>2002-09-25 08:06:51 -0500
committerJon Grimm <jgrimm@jgrimm.austin.ibm.com>2002-09-25 08:06:51 -0500
commitdd18325fa22cf34f76cd78595125488888be0306 (patch)
tree60cdf3c7b0f5281c2bb5110b3674b141bc0552a3 /include
parent5dd6a6e5cdad7a7018accce3ccd888dea2667405 (diff)
parent372f525b495c56405463397fa09ee3019afc9543 (diff)
Merge http://linux.bkbits.net/linux-2.5
into jgrimm.austin.ibm.com:/home/jgrimm/bk/test.merge.38
Diffstat (limited to 'include')
-rw-r--r--include/net/sctp/constants.h1
-rw-r--r--include/net/sctp/sctp.h3
-rw-r--r--include/net/sctp/sm.h8
-rw-r--r--include/net/sctp/structs.h15
4 files changed, 25 insertions, 2 deletions
diff --git a/include/net/sctp/constants.h b/include/net/sctp/constants.h
index f187be387f1c..90a7ba3cb29f 100644
--- a/include/net/sctp/constants.h
+++ b/include/net/sctp/constants.h
@@ -112,6 +112,7 @@ typedef enum {
SCTP_EVENT_TIMEOUT_T2_SHUTDOWN,
SCTP_EVENT_TIMEOUT_T3_RTX,
SCTP_EVENT_TIMEOUT_T4_RTO,
+ SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD,
SCTP_EVENT_TIMEOUT_HEARTBEAT,
SCTP_EVENT_TIMEOUT_SACK,
SCTP_EVENT_TIMEOUT_AUTOCLOSE,
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
index 2c7b3c0b6534..d45cdd15f939 100644
--- a/include/net/sctp/sctp.h
+++ b/include/net/sctp/sctp.h
@@ -114,7 +114,8 @@ extern sctp_protocol_t sctp_proto;
extern struct sock *sctp_get_ctl_sock(void);
extern int sctp_copy_local_addr_list(sctp_protocol_t *, sctp_bind_addr_t *,
sctp_scope_t, int priority, int flags);
-
+extern sctp_pf_t *sctp_get_pf_specific(int family);
+extern void sctp_set_pf_specific(int family, sctp_pf_t *);
/*
* sctp_socket.c
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h
index 27c055ecc5c4..5cb4858fac34 100644
--- a/include/net/sctp/sm.h
+++ b/include/net/sctp/sm.h
@@ -107,6 +107,9 @@ sctp_state_fn_t sctp_sf_timer_ignore;
sctp_state_fn_t sctp_sf_do_9_1_abort;
sctp_state_fn_t sctp_sf_cookie_wait_abort;
sctp_state_fn_t sctp_sf_cookie_echoed_abort;
+sctp_state_fn_t sctp_sf_shutdown_pending_abort;
+sctp_state_fn_t sctp_sf_shutdown_sent_abort;
+sctp_state_fn_t sctp_sf_shutdown_ack_sent_abort;
sctp_state_fn_t sctp_sf_do_5_1B_init;
sctp_state_fn_t sctp_sf_do_5_1C_ack;
sctp_state_fn_t sctp_sf_do_5_1D_ce;
@@ -119,6 +122,7 @@ sctp_state_fn_t sctp_sf_tabort_8_4_8;
sctp_state_fn_t sctp_sf_operr_notify;
sctp_state_fn_t sctp_sf_t1_timer_expire;
sctp_state_fn_t sctp_sf_t2_timer_expire;
+sctp_state_fn_t sctp_sf_t5_timer_expire;
sctp_state_fn_t sctp_sf_sendbeat_8_3;
sctp_state_fn_t sctp_sf_beat_8_3;
sctp_state_fn_t sctp_sf_backbeat_8_3;
@@ -134,6 +138,7 @@ sctp_state_fn_t sctp_sf_discard_chunk;
sctp_state_fn_t sctp_sf_do_5_2_1_siminit;
sctp_state_fn_t sctp_sf_do_5_2_2_dupinit;
sctp_state_fn_t sctp_sf_do_5_2_4_dupcook;
+sctp_state_fn_t sctp_sf_unk_chunk;
/* Prototypes for primitive event state functions. */
sctp_state_fn_t sctp_sf_do_prm_asoc;
@@ -144,6 +149,9 @@ sctp_state_fn_t sctp_sf_cookie_echoed_prm_shutdown;
sctp_state_fn_t sctp_sf_do_9_1_prm_abort;
sctp_state_fn_t sctp_sf_cookie_wait_prm_abort;
sctp_state_fn_t sctp_sf_cookie_echoed_prm_abort;
+sctp_state_fn_t sctp_sf_shutdown_pending_prm_abort;
+sctp_state_fn_t sctp_sf_shutdown_sent_prm_abort;
+sctp_state_fn_t sctp_sf_shutdown_ack_sent_prm_abort;
sctp_state_fn_t sctp_sf_error_closed;
sctp_state_fn_t sctp_sf_error_shutdown;
sctp_state_fn_t sctp_sf_ignore_primitive;
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h
index 4f600a419d08..69f99bba1d9b 100644
--- a/include/net/sctp/structs.h
+++ b/include/net/sctp/structs.h
@@ -255,6 +255,12 @@ typedef struct sctp_func {
sctp_func_t *sctp_get_af_specific(const sockaddr_storage_t *address);
+/* Protocol family functions. */
+typedef struct sctp_pf {
+ void (*event_msgname)(sctp_ulpevent_t *, char *, int *);
+ void (*skb_msgname)(struct sk_buff *, char *, int *);
+} sctp_pf_t;
+
/* SCTP Socket type: UDP or TCP style. */
typedef enum {
SCTP_SOCKET_UDP = 0,
@@ -280,6 +286,7 @@ struct sctp_opt {
__u32 autoclose;
__u8 nodelay;
__u8 disable_fragments;
+ sctp_pf_t *pf;
};
@@ -845,6 +852,7 @@ int sctp_outqueue_set_output_handlers(sctp_outqueue_t *,
sctp_outqueue_ohandler_force_t force);
void sctp_outqueue_restart(sctp_outqueue_t *);
void sctp_retransmit(sctp_outqueue_t *, sctp_transport_t *, __u8);
+void sctp_retransmit_mark(sctp_outqueue_t *, sctp_transport_t *, __u8);
/* These bind address data fields common between endpoints and associations */
@@ -1128,6 +1136,11 @@ struct SCTP_association {
*/
sctp_transport_t *primary_path;
+ /* Cache the primary path address here, when we
+ * need a an address for msg_name.
+ */
+ sockaddr_storage_t primary_addr;
+
/* active_path
* The path that we are currently using to
* transmit new data and most control chunks.
@@ -1183,7 +1196,7 @@ struct SCTP_association {
int next_dup_tsn;
/* Do we need to sack the peer? */
- int sack_needed;
+ uint8_t sack_needed;
/* These are capabilities which our peer advertised. */
__u8 ecn_capable; /* Can peer do ECN? */