111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _LINUX_TCP_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _LINUX_TCP_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <linux/types.h>
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <asm/byteorder.h>
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tcphdr {
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 source;
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 dest;
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 seq;
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ack_seq;
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __LITTLE_ENDIAN_BITFIELD
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 res1:4,
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert doff:4,
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fin:1,
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert syn:1,
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert rst:1,
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert psh:1,
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ack:1,
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert urg:1,
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ece:1,
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert cwr:1;
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__BIG_ENDIAN_BITFIELD)
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 doff:4,
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert res1:4,
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert cwr:1,
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ece:1,
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert urg:1,
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ack:1,
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert psh:1,
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert rst:1,
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert syn:1,
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert fin:1;
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#error "Adjust your <asm/byteorder.h> defines"
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 window;
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 check;
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u16 urg_ptr;
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertunion tcp_word_hdr {
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert struct tcphdr hdr;
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 words[5];
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3])
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum {
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_FLAG_CWR = __constant_htonl(0x00800000),
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_FLAG_ECE = __constant_htonl(0x00400000),
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_FLAG_URG = __constant_htonl(0x00200000),
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_FLAG_ACK = __constant_htonl(0x00100000),
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_FLAG_PSH = __constant_htonl(0x00080000),
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_FLAG_RST = __constant_htonl(0x00040000),
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_FLAG_SYN = __constant_htonl(0x00020000),
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_FLAG_FIN = __constant_htonl(0x00010000),
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_RESERVED_BITS = __constant_htonl(0x0F000000),
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_DATA_OFFSET = __constant_htonl(0xF0000000)
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_NODELAY 1
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_MAXSEG 2
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_CORK 3
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_KEEPIDLE 4
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_KEEPINTVL 5
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_KEEPCNT 6
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_SYNCNT 7
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_LINGER2 8
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_DEFER_ACCEPT 9
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_WINDOW_CLAMP 10
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_INFO 11
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_QUICKACK 12
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCP_CONGESTION 13
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCPI_OPT_TIMESTAMPS 1
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCPI_OPT_SACK 2
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCPI_OPT_WSCALE 4
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCPI_OPT_ECN 8
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertenum tcp_ca_state
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_CA_Open = 0,
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCPF_CA_Open (1<<TCP_CA_Open)
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_CA_Disorder = 1,
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_CA_CWR = 2,
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCPF_CA_CWR (1<<TCP_CA_CWR)
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_CA_Recovery = 3,
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert TCP_CA_Loss = 4
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define TCPF_CA_Loss (1<<TCP_CA_Loss)
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct tcp_info
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 tcpi_state;
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 tcpi_ca_state;
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 tcpi_retransmits;
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 tcpi_probes;
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 tcpi_backoff;
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 tcpi_options;
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_rto;
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_ato;
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_snd_mss;
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_rcv_mss;
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_unacked;
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_sacked;
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_lost;
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_retrans;
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_fackets;
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_last_data_sent;
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_last_ack_sent;
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_last_data_recv;
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_last_ack_recv;
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_pmtu;
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_rcv_ssthresh;
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_rtt;
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_rttvar;
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_snd_ssthresh;
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_snd_cwnd;
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_advmss;
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_reordering;
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_rcv_rtt;
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_rcv_space;
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 tcpi_total_retrans;
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
148