1c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/****************************************************************************
2c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************
3c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***
4c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   This header was automatically generated from a Linux kernel header
5c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   of the same name, to make information necessary for userspace to
6c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   call into the kernel available to libc.  It contains only constants,
7c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   structures, and macros generated from the original header, and thus,
8c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   contains no copyrightable information.
9c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***
10c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************
11c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************/
12c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifndef _LINUX_TCP_H
13c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define _LINUX_TCP_H
14c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
15c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <linux/types.h>
16c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#include <asm/byteorder.h>
17c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
18c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct tcphdr {
19c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u16 source;
20c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u16 dest;
21c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 seq;
22c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 ack_seq;
23c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifdef __LITTLE_ENDIAN_BITFIELD
24c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u16 res1:4,
25c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner doff:4,
26c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner fin:1,
27c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner syn:1,
28c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner rst:1,
29c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner psh:1,
30c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ack:1,
31c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner urg:1,
32c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ece:1,
33c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner cwr:1;
34c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#elif defined(__BIG_ENDIAN_BITFIELD)
35c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u16 doff:4,
36c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner res1:4,
37c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner cwr:1,
38c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ece:1,
39c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner urg:1,
40c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ack:1,
41c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner psh:1,
42c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner rst:1,
43c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner syn:1,
44c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner fin:1;
45c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#else
46c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#error "Adjust your <asm/byteorder.h> defines"
47c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif
48c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u16 window;
49c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u16 check;
50c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u16 urg_ptr;
51c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
52c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
53c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerunion tcp_word_hdr {
54c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct tcphdr hdr;
55c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 words[5];
56c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
57c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
58c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3])
59c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
60c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerenum {
61c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_FLAG_CWR = __constant_htonl(0x00800000),
62c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_FLAG_ECE = __constant_htonl(0x00400000),
63c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_FLAG_URG = __constant_htonl(0x00200000),
64c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_FLAG_ACK = __constant_htonl(0x00100000),
65c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_FLAG_PSH = __constant_htonl(0x00080000),
66c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_FLAG_RST = __constant_htonl(0x00040000),
67c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_FLAG_SYN = __constant_htonl(0x00020000),
68c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_FLAG_FIN = __constant_htonl(0x00010000),
69c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_RESERVED_BITS = __constant_htonl(0x0F000000),
70c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_DATA_OFFSET = __constant_htonl(0xF0000000)
71c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
72c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
73c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_NODELAY 1
74c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_MAXSEG 2
75c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_CORK 3
76c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_KEEPIDLE 4
77c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_KEEPINTVL 5
78c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_KEEPCNT 6
79c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_SYNCNT 7
80c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_LINGER2 8
81c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_DEFER_ACCEPT 9
82c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_WINDOW_CLAMP 10
83c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_INFO 11
84c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_QUICKACK 12
85c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCP_CONGESTION 13
86c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
87c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCPI_OPT_TIMESTAMPS 1
88c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCPI_OPT_SACK 2
89c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCPI_OPT_WSCALE 4
90c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCPI_OPT_ECN 8
91c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
92c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerenum tcp_ca_state
93c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner{
94c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_CA_Open = 0,
95c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCPF_CA_Open (1<<TCP_CA_Open)
96c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_CA_Disorder = 1,
97c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
98c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_CA_CWR = 2,
99c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCPF_CA_CWR (1<<TCP_CA_CWR)
100c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_CA_Recovery = 3,
101c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
102c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner TCP_CA_Loss = 4
103c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define TCPF_CA_Loss (1<<TCP_CA_Loss)
104c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
105c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
106c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct tcp_info
107c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner{
108c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u8 tcpi_state;
109c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u8 tcpi_ca_state;
110c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u8 tcpi_retransmits;
111c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u8 tcpi_probes;
112c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u8 tcpi_backoff;
113c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u8 tcpi_options;
114c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
115c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
116c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_rto;
117c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_ato;
118c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_snd_mss;
119c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_rcv_mss;
120c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
121c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_unacked;
122c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_sacked;
123c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_lost;
124c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_retrans;
125c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_fackets;
126c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
127c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_last_data_sent;
128c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_last_ack_sent;
129c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_last_data_recv;
130c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_last_ack_recv;
131c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
132c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_pmtu;
133c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_rcv_ssthresh;
134c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_rtt;
135c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_rttvar;
136c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_snd_ssthresh;
137c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_snd_cwnd;
138c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_advmss;
139c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_reordering;
140c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
141c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_rcv_rtt;
142c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_rcv_space;
143c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
144c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner __u32 tcpi_total_retrans;
145c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
146c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
147c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif
148