ReactOS  0.4.14-dev-317-g96040ec
tcpdef.h
Go to the documentation of this file.
1 /*
2  * INET An implementation of the TCP/IP protocol suite for the LINUX
3  * operating system. INET is implemented using the BSD Socket
4  * interface as the means of communication with the user level.
5  *
6  * Definitions for the TCP protocol.
7  *
8  * Version: @(#)tcp.h 1.0.2 04/28/93
9  *
10  * Author: Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
11  *
12  * This program is free software; you can redistribute it and/or
13  * modify it under the terms of the GNU General Public License
14  * as published by the Free Software Foundation; either version
15  * 2 of the License, or (at your option) any later version.
16  */
17 
18 #pragma once
19 
20 #include "linux.h"
21 
22 struct tcphdr {
27 //#if defined(__LITTLE_ENDIAN_BITFIELD)
29  doff:4,
30  fin:1,
31  syn:1,
32  rst:1,
33  psh:1,
34  ack:1,
35  urg:1,
36  ece:1,
37  cwr:1;
38 /*#elif defined(__BIG_ENDIAN_BITFIELD)
39  __u16 doff:4,
40  res1:4,
41  cwr:1,
42  ece:1,
43  urg:1,
44  ack:1,
45  psh:1,
46  rst:1,
47  syn:1,
48  fin:1;
49 #else
50 #error "Adjust your <asm/byteorder.h> defines"
51 #endif */
55 };
56 
57 
58 enum {
69  TCP_CLOSING, /* now a valid state */
70 
71  TCP_MAX_STATES /* Leave at the end! */
72 };
73 
74 #define TCP_STATE_MASK 0xF
75 #define TCP_ACTION_FIN (1 << 7)
76 
77 enum {
78  TCPF_ESTABLISHED = (1 << 1),
79  TCPF_SYN_SENT = (1 << 2),
80  TCPF_SYN_RECV = (1 << 3),
81  TCPF_FIN_WAIT1 = (1 << 4),
82  TCPF_FIN_WAIT2 = (1 << 5),
83  TCPF_TIME_WAIT = (1 << 6),
84  TCPF_CLOSE = (1 << 7),
85  TCPF_CLOSE_WAIT = (1 << 8),
86  TCPF_LAST_ACK = (1 << 9),
87  TCPF_LISTEN = (1 << 10),
88  TCPF_CLOSING = (1 << 11)
89 };
90 
91 /*
92  * The union cast uses a gcc extension to avoid aliasing problems
93  * (union is compatible to any of its members)
94  * This means this part of the code is -fstrict-aliasing safe now.
95  */
96 union tcp_word_hdr {
97  struct tcphdr hdr;
99 };
100 
101 #define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3])
102 
103 enum {
104  TCP_FLAG_CWR = 0x00800000, // __constant_htonl(0x00800000),
105  TCP_FLAG_ECE = 0x00400000, //__constant_htonl(0x00400000),
106  TCP_FLAG_URG = 0x00200000, //__constant_htonl(0x00200000),
107  TCP_FLAG_ACK = 0x00100000, //__constant_htonl(0x00100000),
108  TCP_FLAG_PSH = 0x00080000, //__constant_htonl(0x00080000),
109  TCP_FLAG_RST = 0x00040000, //__constant_htonl(0x00040000),
110  TCP_FLAG_SYN = 0x00020000, //__constant_htonl(0x00020000),
111  TCP_FLAG_FIN = 0x00010000, //__constant_htonl(0x00010000),
112  TCP_RESERVED_BITS = 0x0F000000, //__constant_htonl(0x0F000000),
113  TCP_DATA_OFFSET = 0xF0000000, //__constant_htonl(0xF0000000)
114 };
115 
116 /* TCP socket options */
117 #define TCP_NODELAY 1 /* Turn off Nagle's algorithm. */
118 #define TCP_MAXSEG 2 /* Limit MSS */
119 #define TCP_CORK 3 /* Never send partially complete segments */
120 #define TCP_KEEPIDLE 4 /* Start keepalives after this period */
121 #define TCP_KEEPINTVL 5 /* Interval between keepalives */
122 #define TCP_KEEPCNT 6 /* Number of keepalives before death */
123 #define TCP_SYNCNT 7 /* Number of SYN retransmits */
124 #define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */
125 #define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */
126 #define TCP_WINDOW_CLAMP 10 /* Bound advertised window */
127 #define TCP_INFO 11 /* Information about this connection. */
128 #define TCP_QUICKACK 12 /* Block/reenable quick acks */
129 
130 #define TCPI_OPT_TIMESTAMPS 1
131 #define TCPI_OPT_SACK 2
132 #define TCPI_OPT_WSCALE 4
133 #define TCPI_OPT_ECN 8
134 
136 {
138 #define TCPF_CA_Open (1<<TCP_CA_Open)
140 #define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
142 #define TCPF_CA_CWR (1<<TCP_CA_CWR)
144 #define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
146 #define TCPF_CA_Loss (1<<TCP_CA_Loss)
147 };
148 
149 struct tcp_info
150 {
158 
163 
169 
170  /* Times. */
172  __u32 tcpi_last_ack_sent; /* Not remembered, sorry. */
175 
176  /* Metrics. */
185 };
unsigned char __u8
Definition: compat.h:88
__u16 doff
Definition: tcpdef.h:28
__u32 tcpi_snd_mss
Definition: tcpdef.h:161
__u32 tcpi_last_data_sent
Definition: tcpdef.h:171
__u32 tcpi_rtt
Definition: tcpdef.h:179
__u32 tcpi_pmtu
Definition: tcpdef.h:177
__u16 psh
Definition: tcpdef.h:28
__u16 source
Definition: tcpdef.h:23
__u8 tcpi_rcv_wscale
Definition: tcpdef.h:157
__u16 syn
Definition: tcpdef.h:28
__u32 tcpi_sacked
Definition: tcpdef.h:165
__u32 tcpi_snd_cwnd
Definition: tcpdef.h:182
__u8 tcpi_retransmits
Definition: tcpdef.h:153
__u8 tcpi_snd_wscale
Definition: tcpdef.h:157
__u16 window
Definition: tcpdef.h:52
__u32 tcpi_rcv_ssthresh
Definition: tcpdef.h:178
__u16 urg
Definition: tcpdef.h:28
__u8 tcpi_state
Definition: tcpdef.h:151
unsigned short __u16
Definition: compat.h:89
__u8 tcpi_ca_state
Definition: tcpdef.h:152
__u16 fin
Definition: tcpdef.h:28
__u8 tcpi_options
Definition: tcpdef.h:156
__u32 tcpi_rto
Definition: tcpdef.h:159
__u16 urg_ptr
Definition: tcpdef.h:54
__u32 tcpi_rttvar
Definition: tcpdef.h:180
tcp_ca_state
Definition: tcpdef.h:135
unsigned int __u32
Definition: compat.h:90
Definition: tcpdef.h:22
__u16 check
Definition: tcpdef.h:53
__u32 tcpi_lost
Definition: tcpdef.h:166
__u32 tcpi_last_data_recv
Definition: tcpdef.h:173
__u32 tcpi_last_ack_sent
Definition: tcpdef.h:172
__u16 res1
Definition: tcpdef.h:28
__u32 tcpi_reordering
Definition: tcpdef.h:184
__u32 tcpi_rcv_mss
Definition: tcpdef.h:162
__u32 tcpi_advmss
Definition: tcpdef.h:183
__u32 words[5]
Definition: tcpdef.h:98
__u32 tcpi_retrans
Definition: tcpdef.h:167
__u16 rst
Definition: tcpdef.h:28
__u16 dest
Definition: tcpdef.h:24
__u16 ack
Definition: tcpdef.h:28
__u32 seq
Definition: tcpdef.h:25
__u32 tcpi_last_ack_recv
Definition: tcpdef.h:174
__u32 tcpi_snd_ssthresh
Definition: tcpdef.h:181
__u16 ece
Definition: tcpdef.h:28
__u32 tcpi_ato
Definition: tcpdef.h:160
__u32 tcpi_unacked
Definition: tcpdef.h:164
__u8 tcpi_backoff
Definition: tcpdef.h:155
struct tcphdr hdr
Definition: tcpdef.h:97
__u16 cwr
Definition: tcpdef.h:28
__u32 tcpi_fackets
Definition: tcpdef.h:168
__u32 ack_seq
Definition: tcpdef.h:26
__u8 tcpi_probes
Definition: tcpdef.h:154