1dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/*
2dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * Copyright (c) 1982, 1986, 1993
3dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *	The Regents of the University of California.  All rights reserved.
4dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *
5dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * Redistribution and use in source and binary forms, with or without
6dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * modification, are permitted provided that the following conditions
7dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * are met:
8dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * 1. Redistributions of source code must retain the above copyright
9dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *    notice, this list of conditions and the following disclaimer.
10dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * 2. Redistributions in binary form must reproduce the above copyright
11dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *    notice, this list of conditions and the following disclaimer in the
12dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *    documentation and/or other materials provided with the distribution.
13dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * 4. Neither the name of the University nor the names of its contributors
14dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *    may be used to endorse or promote products derived from this software
15dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *    without specific prior written permission.
16dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *
17dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * SUCH DAMAGE.
28dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *
29dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat *	@(#)tcp.h	8.1 (Berkeley) 6/10/93
30dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat */
31dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
32dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#ifndef _NETINET_TCP_H
33dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define _NETINET_TCP_H	1
34dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
35dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#include <features.h>
36dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
37dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/*
38dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * User-settable options (used with setsockopt).
39dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat */
40dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define	TCP_NODELAY	 1	/* Don't delay send to coalesce packets  */
41dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define	TCP_MAXSEG	 2	/* Set maximum segment size  */
42dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_CORK	 3	/* Control sending of partial frames  */
43dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_KEEPIDLE	 4	/* Start keeplives after this period */
44dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_KEEPINTVL	 5	/* Interval between keepalives */
45dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_KEEPCNT	 6	/* Number of keepalives before death */
46dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_SYNCNT	 7	/* Number of SYN retransmits */
47dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_LINGER2	 8	/* Life time of orphaned FIN-WAIT-2 state */
48dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_DEFER_ACCEPT 9	/* Wake up listener only when data arrive */
49dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_WINDOW_CLAMP 10	/* Bound advertised window */
50dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_INFO	 11	/* Information about this connection. */
51dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define	TCP_QUICKACK	 12	/* Bock/reenable quick ACKs.  */
52dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#define TCP_CONGESTION	 13	/* Congestion control algorithm.  */
53dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
54dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#ifdef __USE_MISC
55dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# include <sys/types.h>
56dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
57dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# ifdef __FAVOR_BSD
58dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehattypedef	u_int32_t tcp_seq;
59dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/*
60dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * TCP header.
61dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * Per RFC 793, September, 1981.
62dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat */
63dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatstruct tcphdr
64dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  {
65dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t th_sport;		/* source port */
66dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t th_dport;		/* destination port */
67dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    tcp_seq th_seq;		/* sequence number */
68dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    tcp_seq th_ack;		/* acknowledgement number */
69dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  if __BYTE_ORDER == __LITTLE_ENDIAN
70dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int8_t th_x2:4;		/* (unused) */
71dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int8_t th_off:4;		/* data offset */
72dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  endif
73dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  if __BYTE_ORDER == __BIG_ENDIAN
74dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int8_t th_off:4;		/* data offset */
75dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int8_t th_x2:4;		/* (unused) */
76dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  endif
77dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int8_t th_flags;
78dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  define TH_FIN	0x01
79dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  define TH_SYN	0x02
80dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  define TH_RST	0x04
81dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  define TH_PUSH	0x08
82dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  define TH_ACK	0x10
83dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  define TH_URG	0x20
84dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t th_win;		/* window */
85dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t th_sum;		/* checksum */
86dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t th_urp;		/* urgent pointer */
87dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat};
88dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
89dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# else /* !__FAVOR_BSD */
90dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatstruct tcphdr
91dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  {
92dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t source;
93dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t dest;
94dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int32_t seq;
95dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int32_t ack_seq;
96dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  if __BYTE_ORDER == __LITTLE_ENDIAN
97dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t res1:4;
98dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t doff:4;
99dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t fin:1;
100dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t syn:1;
101dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t rst:1;
102dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t psh:1;
103dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t ack:1;
104dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t urg:1;
105dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t res2:2;
106dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  elif __BYTE_ORDER == __BIG_ENDIAN
107dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t doff:4;
108dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t res1:4;
109dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t res2:2;
110dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t urg:1;
111dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t ack:1;
112dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t psh:1;
113dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t rst:1;
114dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t syn:1;
115dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t fin:1;
116dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  else
117dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#   error "Adjust your <bits/endian.h> defines"
118dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#  endif
119dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t window;
120dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t check;
121dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    u_int16_t urg_ptr;
122dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat};
123dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# endif /* __FAVOR_BSD */
124dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
125dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatenum
126dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat{
127dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_ESTABLISHED = 1,
128dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_SYN_SENT,
129dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_SYN_RECV,
130dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_FIN_WAIT1,
131dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_FIN_WAIT2,
132dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_TIME_WAIT,
133dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_CLOSE,
134dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_CLOSE_WAIT,
135dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_LAST_ACK,
136dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_LISTEN,
137dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_CLOSING   /* now a valid state */
138dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat};
139dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
140dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOPT_EOL		0
141dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOPT_NOP		1
142dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOPT_MAXSEG		2
143dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOLEN_MAXSEG		4
144dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOPT_WINDOW		3
145dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOLEN_WINDOW		3
146dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOPT_SACK_PERMITTED	4		/* Experimental */
147dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOLEN_SACK_PERMITTED	2
148dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOPT_SACK		5		/* Experimental */
149dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOPT_TIMESTAMP	8
150dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOLEN_TIMESTAMP	10
151dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOLEN_TSTAMP_APPA	(TCPOLEN_TIMESTAMP+2) /* appendix A */
152dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
153dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPOPT_TSTAMP_HDR	\
154dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat    (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
155dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
156dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/*
157dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * Default maximum segment size for TCP.
158dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * With an IP MSS of 576, this is 536,
159dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * but 512 is probably more convenient.
160dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
161dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat */
162dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCP_MSS	512
163dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
164dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCP_MAXWIN	65535	/* largest value for (unscaled) window */
165dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
166dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCP_MAX_WINSHIFT	14	/* maximum window shift */
167dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
168dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define SOL_TCP		6	/* TCP level */
169dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
170dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
171dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPI_OPT_TIMESTAMPS	1
172dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPI_OPT_SACK		2
173dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPI_OPT_WSCALE	4
174dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat# define TCPI_OPT_ECN		8
175dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
176dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat/* Values for tcpi_state.  */
177dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatenum tcp_ca_state
178dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat{
179dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_CA_Open = 0,
180dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_CA_Disorder = 1,
181dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_CA_CWR = 2,
182dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_CA_Recovery = 3,
183dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  TCP_CA_Loss = 4
184dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat};
185dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
186dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehatstruct tcp_info
187dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat{
188dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int8_t	tcpi_state;
189dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int8_t	tcpi_ca_state;
190dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int8_t	tcpi_retransmits;
191dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int8_t	tcpi_probes;
192dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int8_t	tcpi_backoff;
193dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int8_t	tcpi_options;
194dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int8_t	tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
195dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
196dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_rto;
197dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_ato;
198dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_snd_mss;
199dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_rcv_mss;
200dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
201dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_unacked;
202dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_sacked;
203dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_lost;
204dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_retrans;
205dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_fackets;
206dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
207dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  /* Times. */
208dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_last_data_sent;
209dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_last_ack_sent;	/* Not remembered, sorry.  */
210dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_last_data_recv;
211dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_last_ack_recv;
212dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
213dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  /* Metrics. */
214dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_pmtu;
215dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_rcv_ssthresh;
216dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_rtt;
217dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_rttvar;
218dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_snd_ssthresh;
219dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_snd_cwnd;
220dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_advmss;
221dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_reordering;
222dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_rcv_rtt;
223dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_rcv_space;
224dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat  u_int32_t	tcpi_total_retrans;
225dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
226dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat};
227dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
228dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#endif /* Misc.  */
229dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat
230dcfb7a77f8709125e97c313cb8ab6ec4d87468f4San Mehat#endif /* netinet/tcp.h */
231