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