-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
New file, incorporated from 4.4BSD-Lite.
- Loading branch information
Roland McGrath
committed
Aug 8, 1995
1 parent
3de5ea6
commit 5dedb80
Showing
1 changed file
with
98 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
/* | ||
* Copyright (c) 1982, 1986, 1993 | ||
* The Regents of the University of California. All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms, with or without | ||
* modification, are permitted provided that the following conditions | ||
* are met: | ||
* 1. Redistributions of source code must retain the above copyright | ||
* notice, this list of conditions and the following disclaimer. | ||
* 2. Redistributions in binary form must reproduce the above copyright | ||
* notice, this list of conditions and the following disclaimer in the | ||
* documentation and/or other materials provided with the distribution. | ||
* 3. All advertising materials mentioning features or use of this software | ||
* must display the following acknowledgement: | ||
* This product includes software developed by the University of | ||
* California, Berkeley and its contributors. | ||
* 4. Neither the name of the University nor the names of its contributors | ||
* may be used to endorse or promote products derived from this software | ||
* without specific prior written permission. | ||
* | ||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | ||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | ||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
* SUCH DAMAGE. | ||
* | ||
* @(#)tcp.h 8.1 (Berkeley) 6/10/93 | ||
*/ | ||
|
||
typedef u_long tcp_seq; | ||
/* | ||
* TCP header. | ||
* Per RFC 793, September, 1981. | ||
*/ | ||
struct tcphdr { | ||
u_short th_sport; /* source port */ | ||
u_short th_dport; /* destination port */ | ||
tcp_seq th_seq; /* sequence number */ | ||
tcp_seq th_ack; /* acknowledgement number */ | ||
#if BYTE_ORDER == LITTLE_ENDIAN | ||
u_char th_x2:4, /* (unused) */ | ||
th_off:4; /* data offset */ | ||
#endif | ||
#if BYTE_ORDER == BIG_ENDIAN | ||
u_char th_off:4, /* data offset */ | ||
th_x2:4; /* (unused) */ | ||
#endif | ||
u_char th_flags; | ||
#define TH_FIN 0x01 | ||
#define TH_SYN 0x02 | ||
#define TH_RST 0x04 | ||
#define TH_PUSH 0x08 | ||
#define TH_ACK 0x10 | ||
#define TH_URG 0x20 | ||
u_short th_win; /* window */ | ||
u_short th_sum; /* checksum */ | ||
u_short th_urp; /* urgent pointer */ | ||
}; | ||
|
||
#define TCPOPT_EOL 0 | ||
#define TCPOPT_NOP 1 | ||
#define TCPOPT_MAXSEG 2 | ||
#define TCPOLEN_MAXSEG 4 | ||
#define TCPOPT_WINDOW 3 | ||
#define TCPOLEN_WINDOW 3 | ||
#define TCPOPT_SACK_PERMITTED 4 /* Experimental */ | ||
#define TCPOLEN_SACK_PERMITTED 2 | ||
#define TCPOPT_SACK 5 /* Experimental */ | ||
#define TCPOPT_TIMESTAMP 8 | ||
#define TCPOLEN_TIMESTAMP 10 | ||
#define TCPOLEN_TSTAMP_APPA (TCPOLEN_TIMESTAMP+2) /* appendix A */ | ||
|
||
#define TCPOPT_TSTAMP_HDR \ | ||
(TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP) | ||
|
||
/* | ||
* Default maximum segment size for TCP. | ||
* With an IP MSS of 576, this is 536, | ||
* but 512 is probably more convenient. | ||
* This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)). | ||
*/ | ||
#define TCP_MSS 512 | ||
|
||
#define TCP_MAXWIN 65535 /* largest value for (unscaled) window */ | ||
|
||
#define TCP_MAX_WINSHIFT 14 /* maximum window shift */ | ||
|
||
/* | ||
* User-settable options (used with setsockopt). | ||
*/ | ||
#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */ | ||
#define TCP_MAXSEG 0x02 /* set maximum segment size */ |