Blame view
include/linux/tcp.h
14.2 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
/* * INET An implementation of the TCP/IP protocol suite for the LINUX * operating system. INET is implemented using the BSD Socket * interface as the means of communication with the user level. * * Definitions for the TCP protocol. * * Version: @(#)tcp.h 1.0.2 04/28/93 * * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG> * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #ifndef _LINUX_TCP_H #define _LINUX_TCP_H #include <linux/types.h> #include <asm/byteorder.h> |
cfb6eeb4c [TCP]: MD5 Signat... |
22 |
#include <linux/socket.h> |
1da177e4c Linux-2.6.12-rc2 |
23 24 |
struct tcphdr { |
46a97324a [IPV4]: TCP heade... |
25 26 27 28 |
__be16 source; __be16 dest; __be32 seq; __be32 ack_seq; |
1da177e4c Linux-2.6.12-rc2 |
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#if defined(__LITTLE_ENDIAN_BITFIELD) __u16 res1:4, doff:4, fin:1, syn:1, rst:1, psh:1, ack:1, urg:1, ece:1, cwr:1; #elif defined(__BIG_ENDIAN_BITFIELD) __u16 doff:4, res1:4, cwr:1, ece:1, urg:1, ack:1, psh:1, rst:1, syn:1, fin:1; #else #error "Adjust your <asm/byteorder.h> defines" #endif |
46a97324a [IPV4]: TCP heade... |
54 |
__be16 window; |
9981a0e36 [NET]: Annotate c... |
55 |
__sum16 check; |
46a97324a [IPV4]: TCP heade... |
56 |
__be16 urg_ptr; |
1da177e4c Linux-2.6.12-rc2 |
57 |
}; |
1da177e4c Linux-2.6.12-rc2 |
58 59 60 61 62 63 64 |
/* * The union cast uses a gcc extension to avoid aliasing problems * (union is compatible to any of its members) * This means this part of the code is -fstrict-aliasing safe now. */ union tcp_word_hdr { struct tcphdr hdr; |
46a97324a [IPV4]: TCP heade... |
65 |
__be32 words[5]; |
1da177e4c Linux-2.6.12-rc2 |
66 67 68 69 70 |
}; #define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3]) enum { |
f3a7c66b5 net: replace __co... |
71 72 73 74 75 76 77 78 79 80 |
TCP_FLAG_CWR = __cpu_to_be32(0x00800000), TCP_FLAG_ECE = __cpu_to_be32(0x00400000), TCP_FLAG_URG = __cpu_to_be32(0x00200000), TCP_FLAG_ACK = __cpu_to_be32(0x00100000), TCP_FLAG_PSH = __cpu_to_be32(0x00080000), TCP_FLAG_RST = __cpu_to_be32(0x00040000), TCP_FLAG_SYN = __cpu_to_be32(0x00020000), TCP_FLAG_FIN = __cpu_to_be32(0x00010000), TCP_RESERVED_BITS = __cpu_to_be32(0x0F000000), TCP_DATA_OFFSET = __cpu_to_be32(0xF0000000) |
1da177e4c Linux-2.6.12-rc2 |
81 |
}; |
bee7ca9ec net: TCP_MSS_DEFA... |
82 83 84 85 86 |
/* * TCP general constants */ #define TCP_MSS_DEFAULT 536U /* IPv4 (RFC1122, RFC2581) */ #define TCP_MSS_DESIRED 1220U /* IPv6 (tunneled), EDNS0 (RFC3226) */ |
1da177e4c Linux-2.6.12-rc2 |
87 88 89 90 91 92 93 94 95 96 97 98 99 |
/* TCP socket options */ #define TCP_NODELAY 1 /* Turn off Nagle's algorithm. */ #define TCP_MAXSEG 2 /* Limit MSS */ #define TCP_CORK 3 /* Never send partially complete segments */ #define TCP_KEEPIDLE 4 /* Start keeplives after this period */ #define TCP_KEEPINTVL 5 /* Interval between keepalives */ #define TCP_KEEPCNT 6 /* Number of keepalives before death */ #define TCP_SYNCNT 7 /* Number of SYN retransmits */ #define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */ #define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */ #define TCP_WINDOW_CLAMP 10 /* Bound advertised window */ #define TCP_INFO 11 /* Information about this connection. */ #define TCP_QUICKACK 12 /* Block/reenable quick acks */ |
5f8ef48d2 [TCP]: Allow choo... |
100 |
#define TCP_CONGESTION 13 /* Congestion control algorithm */ |
cfb6eeb4c [TCP]: MD5 Signat... |
101 |
#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */ |
519855c50 TCPCT part 1c: sy... |
102 |
#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */ |
36e31b0af net: TCP thin lin... |
103 |
#define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/ |
7e3801755 net: TCP thin dupack |
104 |
#define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */ |
1da177e4c Linux-2.6.12-rc2 |
105 |
|
519855c50 TCPCT part 1c: sy... |
106 |
/* for TCP_INFO socket option */ |
1da177e4c Linux-2.6.12-rc2 |
107 108 109 110 |
#define TCPI_OPT_TIMESTAMPS 1 #define TCPI_OPT_SACK 2 #define TCPI_OPT_WSCALE 4 #define TCPI_OPT_ECN 8 |
d94d9fee9 net: cleanup incl... |
111 |
enum tcp_ca_state { |
1da177e4c Linux-2.6.12-rc2 |
112 113 114 115 116 117 118 119 120 121 122 |
TCP_CA_Open = 0, #define TCPF_CA_Open (1<<TCP_CA_Open) TCP_CA_Disorder = 1, #define TCPF_CA_Disorder (1<<TCP_CA_Disorder) TCP_CA_CWR = 2, #define TCPF_CA_CWR (1<<TCP_CA_CWR) TCP_CA_Recovery = 3, #define TCPF_CA_Recovery (1<<TCP_CA_Recovery) TCP_CA_Loss = 4 #define TCPF_CA_Loss (1<<TCP_CA_Loss) }; |
d94d9fee9 net: cleanup incl... |
123 |
struct tcp_info { |
1da177e4c Linux-2.6.12-rc2 |
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
__u8 tcpi_state; __u8 tcpi_ca_state; __u8 tcpi_retransmits; __u8 tcpi_probes; __u8 tcpi_backoff; __u8 tcpi_options; __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; __u32 tcpi_rto; __u32 tcpi_ato; __u32 tcpi_snd_mss; __u32 tcpi_rcv_mss; __u32 tcpi_unacked; __u32 tcpi_sacked; __u32 tcpi_lost; __u32 tcpi_retrans; __u32 tcpi_fackets; /* Times. */ __u32 tcpi_last_data_sent; __u32 tcpi_last_ack_sent; /* Not remembered, sorry. */ __u32 tcpi_last_data_recv; __u32 tcpi_last_ack_recv; /* Metrics. */ __u32 tcpi_pmtu; __u32 tcpi_rcv_ssthresh; __u32 tcpi_rtt; __u32 tcpi_rttvar; __u32 tcpi_snd_ssthresh; __u32 tcpi_snd_cwnd; __u32 tcpi_advmss; __u32 tcpi_reordering; __u32 tcpi_rcv_rtt; __u32 tcpi_rcv_space; __u32 tcpi_total_retrans; }; |
cfb6eeb4c [TCP]: MD5 Signat... |
164 165 166 167 168 169 170 171 172 173 |
/* for TCP_MD5SIG socket option */ #define TCP_MD5SIG_MAXKEYLEN 80 struct tcp_md5sig { struct __kernel_sockaddr_storage tcpm_addr; /* address associated */ __u16 __tcpm_pad1; /* zero */ __u16 tcpm_keylen; /* key length */ __u32 __tcpm_pad2; /* zero */ __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN]; /* key (binary) */ }; |
519855c50 TCPCT part 1c: sy... |
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
/* for TCP_COOKIE_TRANSACTIONS (TCPCT) socket option */ #define TCP_COOKIE_MIN 8 /* 64-bits */ #define TCP_COOKIE_MAX 16 /* 128-bits */ #define TCP_COOKIE_PAIR_SIZE (2*TCP_COOKIE_MAX) /* Flags for both getsockopt and setsockopt */ #define TCP_COOKIE_IN_ALWAYS (1 << 0) /* Discard SYN without cookie */ #define TCP_COOKIE_OUT_NEVER (1 << 1) /* Prohibit outgoing cookies, * supercedes everything. */ /* Flags for getsockopt */ #define TCP_S_DATA_IN (1 << 2) /* Was data received? */ #define TCP_S_DATA_OUT (1 << 3) /* Was data sent? */ /* TCP_COOKIE_TRANSACTIONS data */ struct tcp_cookie_transactions { __u16 tcpct_flags; /* see above */ __u8 __tcpct_pad1; /* zero */ __u8 tcpct_cookie_desired; /* bytes */ __u16 tcpct_s_data_desired; /* bytes of variable data */ __u16 tcpct_used; /* bytes in value */ __u8 tcpct_value[TCP_MSS_DEFAULT]; }; |
1da177e4c Linux-2.6.12-rc2 |
197 |
#ifdef __KERNEL__ |
1da177e4c Linux-2.6.12-rc2 |
198 |
#include <linux/skbuff.h> |
c8a553ad7 [TCP]: Move inclu... |
199 |
#include <linux/dmaengine.h> |
1da177e4c Linux-2.6.12-rc2 |
200 |
#include <net/sock.h> |
463c84b97 [NET]: Introduce ... |
201 |
#include <net/inet_connection_sock.h> |
8feaf0c0a [INET]: Generalis... |
202 |
#include <net/inet_timewait_sock.h> |
1da177e4c Linux-2.6.12-rc2 |
203 |
|
aa8223c7b [SK_BUFF]: Introd... |
204 205 |
static inline struct tcphdr *tcp_hdr(const struct sk_buff *skb) { |
9c70220b7 [SK_BUFF]: Introd... |
206 |
return (struct tcphdr *)skb_transport_header(skb); |
aa8223c7b [SK_BUFF]: Introd... |
207 |
} |
ab6a5bb6b [TCP]: Introduce ... |
208 209 |
static inline unsigned int tcp_hdrlen(const struct sk_buff *skb) { |
aa8223c7b [SK_BUFF]: Introd... |
210 |
return tcp_hdr(skb)->doff * 4; |
ab6a5bb6b [TCP]: Introduce ... |
211 212 213 214 |
} static inline unsigned int tcp_optlen(const struct sk_buff *skb) { |
aa8223c7b [SK_BUFF]: Introd... |
215 |
return (tcp_hdr(skb)->doff - 5) * 4; |
ab6a5bb6b [TCP]: Introduce ... |
216 |
} |
1da177e4c Linux-2.6.12-rc2 |
217 |
/* This defines a selective acknowledgement block. */ |
269bd27e6 [TCP]: struct tcp... |
218 219 220 221 |
struct tcp_sack_block_wire { __be32 start_seq; __be32 end_seq; }; |
1da177e4c Linux-2.6.12-rc2 |
222 |
struct tcp_sack_block { |
3a137d206 [TCP]: Renove the... |
223 224 |
u32 start_seq; u32 end_seq; |
1da177e4c Linux-2.6.12-rc2 |
225 |
}; |
1da177e4c Linux-2.6.12-rc2 |
226 227 228 |
struct tcp_options_received { /* PAWS/RTTM data */ long ts_recent_stamp;/* Time we stored ts_recent (for aging) */ |
3a137d206 [TCP]: Renove the... |
229 230 231 232 |
u32 ts_recent; /* Time stamp to echo next */ u32 rcv_tsval; /* Time stamp value */ u32 rcv_tsecr; /* Time stamp echo reply */ u16 saw_tstamp : 1, /* Saw TIMESTAMP on last packet */ |
1da177e4c Linux-2.6.12-rc2 |
233 234 235 236 237 238 |
tstamp_ok : 1, /* TIMESTAMP seen on SYN packet */ dsack : 1, /* D-SACK is scheduled */ wscale_ok : 1, /* Wscale seen on SYN packet */ sack_ok : 4, /* SACK seen on SYN packet */ snd_wscale : 4, /* Window scaling received from sender */ rcv_wscale : 4; /* Window scaling to send to receiver */ |
435cf559f TCPCT part 1d: de... |
239 240 241 |
u8 cookie_plus:6, /* bytes in authenticator/cookie option */ cookie_out_never:1, cookie_in_always:1; |
3a137d206 [TCP]: Renove the... |
242 |
u8 num_sacks; /* Number of SACK blocks */ |
435cf559f TCPCT part 1d: de... |
243 |
u16 user_mss; /* mss requested by user in ioctl */ |
3a137d206 [TCP]: Renove the... |
244 |
u16 mss_clamp; /* Maximal mss, negotiated at connection setup */ |
1da177e4c Linux-2.6.12-rc2 |
245 |
}; |
519855c50 TCPCT part 1c: sy... |
246 247 |
static inline void tcp_clear_options(struct tcp_options_received *rx_opt) { |
435cf559f TCPCT part 1d: de... |
248 249 250 |
rx_opt->tstamp_ok = rx_opt->sack_ok = 0; rx_opt->wscale_ok = rx_opt->snd_wscale = 0; rx_opt->cookie_plus = 0; |
519855c50 TCPCT part 1c: sy... |
251 |
} |
4389dded7 tcp: Remove redun... |
252 |
/* This is the max number of SACKS that we'll generate and process. It's safe |
435cf559f TCPCT part 1d: de... |
253 |
* to increase this, although since: |
4389dded7 tcp: Remove redun... |
254 255 256 |
* size = TCPOLEN_SACK_BASE_ALIGNED (4) + n * TCPOLEN_SACK_PERBLOCK (8) * only four options will fit in a standard TCP header */ #define TCP_NUM_SACKS 4 |
435cf559f TCPCT part 1d: de... |
257 258 |
struct tcp_cookie_values; struct tcp_request_sock_ops; |
2e6599cb8 [NET] Generalise ... |
259 |
struct tcp_request_sock { |
cfb6eeb4c [TCP]: MD5 Signat... |
260 261 262 |
struct inet_request_sock req; #ifdef CONFIG_TCP_MD5SIG /* Only used by TCP MD5 Signature so far. */ |
b2e4b3deb tcp: MD5 operatio... |
263 |
const struct tcp_request_sock_ops *af_specific; |
cfb6eeb4c [TCP]: MD5 Signat... |
264 |
#endif |
435cf559f TCPCT part 1d: de... |
265 266 |
u32 rcv_isn; u32 snt_isn; |
2e6599cb8 [NET] Generalise ... |
267 |
}; |
60236fdd0 [NET] Rename open... |
268 |
static inline struct tcp_request_sock *tcp_rsk(const struct request_sock *req) |
2e6599cb8 [NET] Generalise ... |
269 270 271 |
{ return (struct tcp_request_sock *)req; } |
1da177e4c Linux-2.6.12-rc2 |
272 |
struct tcp_sock { |
463c84b97 [NET]: Introduce ... |
273 274 |
/* inet_connection_sock has to be the first member of tcp_sock */ struct inet_connection_sock inet_conn; |
2ff52f282 [TCP]: Change tcp... |
275 |
u16 tcp_header_len; /* Bytes of tcp header to send */ |
2a3a041c4 tcp: cache result... |
276 |
u16 xmit_size_goal_segs; /* Goal for segmenting output packets */ |
1da177e4c Linux-2.6.12-rc2 |
277 278 279 280 281 |
/* * Header prediction flags * 0x5?10 << 16 + snd_wnd in net byte order */ |
dddc93c05 [TCP]: struct tcp... |
282 |
__be32 pred_flags; |
1da177e4c Linux-2.6.12-rc2 |
283 284 285 286 287 288 |
/* * RFC793 variables by their proper names. This means you can * read the code and the spec side by side (and laugh ...) * See RFC793 and RFC1122. The RFC writes these in capitals. */ |
3a137d206 [TCP]: Renove the... |
289 |
u32 rcv_nxt; /* What we want to receive next */ |
54287cc17 [TCP]: Keep copie... |
290 291 |
u32 copied_seq; /* Head of yet unread data */ u32 rcv_wup; /* rcv_nxt on last window update sent */ |
3a137d206 [TCP]: Renove the... |
292 |
u32 snd_nxt; /* Next sequence we send */ |
1da177e4c Linux-2.6.12-rc2 |
293 |
|
3a137d206 [TCP]: Renove the... |
294 295 296 297 |
u32 snd_una; /* First byte we want an ack for */ u32 snd_sml; /* Last byte of the most recently transmitted small packet */ u32 rcv_tstamp; /* timestamp of last received ACK (for keepalives) */ u32 lsndtime; /* timestamp of last sent data packet (for restart window) */ |
1da177e4c Linux-2.6.12-rc2 |
298 299 300 301 302 303 304 305 |
/* Data for direct copy to user */ struct { struct sk_buff_head prequeue; struct task_struct *task; struct iovec *iov; int memory; int len; |
97fc2f084 [I/OAT]: Structur... |
306 307 308 309 310 311 312 |
#ifdef CONFIG_NET_DMA /* members for async copy */ struct dma_chan *dma_chan; int wakeup; struct dma_pinned_list *pinned_list; dma_cookie_t dma_cookie; #endif |
1da177e4c Linux-2.6.12-rc2 |
313 |
} ucopy; |
3a137d206 [TCP]: Renove the... |
314 315 316 317 |
u32 snd_wl1; /* Sequence for window update */ u32 snd_wnd; /* The window we expect to receive */ u32 max_window; /* Maximal window ever seen from peer */ u32 mss_cache; /* Cached effective mss, not including SACKS */ |
1da177e4c Linux-2.6.12-rc2 |
318 |
|
3a137d206 [TCP]: Renove the... |
319 320 |
u32 window_clamp; /* Maximal window to advertise */ u32 rcv_ssthresh; /* Current window clamp */ |
1da177e4c Linux-2.6.12-rc2 |
321 |
|
3a137d206 [TCP]: Renove the... |
322 |
u32 frto_highmark; /* snd_nxt when RTO occurred */ |
b79eeeb9e tcp: Reorganize t... |
323 |
u16 advmss; /* Advertised MSS */ |
3a137d206 [TCP]: Renove the... |
324 |
u8 frto_counter; /* Number of new acks after RTO */ |
36e31b0af net: TCP thin lin... |
325 326 |
u8 nonagle : 4,/* Disable Nagle algorithm? */ thin_lto : 1,/* Use linear timeouts for thin streams */ |
7e3801755 net: TCP thin dupack |
327 328 |
thin_dupack : 1,/* Fast retransmit on first dupack */ unused : 2; |
1da177e4c Linux-2.6.12-rc2 |
329 330 |
/* RTT measurement */ |
3a137d206 [TCP]: Renove the... |
331 332 333 334 335 336 337 |
u32 srtt; /* smoothed round trip time << 3 */ u32 mdev; /* medium deviation */ u32 mdev_max; /* maximal mdev for the last rtt period */ u32 rttvar; /* smoothed mdev_max */ u32 rtt_seq; /* sequence number to update rttvar */ u32 packets_out; /* Packets which are "in flight" */ |
3a137d206 [TCP]: Renove the... |
338 |
u32 retrans_out; /* Retransmitted packets out */ |
b79eeeb9e tcp: Reorganize t... |
339 340 |
u16 urg_data; /* Saved octet of OOB data and control flags */ |
b79eeeb9e tcp: Reorganize t... |
341 |
u8 ecn_flags; /* ECN status bits. */ |
33f5f57ee tcp: kill pointle... |
342 343 344 345 |
u8 reordering; /* Packet reordering metric. */ u32 snd_up; /* Urgent pointer */ u8 keepalive_probes; /* num of allowed keep alive probes */ |
1da177e4c Linux-2.6.12-rc2 |
346 347 348 |
/* * Options received (usually on last packet, some only on SYN packets). */ |
1da177e4c Linux-2.6.12-rc2 |
349 350 351 352 353 |
struct tcp_options_received rx_opt; /* * Slow start and congestion control (see also Nagle, and Karn & Partridge) */ |
3a137d206 [TCP]: Renove the... |
354 355 |
u32 snd_ssthresh; /* Slow start size threshold */ u32 snd_cwnd; /* Sending congestion window */ |
f78a1b389 [TCP]: Make snd_c... |
356 |
u32 snd_cwnd_cnt; /* Linear increase counter */ |
e0ef57cc5 [TCP]: Make snd_c... |
357 |
u32 snd_cwnd_clamp; /* Do not allow snd_cwnd to grow above this */ |
3a137d206 [TCP]: Renove the... |
358 359 |
u32 snd_cwnd_used; u32 snd_cwnd_stamp; |
1da177e4c Linux-2.6.12-rc2 |
360 |
|
3a137d206 [TCP]: Renove the... |
361 |
u32 rcv_wnd; /* Current receiver window */ |
3a137d206 [TCP]: Renove the... |
362 363 |
u32 write_seq; /* Tail(+1) of data held in tcp send buffer */ u32 pushed_seq; /* Last pushed seq, required to talk to windows */ |
b79eeeb9e tcp: Reorganize t... |
364 365 366 367 368 |
u32 lost_out; /* Lost packets */ u32 sacked_out; /* SACK'd packets */ u32 fackets_out; /* FACK'd packets */ u32 tso_deferred; u32 bytes_acked; /* Appropriate Byte Counting - RFC3465 */ |
1da177e4c Linux-2.6.12-rc2 |
369 |
|
b79eeeb9e tcp: Reorganize t... |
370 371 372 373 |
/* from STCP, retrans queue hinting */ struct sk_buff* lost_skb_hint; struct sk_buff *scoreboard_skb_hint; struct sk_buff *retransmit_skb_hint; |
b79eeeb9e tcp: Reorganize t... |
374 375 376 377 |
struct sk_buff_head out_of_order_queue; /* Out of order segments go here */ /* SACKs data, these 2 need to be together (see tcp_build_and_update_options) */ |
1da177e4c Linux-2.6.12-rc2 |
378 379 |
struct tcp_sack_block duplicate_sack[1]; /* D-SACK block */ struct tcp_sack_block selective_acks[4]; /* The SACKS themselves*/ |
fd6dad616 [TCP]: Earlier SA... |
380 |
struct tcp_sack_block recv_sack_cache[4]; |
6a438bbe6 [TCP]: speed up S... |
381 |
|
a47e5a988 [TCP]: Convert hi... |
382 383 384 385 |
struct sk_buff *highest_sack; /* highest skb with SACK received * (validity guaranteed only if * sacked_out > 0) */ |
d738cd8fc [TCP]: Add highes... |
386 |
|
6a438bbe6 [TCP]: speed up S... |
387 |
int lost_cnt_hint; |
006f582c7 tcp: convert retr... |
388 |
u32 retransmit_high; /* L-bits may be on up to this seqno */ |
6a438bbe6 [TCP]: speed up S... |
389 |
|
b08d6cb22 [TCP]: Limit proc... |
390 |
u32 lost_retrans_low; /* Sent seq after any rxmit (lowest) */ |
4b7494404 tcp: Make prior_s... |
391 |
u32 prior_ssthresh; /* ssthresh saved at recovery start */ |
3a137d206 [TCP]: Renove the... |
392 |
u32 high_seq; /* snd_nxt at onset of congestion */ |
1da177e4c Linux-2.6.12-rc2 |
393 |
|
3a137d206 [TCP]: Renove the... |
394 |
u32 retrans_stamp; /* Timestamp of the last retransmit, |
1da177e4c Linux-2.6.12-rc2 |
395 396 |
* also used in SYN-SENT to remember stamp of * the first SYN. */ |
3a137d206 [TCP]: Renove the... |
397 |
u32 undo_marker; /* tracking retrans started here. */ |
1da177e4c Linux-2.6.12-rc2 |
398 |
int undo_retrans; /* number of undoable retransmissions. */ |
b79eeeb9e tcp: Reorganize t... |
399 |
u32 total_retrans; /* Total retransmits for entire connection */ |
3a137d206 [TCP]: Renove the... |
400 |
u32 urg_seq; /* Seq of received urgent pointer */ |
1da177e4c Linux-2.6.12-rc2 |
401 402 |
unsigned int keepalive_time; /* time before keep alive takes place */ unsigned int keepalive_intvl; /* time interval between keep alive probes */ |
1da177e4c Linux-2.6.12-rc2 |
403 |
|
a0f82f64e syncookies: remov... |
404 |
int linger2; |
1da177e4c Linux-2.6.12-rc2 |
405 406 407 |
/* Receiver side RTT estimation */ struct { |
3a137d206 [TCP]: Renove the... |
408 409 410 |
u32 rtt; u32 seq; u32 time; |
1da177e4c Linux-2.6.12-rc2 |
411 412 413 414 415 |
} rcv_rtt_est; /* Receiver queue space */ struct { int space; |
3a137d206 [TCP]: Renove the... |
416 417 |
u32 seq; u32 time; |
1da177e4c Linux-2.6.12-rc2 |
418 |
} rcvq_space; |
0e7b13685 [TCP] mtu probing... |
419 420 421 |
/* TCP-specific MTU probe information. */ struct { |
3a137d206 [TCP]: Renove the... |
422 423 |
u32 probe_seq_start; u32 probe_seq_end; |
0e7b13685 [TCP] mtu probing... |
424 |
} mtu_probe; |
cfb6eeb4c [TCP]: MD5 Signat... |
425 426 427 |
#ifdef CONFIG_TCP_MD5SIG /* TCP AF-Specific parts; only used by MD5 Signature support so far */ |
b2e4b3deb tcp: MD5 operatio... |
428 |
const struct tcp_sock_af_ops *af_specific; |
cfb6eeb4c [TCP]: MD5 Signat... |
429 |
|
b2e4b3deb tcp: MD5 operatio... |
430 |
/* TCP MD5 Signature Option information */ |
cfb6eeb4c [TCP]: MD5 Signat... |
431 432 |
struct tcp_md5sig_info *md5sig_info; #endif |
435cf559f TCPCT part 1d: de... |
433 434 435 436 437 438 |
/* When the cookie options are generated and exchanged, then this * object holds a reference to them (cookie_values->kref). Also * contains related tcp_cookie_transactions fields. */ struct tcp_cookie_values *cookie_values; |
1da177e4c Linux-2.6.12-rc2 |
439 440 441 442 443 444 |
}; static inline struct tcp_sock *tcp_sk(const struct sock *sk) { return (struct tcp_sock *)sk; } |
8feaf0c0a [INET]: Generalis... |
445 446 |
struct tcp_timewait_sock { struct inet_timewait_sock tw_sk; |
3a137d206 [TCP]: Renove the... |
447 448 449 450 |
u32 tw_rcv_nxt; u32 tw_snd_nxt; u32 tw_rcv_wnd; u32 tw_ts_recent; |
8feaf0c0a [INET]: Generalis... |
451 |
long tw_ts_recent_stamp; |
cfb6eeb4c [TCP]: MD5 Signat... |
452 |
#ifdef CONFIG_TCP_MD5SIG |
3a137d206 [TCP]: Renove the... |
453 454 |
u16 tw_md5_keylen; u8 tw_md5_key[TCP_MD5SIG_MAXKEYLEN]; |
cfb6eeb4c [TCP]: MD5 Signat... |
455 |
#endif |
435cf559f TCPCT part 1d: de... |
456 457 458 459 |
/* Few sockets in timewait have cookies; in that case, then this * object holds a reference to them (tw_cookie_values->kref). */ struct tcp_cookie_values *tw_cookie_values; |
8feaf0c0a [INET]: Generalis... |
460 461 462 463 464 465 |
}; static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk) { return (struct tcp_timewait_sock *)sk; } |
519855c50 TCPCT part 1c: sy... |
466 |
#endif /* __KERNEL__ */ |
1da177e4c Linux-2.6.12-rc2 |
467 468 |
#endif /* _LINUX_TCP_H */ |