aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/linux/tcp.h33
-rw-r--r--include/net/tcp.h6
2 files changed, 33 insertions, 6 deletions
diff --git a/include/linux/tcp.h b/include/linux/tcp.h
index 32d7d77b4a01..eaa3113b3786 100644
--- a/include/linux/tcp.h
+++ b/include/linux/tcp.h
@@ -102,7 +102,9 @@ enum {
102#define TCP_QUICKACK 12 /* Block/reenable quick acks */ 102#define TCP_QUICKACK 12 /* Block/reenable quick acks */
103#define TCP_CONGESTION 13 /* Congestion control algorithm */ 103#define TCP_CONGESTION 13 /* Congestion control algorithm */
104#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */ 104#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */
105#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */
105 106
107/* for TCP_INFO socket option */
106#define TCPI_OPT_TIMESTAMPS 1 108#define TCPI_OPT_TIMESTAMPS 1
107#define TCPI_OPT_SACK 2 109#define TCPI_OPT_SACK 2
108#define TCPI_OPT_WSCALE 4 110#define TCPI_OPT_WSCALE 4
@@ -174,6 +176,30 @@ struct tcp_md5sig {
174 __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN]; /* key (binary) */ 176 __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN]; /* key (binary) */
175}; 177};
176 178
179/* for TCP_COOKIE_TRANSACTIONS (TCPCT) socket option */
180#define TCP_COOKIE_MIN 8 /* 64-bits */
181#define TCP_COOKIE_MAX 16 /* 128-bits */
182#define TCP_COOKIE_PAIR_SIZE (2*TCP_COOKIE_MAX)
183
184/* Flags for both getsockopt and setsockopt */
185#define TCP_COOKIE_IN_ALWAYS (1 << 0) /* Discard SYN without cookie */
186#define TCP_COOKIE_OUT_NEVER (1 << 1) /* Prohibit outgoing cookies,
187 * supercedes everything. */
188
189/* Flags for getsockopt */
190#define TCP_S_DATA_IN (1 << 2) /* Was data received? */
191#define TCP_S_DATA_OUT (1 << 3) /* Was data sent? */
192
193/* TCP_COOKIE_TRANSACTIONS data */
194struct tcp_cookie_transactions {
195 __u16 tcpct_flags; /* see above */
196 __u8 __tcpct_pad1; /* zero */
197 __u8 tcpct_cookie_desired; /* bytes */
198 __u16 tcpct_s_data_desired; /* bytes of variable data */
199 __u16 tcpct_used; /* bytes in value */
200 __u8 tcpct_value[TCP_MSS_DEFAULT];
201};
202
177#ifdef __KERNEL__ 203#ifdef __KERNEL__
178 204
179#include <linux/skbuff.h> 205#include <linux/skbuff.h>
@@ -227,6 +253,11 @@ struct tcp_options_received {
227 u16 mss_clamp; /* Maximal mss, negotiated at connection setup */ 253 u16 mss_clamp; /* Maximal mss, negotiated at connection setup */
228}; 254};
229 255
256static inline void tcp_clear_options(struct tcp_options_received *rx_opt)
257{
258 rx_opt->tstamp_ok = rx_opt->sack_ok = rx_opt->wscale_ok = rx_opt->snd_wscale = 0;
259}
260
230/* This is the max number of SACKS that we'll generate and process. It's safe 261/* This is the max number of SACKS that we'll generate and process. It's safe
231 * to increse this, although since: 262 * to increse this, although since:
232 * size = TCPOLEN_SACK_BASE_ALIGNED (4) + n * TCPOLEN_SACK_PERBLOCK (8) 263 * size = TCPOLEN_SACK_BASE_ALIGNED (4) + n * TCPOLEN_SACK_PERBLOCK (8)
@@ -435,6 +466,6 @@ static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk)
435 return (struct tcp_timewait_sock *)sk; 466 return (struct tcp_timewait_sock *)sk;
436} 467}
437 468
438#endif 469#endif /* __KERNEL__ */
439 470
440#endif /* _LINUX_TCP_H */ 471#endif /* _LINUX_TCP_H */
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 4a99a8e39121..738b65f01e26 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -234,6 +234,7 @@ extern int sysctl_tcp_base_mss;
234extern int sysctl_tcp_workaround_signed_windows; 234extern int sysctl_tcp_workaround_signed_windows;
235extern int sysctl_tcp_slow_start_after_idle; 235extern int sysctl_tcp_slow_start_after_idle;
236extern int sysctl_tcp_max_ssthresh; 236extern int sysctl_tcp_max_ssthresh;
237extern int sysctl_tcp_cookie_size;
237 238
238extern atomic_t tcp_memory_allocated; 239extern atomic_t tcp_memory_allocated;
239extern struct percpu_counter tcp_sockets_allocated; 240extern struct percpu_counter tcp_sockets_allocated;
@@ -340,11 +341,6 @@ static inline void tcp_dec_quickack_mode(struct sock *sk,
340 341
341extern void tcp_enter_quickack_mode(struct sock *sk); 342extern void tcp_enter_quickack_mode(struct sock *sk);
342 343
343static inline void tcp_clear_options(struct tcp_options_received *rx_opt)
344{
345 rx_opt->tstamp_ok = rx_opt->sack_ok = rx_opt->wscale_ok = rx_opt->snd_wscale = 0;
346}
347
348#define TCP_ECN_OK 1 344#define TCP_ECN_OK 1
349#define TCP_ECN_QUEUE_CWR 2 345#define TCP_ECN_QUEUE_CWR 2
350#define TCP_ECN_DEMAND_CWR 4 346#define TCP_ECN_DEMAND_CWR 4