Chameleon

Chameleon Svn Source Tree

Root/tags/2.0/i386/include/netinet/tcp.h

Source at commit 1808 created 12 years 4 months ago.
By blackosx, Revise layout of package installer 'Welcome' file so it looks cleaner. Change the copyright notice to begin from 2009 as seen in the Chameleon 2.0 r431 installer. Should this date be set earlier?
1/*
2 * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. The rights granted to you under the License
10 * may not be used to create, or enable the creation or redistribution of,
11 * unlawful or unlicensed copies of an Apple operating system, or to
12 * circumvent, violate, or enable the circumvention or violation of, any
13 * terms of an Apple operating system software license agreement.
14 *
15 * Please obtain a copy of the License at
16 * http://www.opensource.apple.com/apsl/ and read it before using this file.
17 *
18 * The Original Code and all software distributed under the License are
19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23 * Please see the License for the specific language governing rights and
24 * limitations under the License.
25 *
26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27 */
28/*
29 * Copyright (c) 1982, 1986, 1993
30 *The Regents of the University of California. All rights reserved.
31 *
32 * Redistribution and use in source and binary forms, with or without
33 * modification, are permitted provided that the following conditions
34 * are met:
35 * 1. Redistributions of source code must retain the above copyright
36 * notice, this list of conditions and the following disclaimer.
37 * 2. Redistributions in binary form must reproduce the above copyright
38 * notice, this list of conditions and the following disclaimer in the
39 * documentation and/or other materials provided with the distribution.
40 * 3. All advertising materials mentioning features or use of this software
41 * must display the following acknowledgement:
42 *This product includes software developed by the University of
43 *California, Berkeley and its contributors.
44 * 4. Neither the name of the University nor the names of its contributors
45 * may be used to endorse or promote products derived from this software
46 * without specific prior written permission.
47 *
48 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
49 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
51 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
52 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
53 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
54 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
55 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
56 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
57 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58 * SUCH DAMAGE.
59 *
60 *@(#)tcp.h8.1 (Berkeley) 6/10/93
61 * $FreeBSD: src/sys/netinet/tcp.h,v 1.13.2.3 2001/03/01 22:08:42 jlemon Exp $
62 */
63
64#ifndef _NETINET_TCP_H_
65#define _NETINET_TCP_H_
66#include <sys/appleapiopts.h>
67#include <sys/_types.h>
68#include <machine/endian.h>
69
70#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
71typedef__uint32_t tcp_seq;
72typedef __uint32_t tcp_cc;/* connection count per rfc1644 */
73
74#define tcp6_seqtcp_seq/* for KAME src sync over BSD*'s */
75#define tcp6hdrtcphdr/* for KAME src sync over BSD*'s */
76
77/*
78 * TCP header.
79 * Per RFC 793, September, 1981.
80 */
81struct tcphdr {
82unsigned shortth_sport;/* source port */
83unsigned shortth_dport;/* destination port */
84tcp_seqth_seq;/* sequence number */
85tcp_seqth_ack;/* acknowledgement number */
86#if __DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN
87unsigned intth_x2:4,/* (unused) */
88th_off:4;/* data offset */
89#endif
90#if __DARWIN_BYTE_ORDER == __DARWIN_BIG_ENDIAN
91unsigned intth_off:4,/* data offset */
92th_x2:4;/* (unused) */
93#endif
94unsigned charth_flags;
95#defineTH_FIN0x01
96#defineTH_SYN0x02
97#defineTH_RST0x04
98#defineTH_PUSH0x08
99#defineTH_ACK0x10
100#defineTH_URG0x20
101#defineTH_ECE0x40
102#defineTH_CWR0x80
103#defineTH_FLAGS(TH_FIN|TH_SYN|TH_RST|TH_ACK|TH_URG|TH_ECE|TH_CWR)
104
105unsigned shortth_win;/* window */
106unsigned shortth_sum;/* checksum */
107unsigned shortth_urp;/* urgent pointer */
108};
109
110#defineTCPOPT_EOL0
111#defineTCPOPT_NOP1
112#defineTCPOPT_MAXSEG2
113#define TCPOLEN_MAXSEG4
114#define TCPOPT_WINDOW3
115#define TCPOLEN_WINDOW3
116#define TCPOPT_SACK_PERMITTED4/* Experimental */
117#define TCPOLEN_SACK_PERMITTED2
118#define TCPOPT_SACK5/* Experimental */
119#define TCPOLEN_SACK8/* len of sack block */
120#define TCPOPT_TIMESTAMP8
121#define TCPOLEN_TIMESTAMP10
122#define TCPOLEN_TSTAMP_APPA(TCPOLEN_TIMESTAMP+2) /* appendix A */
123#define TCPOPT_TSTAMP_HDR\
124 (TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_TIMESTAMP<<8|TCPOLEN_TIMESTAMP)
125
126#defineMAX_TCPOPTLEN40/* Absolute maximum TCP options len */
127
128#defineTCPOPT_CC11/* CC options: RFC-1644 */
129#define TCPOPT_CCNEW12
130#define TCPOPT_CCECHO13
131#define TCPOLEN_CC6
132#define TCPOLEN_CC_APPA(TCPOLEN_CC+2)
133#define TCPOPT_CC_HDR(ccopt)\
134 (TCPOPT_NOP<<24|TCPOPT_NOP<<16|(ccopt)<<8|TCPOLEN_CC)
135#defineTCPOPT_SIGNATURE19/* Keyed MD5: RFC 2385 */
136#define TCPOLEN_SIGNATURE18
137
138/* Option definitions */
139#define TCPOPT_SACK_PERMIT_HDR\
140(TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_SACK_PERMITTED<<8|TCPOLEN_SACK_PERMITTED)
141#defineTCPOPT_SACK_HDR(TCPOPT_NOP<<24|TCPOPT_NOP<<16|TCPOPT_SACK<<8)
142/* Miscellaneous constants */
143#defineMAX_SACK_BLKS6/* Max # SACK blocks stored at sender side */
144#defineTCP_MAX_SACK3/* MAX # SACKs sent in any segment */
145
146
147/*
148 * Default maximum segment size for TCP.
149 * With an IP MTU of 576, this is 536,
150 * but 512 is probably more convenient.
151 * This should be defined as MIN(512, IP_MSS - sizeof (struct tcpiphdr)).
152 */
153#defineTCP_MSS512
154
155/*
156 * TCP_MINMSS is defined to be 216 which is fine for the smallest
157 * link MTU (256 bytes, SLIP interface) in the Internet.
158 * However it is very unlikely to come across such low MTU interfaces
159 * these days (anno dato 2004).
160 * Probably it can be set to 512 without ill effects. But we play safe.
161 * See tcp_subr.c tcp_minmss SYSCTL declaration for more comments.
162 * Setting this to "0" disables the minmss check.
163 */
164#defineTCP_MINMSS 216
165
166/*
167 * TCP_MINMSSOVERLOAD is defined to be 1000 which should cover any type
168 * of interactive TCP session.
169 * See tcp_subr.c tcp_minmssoverload SYSCTL declaration and tcp_input.c
170 * for more comments.
171 * Setting this to "0" disables the minmssoverload check.
172 */
173#defineTCP_MINMSSOVERLOAD 1000
174
175/*
176 * Default maximum segment size for TCP6.
177 * With an IP6 MSS of 1280, this is 1220,
178 * but 1024 is probably more convenient. (xxx kazu in doubt)
179 * This should be defined as MIN(1024, IP6_MSS - sizeof (struct tcpip6hdr))
180 */
181#defineTCP6_MSS1024
182
183#defineTCP_MAXWIN65535/* largest value for (unscaled) window */
184#defineTTCP_CLIENT_SND_WND4096/* dflt send window for T/TCP client */
185
186#define TCP_MAX_WINSHIFT14/* maximum window shift */
187
188#define TCP_MAXBURST4 /* maximum segments in a burst */
189
190#define TCP_MAXHLEN(0xf<<2)/* max length of header in bytes */
191#define TCP_MAXOLEN(TCP_MAXHLEN - sizeof(struct tcphdr))
192/* max space left for options */
193#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
194
195/*
196 * User-settable options (used with setsockopt).
197 */
198#defineTCP_NODELAY 0x01 /* don't delay send to coalesce packets */
199#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
200#defineTCP_MAXSEG 0x02 /* set maximum segment size */
201#define TCP_NOPUSH 0x04 /* don't push last block of write */
202#define TCP_NOOPT 0x08 /* don't use TCP options */
203#define TCP_KEEPALIVE 0x10 /* idle time used when SO_KEEPALIVE is enabled */
204#define TCP_CONNECTIONTIMEOUT 0x20 /* connection timeout */
205#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
206
207#endif
208

Archive Download this file

Revision: 1808