summaryrefslogtreecommitdiff
path: root/sys/netinet/sctp_structs.h
diff options
context:
space:
mode:
authorRandall Stewart <rrs@FreeBSD.org>2007-03-15 11:27:14 +0000
committerRandall Stewart <rrs@FreeBSD.org>2007-03-15 11:27:14 +0000
commit42551e993f61f4539c578eead782f661e65eaf36 (patch)
tree3a099c736ba497f25dc6fd964a7995f33f2282ad /sys/netinet/sctp_structs.h
parente6a464153235f358c488e3cda721a0ae9e9f94a2 (diff)
downloadsrc-test2-42551e993f61f4539c578eead782f661e65eaf36.tar.gz
src-test2-42551e993f61f4539c578eead782f661e65eaf36.zip
Notes
Diffstat (limited to 'sys/netinet/sctp_structs.h')
-rw-r--r--sys/netinet/sctp_structs.h34
1 files changed, 24 insertions, 10 deletions
diff --git a/sys/netinet/sctp_structs.h b/sys/netinet/sctp_structs.h
index 412ee02239aa..6830b13eb44a 100644
--- a/sys/netinet/sctp_structs.h
+++ b/sys/netinet/sctp_structs.h
@@ -96,7 +96,7 @@ TAILQ_HEAD(sctp_resethead, sctp_stream_reset_list);
/*
* Users of the iterator need to malloc a iterator with a call to
- * sctp_initiate_iterator(inp_func, assoc_func, pcb_flags, pcb_features,
+ * sctp_initiate_iterator(inp_func, assoc_func, inp_func, pcb_flags, pcb_features,
* asoc_state, void-ptr-arg, uint32-arg, end_func, inp);
*
* Use the following two defines if you don't care what pcb flags are on the EP
@@ -114,16 +114,17 @@ TAILQ_HEAD(sctp_resethead, sctp_stream_reset_list);
typedef void (*asoc_func) (struct sctp_inpcb *, struct sctp_tcb *, void *ptr,
uint32_t val);
-typedef void (*inp_func) (struct sctp_inpcb *, void *ptr, uint32_t val);
+typedef int (*inp_func) (struct sctp_inpcb *, void *ptr, uint32_t val);
typedef void (*end_func) (void *ptr, uint32_t val);
struct sctp_iterator {
- LIST_ENTRY(sctp_iterator) sctp_nxt_itr;
+ TAILQ_ENTRY(sctp_iterator) sctp_nxt_itr;
struct sctp_timer tmr;
struct sctp_inpcb *inp; /* current endpoint */
struct sctp_tcb *stcb; /* current* assoc */
asoc_func function_assoc; /* per assoc function */
inp_func function_inp; /* per endpoint function */
+ inp_func function_inp_end; /* end INP function */
end_func function_atend;/* iterator completion function */
void *pointer; /* pointer for apply func to use */
uint32_t val; /* value for apply func to use */
@@ -132,13 +133,14 @@ struct sctp_iterator {
uint32_t asoc_state; /* assoc state being checked */
uint32_t iterator_flags;
uint8_t no_chunk_output;
+ uint8_t done_current_ep;
};
/* iterator_flags values */
#define SCTP_ITERATOR_DO_ALL_INP 0x00000001
#define SCTP_ITERATOR_DO_SINGLE_INP 0x00000002
-LIST_HEAD(sctpiterators, sctp_iterator);
+TAILQ_HEAD(sctpiterators, sctp_iterator);
struct sctp_copy_all {
struct sctp_inpcb *inp; /* ep */
@@ -149,6 +151,12 @@ struct sctp_copy_all {
int cnt_failed;
};
+struct sctp_asconf_iterator {
+ struct sctpladdr list_of_work;
+ int cnt;
+};
+
+
struct sctp_nets {
TAILQ_ENTRY(sctp_nets) sctp_next; /* next link */
@@ -165,7 +173,7 @@ struct sctp_nets {
struct sctp_route {
struct rtentry *ro_rt;
union sctp_sockstore _l_addr; /* remote peer addr */
- union sctp_sockstore _s_addr; /* our selected src addr */
+ struct sctp_ifa *_s_addr; /* our selected src addr */
} ro;
/* mtu discovered so far */
uint32_t mtu;
@@ -435,7 +443,7 @@ TAILQ_HEAD(sctp_asconf_addrhead, sctp_asconf_addr);
struct sctp_asconf_addr {
TAILQ_ENTRY(sctp_asconf_addr) next;
struct sctp_asconf_addr_param ap;
- struct ifaddr *ifa; /* save the ifa for add/del ip */
+ struct sctp_ifa *ifa; /* save the ifa for add/del ip */
uint8_t sent; /* has this been sent yet? */
};
@@ -483,7 +491,8 @@ struct sctp_association {
struct sctp_timer delayed_event_timer; /* timer for delayed events */
/* list of local addresses when add/del in progress */
- struct sctpladdr sctp_local_addr_list;
+ struct sctpladdr sctp_restricted_addrs;
+
struct sctpnetlisthead nets;
/* Free chunk list */
@@ -573,6 +582,8 @@ struct sctp_association {
/* queue of chunks waiting to be sent into the local stack */
struct sctp_readhead pending_reply_queue;
+ uint32_t vrf_id;
+
uint32_t cookie_preserve_req;
/* ASCONF next seq I am sending out, inits at init-tsn */
uint32_t asconf_seq_out;
@@ -739,6 +750,9 @@ struct sctp_association {
unsigned int cookie_life;
/* time to delay acks for */
unsigned int delayed_ack;
+ unsigned int old_delayed_ack;
+ unsigned int sack_freq;
+ unsigned int data_pkts_seen;
unsigned int numduptsns;
int dup_tsns[SCTP_MAX_DUP_TSNS];
@@ -813,10 +827,10 @@ struct sctp_association {
uint8_t stream_locked;
uint8_t authenticated; /* packet authenticated ok */
/*
- * This flag indicates that we need to send the first SACK. If in
- * place it says we have NOT yet sent a SACK and need to.
+ * This flag indicates that a SACK need to be sent. Initially this
+ * is 1 to send the first sACK immediately.
*/
- uint8_t first_ack_sent;
+ uint8_t send_sack;
/* max burst after fast retransmit completes */
uint8_t max_burst;