diff options
Diffstat (limited to 'include/net/sctp')
-rw-r--r-- | include/net/sctp/constants.h | 4 | ||||
-rw-r--r-- | include/net/sctp/sctp.h | 3 | ||||
-rw-r--r-- | include/net/sctp/sm.h | 3 | ||||
-rw-r--r-- | include/net/sctp/structs.h | 19 | ||||
-rw-r--r-- | include/net/sctp/user.h | 134 |
5 files changed, 62 insertions, 101 deletions
diff --git a/include/net/sctp/constants.h b/include/net/sctp/constants.h index 58f714a3b670..63908840eef0 100644 --- a/include/net/sctp/constants.h +++ b/include/net/sctp/constants.h | |||
@@ -308,6 +308,10 @@ enum { SCTP_MAX_GABS = 16 }; | |||
308 | 308 | ||
309 | #define SCTP_DEFAULT_MINWINDOW 1500 /* default minimum rwnd size */ | 309 | #define SCTP_DEFAULT_MINWINDOW 1500 /* default minimum rwnd size */ |
310 | #define SCTP_DEFAULT_MAXWINDOW 65535 /* default rwnd size */ | 310 | #define SCTP_DEFAULT_MAXWINDOW 65535 /* default rwnd size */ |
311 | #define SCTP_DEFAULT_RWND_SHIFT 4 /* by default, update on 1/16 of | ||
312 | * rcvbuf, which is 1/8 of initial | ||
313 | * window | ||
314 | */ | ||
311 | #define SCTP_DEFAULT_MAXSEGMENT 1500 /* MTU size, this is the limit | 315 | #define SCTP_DEFAULT_MAXSEGMENT 1500 /* MTU size, this is the limit |
312 | * to which we will raise the P-MTU. | 316 | * to which we will raise the P-MTU. |
313 | */ | 317 | */ |
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 8a6d5297de16..78740ec57d5d 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
@@ -227,8 +227,7 @@ DECLARE_SNMP_STAT(struct sctp_mib, sctp_statistics); | |||
227 | #endif /* !TEST_FRAME */ | 227 | #endif /* !TEST_FRAME */ |
228 | 228 | ||
229 | /* sctp mib definitions */ | 229 | /* sctp mib definitions */ |
230 | enum | 230 | enum { |
231 | { | ||
232 | SCTP_MIB_NUM = 0, | 231 | SCTP_MIB_NUM = 0, |
233 | SCTP_MIB_CURRESTAB, /* CurrEstab */ | 232 | SCTP_MIB_CURRESTAB, /* CurrEstab */ |
234 | SCTP_MIB_ACTIVEESTABS, /* ActiveEstabs */ | 233 | SCTP_MIB_ACTIVEESTABS, /* ActiveEstabs */ |
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h index c1dd89365833..851c813adb3a 100644 --- a/include/net/sctp/sm.h +++ b/include/net/sctp/sm.h | |||
@@ -243,7 +243,8 @@ struct sctp_chunk *sctp_make_op_error(const struct sctp_association *, | |||
243 | const struct sctp_chunk *chunk, | 243 | const struct sctp_chunk *chunk, |
244 | __be16 cause_code, | 244 | __be16 cause_code, |
245 | const void *payload, | 245 | const void *payload, |
246 | size_t paylen); | 246 | size_t paylen, |
247 | size_t reserve_tail); | ||
247 | 248 | ||
248 | struct sctp_chunk *sctp_make_asconf_update_ip(struct sctp_association *, | 249 | struct sctp_chunk *sctp_make_asconf_update_ip(struct sctp_association *, |
249 | union sctp_addr *, | 250 | union sctp_addr *, |
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index cd2e18778f81..ff3017744711 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
@@ -231,6 +231,11 @@ extern struct sctp_globals { | |||
231 | /* Flag to indicate whether computing and verifying checksum | 231 | /* Flag to indicate whether computing and verifying checksum |
232 | * is disabled. */ | 232 | * is disabled. */ |
233 | int checksum_disable; | 233 | int checksum_disable; |
234 | |||
235 | /* Threshold for rwnd update SACKS. Receive buffer shifted this many | ||
236 | * bits is an indicator of when to send and window update SACK. | ||
237 | */ | ||
238 | int rwnd_update_shift; | ||
234 | } sctp_globals; | 239 | } sctp_globals; |
235 | 240 | ||
236 | #define sctp_rto_initial (sctp_globals.rto_initial) | 241 | #define sctp_rto_initial (sctp_globals.rto_initial) |
@@ -267,6 +272,7 @@ extern struct sctp_globals { | |||
267 | #define sctp_prsctp_enable (sctp_globals.prsctp_enable) | 272 | #define sctp_prsctp_enable (sctp_globals.prsctp_enable) |
268 | #define sctp_auth_enable (sctp_globals.auth_enable) | 273 | #define sctp_auth_enable (sctp_globals.auth_enable) |
269 | #define sctp_checksum_disable (sctp_globals.checksum_disable) | 274 | #define sctp_checksum_disable (sctp_globals.checksum_disable) |
275 | #define sctp_rwnd_upd_shift (sctp_globals.rwnd_update_shift) | ||
270 | 276 | ||
271 | /* SCTP Socket type: UDP or TCP style. */ | 277 | /* SCTP Socket type: UDP or TCP style. */ |
272 | typedef enum { | 278 | typedef enum { |
@@ -893,7 +899,6 @@ struct sctp_transport { | |||
893 | */ | 899 | */ |
894 | /* RTO : The current retransmission timeout value. */ | 900 | /* RTO : The current retransmission timeout value. */ |
895 | unsigned long rto; | 901 | unsigned long rto; |
896 | unsigned long last_rto; | ||
897 | 902 | ||
898 | __u32 rtt; /* This is the most recent RTT. */ | 903 | __u32 rtt; /* This is the most recent RTT. */ |
899 | 904 | ||
@@ -936,6 +941,8 @@ struct sctp_transport { | |||
936 | /* Data that has been sent, but not acknowledged. */ | 941 | /* Data that has been sent, but not acknowledged. */ |
937 | __u32 flight_size; | 942 | __u32 flight_size; |
938 | 943 | ||
944 | __u32 burst_limited; /* Holds old cwnd when max.burst is applied */ | ||
945 | |||
939 | /* TSN marking the fast recovery exit point */ | 946 | /* TSN marking the fast recovery exit point */ |
940 | __u32 fast_recovery_exit; | 947 | __u32 fast_recovery_exit; |
941 | 948 | ||
@@ -944,12 +951,6 @@ struct sctp_transport { | |||
944 | /* Source address. */ | 951 | /* Source address. */ |
945 | union sctp_addr saddr; | 952 | union sctp_addr saddr; |
946 | 953 | ||
947 | /* When was the last time(in jiffies) that a data packet was sent on | ||
948 | * this transport? This is used to adjust the cwnd when the transport | ||
949 | * becomes inactive. | ||
950 | */ | ||
951 | unsigned long last_time_used; | ||
952 | |||
953 | /* Heartbeat interval: The endpoint sends out a Heartbeat chunk to | 954 | /* Heartbeat interval: The endpoint sends out a Heartbeat chunk to |
954 | * the destination address every heartbeat interval. | 955 | * the destination address every heartbeat interval. |
955 | */ | 956 | */ |
@@ -988,7 +989,7 @@ struct sctp_transport { | |||
988 | int init_sent_count; | 989 | int init_sent_count; |
989 | 990 | ||
990 | /* state : The current state of this destination, | 991 | /* state : The current state of this destination, |
991 | * : i.e. SCTP_ACTIVE, SCTP_INACTIVE, SCTP_UNKOWN. | 992 | * : i.e. SCTP_ACTIVE, SCTP_INACTIVE, SCTP_UNKNOWN. |
992 | */ | 993 | */ |
993 | int state; | 994 | int state; |
994 | 995 | ||
@@ -1070,6 +1071,8 @@ void sctp_transport_put(struct sctp_transport *); | |||
1070 | void sctp_transport_update_rto(struct sctp_transport *, __u32); | 1071 | void sctp_transport_update_rto(struct sctp_transport *, __u32); |
1071 | void sctp_transport_raise_cwnd(struct sctp_transport *, __u32, __u32); | 1072 | void sctp_transport_raise_cwnd(struct sctp_transport *, __u32, __u32); |
1072 | void sctp_transport_lower_cwnd(struct sctp_transport *, sctp_lower_cwnd_t); | 1073 | void sctp_transport_lower_cwnd(struct sctp_transport *, sctp_lower_cwnd_t); |
1074 | void sctp_transport_burst_limited(struct sctp_transport *); | ||
1075 | void sctp_transport_burst_reset(struct sctp_transport *); | ||
1073 | unsigned long sctp_transport_timeout(struct sctp_transport *); | 1076 | unsigned long sctp_transport_timeout(struct sctp_transport *); |
1074 | void sctp_transport_reset(struct sctp_transport *); | 1077 | void sctp_transport_reset(struct sctp_transport *); |
1075 | void sctp_transport_update_pmtu(struct sctp_transport *, u32); | 1078 | void sctp_transport_update_pmtu(struct sctp_transport *, u32); |
diff --git a/include/net/sctp/user.h b/include/net/sctp/user.h index be2334aaf52e..2b2769c5ca9f 100644 --- a/include/net/sctp/user.h +++ b/include/net/sctp/user.h | |||
@@ -60,96 +60,49 @@ typedef __s32 sctp_assoc_t; | |||
60 | /* The following symbols come from the Sockets API Extensions for | 60 | /* The following symbols come from the Sockets API Extensions for |
61 | * SCTP <draft-ietf-tsvwg-sctpsocket-07.txt>. | 61 | * SCTP <draft-ietf-tsvwg-sctpsocket-07.txt>. |
62 | */ | 62 | */ |
63 | enum sctp_optname { | 63 | #define SCTP_RTOINFO 0 |
64 | SCTP_RTOINFO, | 64 | #define SCTP_ASSOCINFO 1 |
65 | #define SCTP_RTOINFO SCTP_RTOINFO | 65 | #define SCTP_INITMSG 2 |
66 | SCTP_ASSOCINFO, | 66 | #define SCTP_NODELAY 3 /* Get/set nodelay option. */ |
67 | #define SCTP_ASSOCINFO SCTP_ASSOCINFO | 67 | #define SCTP_AUTOCLOSE 4 |
68 | SCTP_INITMSG, | 68 | #define SCTP_SET_PEER_PRIMARY_ADDR 5 |
69 | #define SCTP_INITMSG SCTP_INITMSG | 69 | #define SCTP_PRIMARY_ADDR 6 |
70 | SCTP_NODELAY, /* Get/set nodelay option. */ | 70 | #define SCTP_ADAPTATION_LAYER 7 |
71 | #define SCTP_NODELAY SCTP_NODELAY | 71 | #define SCTP_DISABLE_FRAGMENTS 8 |
72 | SCTP_AUTOCLOSE, | 72 | #define SCTP_PEER_ADDR_PARAMS 9 |
73 | #define SCTP_AUTOCLOSE SCTP_AUTOCLOSE | 73 | #define SCTP_DEFAULT_SEND_PARAM 10 |
74 | SCTP_SET_PEER_PRIMARY_ADDR, | 74 | #define SCTP_EVENTS 11 |
75 | #define SCTP_SET_PEER_PRIMARY_ADDR SCTP_SET_PEER_PRIMARY_ADDR | 75 | #define SCTP_I_WANT_MAPPED_V4_ADDR 12 /* Turn on/off mapped v4 addresses */ |
76 | SCTP_PRIMARY_ADDR, | 76 | #define SCTP_MAXSEG 13 /* Get/set maximum fragment. */ |
77 | #define SCTP_PRIMARY_ADDR SCTP_PRIMARY_ADDR | 77 | #define SCTP_STATUS 14 |
78 | SCTP_ADAPTATION_LAYER, | 78 | #define SCTP_GET_PEER_ADDR_INFO 15 |
79 | #define SCTP_ADAPTATION_LAYER SCTP_ADAPTATION_LAYER | 79 | #define SCTP_DELAYED_ACK_TIME 16 |
80 | SCTP_DISABLE_FRAGMENTS, | 80 | #define SCTP_DELAYED_ACK SCTP_DELAYED_ACK_TIME |
81 | #define SCTP_DISABLE_FRAGMENTS SCTP_DISABLE_FRAGMENTS | 81 | #define SCTP_CONTEXT 17 |
82 | SCTP_PEER_ADDR_PARAMS, | 82 | #define SCTP_FRAGMENT_INTERLEAVE 18 |
83 | #define SCTP_PEER_ADDR_PARAMS SCTP_PEER_ADDR_PARAMS | 83 | #define SCTP_PARTIAL_DELIVERY_POINT 19 /* Set/Get partial delivery point */ |
84 | SCTP_DEFAULT_SEND_PARAM, | 84 | #define SCTP_MAX_BURST 20 /* Set/Get max burst */ |
85 | #define SCTP_DEFAULT_SEND_PARAM SCTP_DEFAULT_SEND_PARAM | 85 | #define SCTP_AUTH_CHUNK 21 /* Set only: add a chunk type to authenticate */ |
86 | SCTP_EVENTS, | 86 | #define SCTP_HMAC_IDENT 22 |
87 | #define SCTP_EVENTS SCTP_EVENTS | 87 | #define SCTP_AUTH_KEY 23 |
88 | SCTP_I_WANT_MAPPED_V4_ADDR, /* Turn on/off mapped v4 addresses */ | 88 | #define SCTP_AUTH_ACTIVE_KEY 24 |
89 | #define SCTP_I_WANT_MAPPED_V4_ADDR SCTP_I_WANT_MAPPED_V4_ADDR | 89 | #define SCTP_AUTH_DELETE_KEY 25 |
90 | SCTP_MAXSEG, /* Get/set maximum fragment. */ | 90 | #define SCTP_PEER_AUTH_CHUNKS 26 /* Read only */ |
91 | #define SCTP_MAXSEG SCTP_MAXSEG | 91 | #define SCTP_LOCAL_AUTH_CHUNKS 27 /* Read only */ |
92 | SCTP_STATUS, | 92 | #define SCTP_GET_ASSOC_NUMBER 28 /* Read only */ |
93 | #define SCTP_STATUS SCTP_STATUS | 93 | |
94 | SCTP_GET_PEER_ADDR_INFO, | 94 | /* Internal Socket Options. Some of the sctp library functions are |
95 | #define SCTP_GET_PEER_ADDR_INFO SCTP_GET_PEER_ADDR_INFO | 95 | * implemented using these socket options. |
96 | SCTP_DELAYED_ACK, | 96 | */ |
97 | #define SCTP_DELAYED_ACK_TIME SCTP_DELAYED_ACK | 97 | #define SCTP_SOCKOPT_BINDX_ADD 100 /* BINDX requests for adding addrs */ |
98 | #define SCTP_DELAYED_ACK SCTP_DELAYED_ACK | 98 | #define SCTP_SOCKOPT_BINDX_REM 101 /* BINDX requests for removing addrs. */ |
99 | SCTP_CONTEXT, /* Receive Context */ | 99 | #define SCTP_SOCKOPT_PEELOFF 102 /* peel off association. */ |
100 | #define SCTP_CONTEXT SCTP_CONTEXT | 100 | /* Options 104-106 are deprecated and removed. Do not use this space */ |
101 | SCTP_FRAGMENT_INTERLEAVE, | 101 | #define SCTP_SOCKOPT_CONNECTX_OLD 107 /* CONNECTX old requests. */ |
102 | #define SCTP_FRAGMENT_INTERLEAVE SCTP_FRAGMENT_INTERLEAVE | 102 | #define SCTP_GET_PEER_ADDRS 108 /* Get all peer addresss. */ |
103 | SCTP_PARTIAL_DELIVERY_POINT, /* Set/Get partial delivery point */ | 103 | #define SCTP_GET_LOCAL_ADDRS 109 /* Get all local addresss. */ |
104 | #define SCTP_PARTIAL_DELIVERY_POINT SCTP_PARTIAL_DELIVERY_POINT | 104 | #define SCTP_SOCKOPT_CONNECTX 110 /* CONNECTX requests. */ |
105 | SCTP_MAX_BURST, /* Set/Get max burst */ | 105 | #define SCTP_SOCKOPT_CONNECTX3 111 /* CONNECTX requests (updated) */ |
106 | #define SCTP_MAX_BURST SCTP_MAX_BURST | ||
107 | SCTP_AUTH_CHUNK, /* Set only: add a chunk type to authenticat */ | ||
108 | #define SCTP_AUTH_CHUNK SCTP_AUTH_CHUNK | ||
109 | SCTP_HMAC_IDENT, | ||
110 | #define SCTP_HMAC_IDENT SCTP_HMAC_IDENT | ||
111 | SCTP_AUTH_KEY, | ||
112 | #define SCTP_AUTH_KEY SCTP_AUTH_KEY | ||
113 | SCTP_AUTH_ACTIVE_KEY, | ||
114 | #define SCTP_AUTH_ACTIVE_KEY SCTP_AUTH_ACTIVE_KEY | ||
115 | SCTP_AUTH_DELETE_KEY, | ||
116 | #define SCTP_AUTH_DELETE_KEY SCTP_AUTH_DELETE_KEY | ||
117 | SCTP_PEER_AUTH_CHUNKS, /* Read only */ | ||
118 | #define SCTP_PEER_AUTH_CHUNKS SCTP_PEER_AUTH_CHUNKS | ||
119 | SCTP_LOCAL_AUTH_CHUNKS, /* Read only */ | ||
120 | #define SCTP_LOCAL_AUTH_CHUNKS SCTP_LOCAL_AUTH_CHUNKS | ||
121 | SCTP_GET_ASSOC_NUMBER, /* Read only */ | ||
122 | #define SCTP_GET_ASSOC_NUMBER SCTP_GET_ASSOC_NUMBER | ||
123 | |||
124 | |||
125 | /* Internal Socket Options. Some of the sctp library functions are | ||
126 | * implemented using these socket options. | ||
127 | */ | ||
128 | SCTP_SOCKOPT_BINDX_ADD = 100,/* BINDX requests for adding addresses. */ | ||
129 | #define SCTP_SOCKOPT_BINDX_ADD SCTP_SOCKOPT_BINDX_ADD | ||
130 | SCTP_SOCKOPT_BINDX_REM, /* BINDX requests for removing addresses. */ | ||
131 | #define SCTP_SOCKOPT_BINDX_REM SCTP_SOCKOPT_BINDX_REM | ||
132 | SCTP_SOCKOPT_PEELOFF, /* peel off association. */ | ||
133 | #define SCTP_SOCKOPT_PEELOFF SCTP_SOCKOPT_PEELOFF | ||
134 | SCTP_GET_PEER_ADDRS_NUM_OLD, /* Get number of peer addresss. */ | ||
135 | #define SCTP_GET_PEER_ADDRS_NUM_OLD SCTP_GET_PEER_ADDRS_NUM_OLD | ||
136 | SCTP_GET_PEER_ADDRS_OLD, /* Get all peer addresss. */ | ||
137 | #define SCTP_GET_PEER_ADDRS_OLD SCTP_GET_PEER_ADDRS_OLD | ||
138 | SCTP_GET_LOCAL_ADDRS_NUM_OLD, /* Get number of local addresss. */ | ||
139 | #define SCTP_GET_LOCAL_ADDRS_NUM_OLD SCTP_GET_LOCAL_ADDRS_NUM_OLD | ||
140 | SCTP_GET_LOCAL_ADDRS_OLD, /* Get all local addresss. */ | ||
141 | #define SCTP_GET_LOCAL_ADDRS_OLD SCTP_GET_LOCAL_ADDRS_OLD | ||
142 | SCTP_SOCKOPT_CONNECTX_OLD, /* CONNECTX old requests. */ | ||
143 | #define SCTP_SOCKOPT_CONNECTX_OLD SCTP_SOCKOPT_CONNECTX_OLD | ||
144 | SCTP_GET_PEER_ADDRS, /* Get all peer addresss. */ | ||
145 | #define SCTP_GET_PEER_ADDRS SCTP_GET_PEER_ADDRS | ||
146 | SCTP_GET_LOCAL_ADDRS, /* Get all local addresss. */ | ||
147 | #define SCTP_GET_LOCAL_ADDRS SCTP_GET_LOCAL_ADDRS | ||
148 | SCTP_SOCKOPT_CONNECTX, /* CONNECTX requests. */ | ||
149 | #define SCTP_SOCKOPT_CONNECTX SCTP_SOCKOPT_CONNECTX | ||
150 | SCTP_SOCKOPT_CONNECTX3, /* CONNECTX requests. (new implementation) */ | ||
151 | #define SCTP_SOCKOPT_CONNECTX3 SCTP_SOCKOPT_CONNECTX3 | ||
152 | }; | ||
153 | 106 | ||
154 | /* | 107 | /* |
155 | * 5.2.1 SCTP Initiation Structure (SCTP_INIT) | 108 | * 5.2.1 SCTP Initiation Structure (SCTP_INIT) |
@@ -206,6 +159,7 @@ enum sctp_sinfo_flags { | |||
206 | SCTP_UNORDERED = 1, /* Send/receive message unordered. */ | 159 | SCTP_UNORDERED = 1, /* Send/receive message unordered. */ |
207 | SCTP_ADDR_OVER = 2, /* Override the primary destination. */ | 160 | SCTP_ADDR_OVER = 2, /* Override the primary destination. */ |
208 | SCTP_ABORT=4, /* Send an ABORT message to the peer. */ | 161 | SCTP_ABORT=4, /* Send an ABORT message to the peer. */ |
162 | SCTP_SACK_IMMEDIATELY = 8, /* SACK should be sent without delay */ | ||
209 | SCTP_EOF=MSG_FIN, /* Initiate graceful shutdown process. */ | 163 | SCTP_EOF=MSG_FIN, /* Initiate graceful shutdown process. */ |
210 | }; | 164 | }; |
211 | 165 | ||