Chameleon

Chameleon Svn Source Tree

Root/branches/rewrite/i386/include/netinet/ip.h

Source at commit 1146 created 12 years 11 months ago.
By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing).
1/*
2 * Copyright (c) 2000 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 *@(#)ip.h8.2 (Berkeley) 6/1/94
61 * $FreeBSD: src/sys/netinet/ip.h,v 1.17 1999/12/22 19:13:20 shin Exp $
62 */
63
64#ifndef _NETINET_IP_H_
65#define _NETINET_IP_H_
66#include <sys/appleapiopts.h>
67#include <sys/types.h>/* XXX temporary hack to get u_ types */
68#include <netinet/in.h>
69#include <netinet/in_systm.h>
70
71
72/*
73 * Definitions for internet protocol version 4.
74 * Per RFC 791, September 1981.
75 */
76#defineIPVERSION4
77
78/*
79 * Structure of an internet header, naked of options.
80 */
81struct ip {
82#ifdef _IP_VHL
83u_charip_vhl;/* version << 4 | header length >> 2 */
84#else
85#if BYTE_ORDER == LITTLE_ENDIAN
86u_intip_hl:4,/* header length */
87ip_v:4;/* version */
88#endif
89#if BYTE_ORDER == BIG_ENDIAN
90u_intip_v:4,/* version */
91ip_hl:4;/* header length */
92#endif
93#endif /* not _IP_VHL */
94u_charip_tos;/* type of service */
95u_shortip_len;/* total length */
96u_shortip_id;/* identification */
97u_shortip_off;/* fragment offset field */
98#defineIP_RF 0x8000/* reserved fragment flag */
99#defineIP_DF 0x4000/* dont fragment flag */
100#defineIP_MF 0x2000/* more fragments flag */
101#defineIP_OFFMASK 0x1fff/* mask for fragmenting bits */
102u_charip_ttl;/* time to live */
103u_charip_p;/* protocol */
104u_shortip_sum;/* checksum */
105structin_addr ip_src,ip_dst;/* source and dest address */
106};
107
108#ifdef _IP_VHL
109#defineIP_MAKE_VHL(v, hl)((v) << 4 | (hl))
110#defineIP_VHL_HL(vhl)((vhl) & 0x0f)
111#defineIP_VHL_V(vhl)((vhl) >> 4)
112#defineIP_VHL_BORING0x45
113#endif
114
115#defineIP_MAXPACKET65535/* maximum packet size */
116
117/*
118 * Definitions for IP type of service (ip_tos)
119 */
120#defineIPTOS_LOWDELAY0x10
121#defineIPTOS_THROUGHPUT0x08
122#defineIPTOS_RELIABILITY0x04
123#defineIPTOS_MINCOST0x02
124#if 1
125/* ECN RFC3168 obsoletes RFC2481, and these will be deprecated soon. */
126#defineIPTOS_CE0x01
127#defineIPTOS_ECT0x02
128#endif
129
130/*
131 * ECN (Explicit Congestion Notification) codepoints in RFC3168
132 * mapped to the lower 2 bits of the TOS field.
133 */
134#defineIPTOS_ECN_NOTECT0x00/* not-ECT */
135#defineIPTOS_ECN_ECT10x01/* ECN-capable transport (1) */
136#defineIPTOS_ECN_ECT00x02/* ECN-capable transport (0) */
137#defineIPTOS_ECN_CE0x03/* congestion experienced */
138#defineIPTOS_ECN_MASK0x03/* ECN field mask */
139
140/*
141 * Definitions for IP precedence (also in ip_tos) (hopefully unused)
142 */
143#defineIPTOS_PREC_NETCONTROL0xe0
144#defineIPTOS_PREC_INTERNETCONTROL0xc0
145#defineIPTOS_PREC_CRITIC_ECP0xa0
146#defineIPTOS_PREC_FLASHOVERRIDE0x80
147#defineIPTOS_PREC_FLASH0x60
148#defineIPTOS_PREC_IMMEDIATE0x40
149#defineIPTOS_PREC_PRIORITY0x20
150#defineIPTOS_PREC_ROUTINE0x00
151
152/*
153 * Definitions for options.
154 */
155#defineIPOPT_COPIED(o)((o)&0x80)
156#defineIPOPT_CLASS(o)((o)&0x60)
157#defineIPOPT_NUMBER(o)((o)&0x1f)
158
159#defineIPOPT_CONTROL0x00
160#defineIPOPT_RESERVED10x20
161#defineIPOPT_DEBMEAS0x40
162#defineIPOPT_RESERVED20x60
163
164#defineIPOPT_EOL0/* end of option list */
165#defineIPOPT_NOP1/* no operation */
166
167#defineIPOPT_RR7/* record packet route */
168#defineIPOPT_TS68/* timestamp */
169#defineIPOPT_SECURITY130/* provide s,c,h,tcc */
170#defineIPOPT_LSRR131/* loose source route */
171#defineIPOPT_SATID136/* satnet id */
172#defineIPOPT_SSRR137/* strict source route */
173#defineIPOPT_RA148/* router alert */
174
175/*
176 * Offsets to fields in options other than EOL and NOP.
177 */
178#defineIPOPT_OPTVAL0/* option ID */
179#defineIPOPT_OLEN1/* option length */
180#define IPOPT_OFFSET2/* offset within option */
181#defineIPOPT_MINOFF4/* min value of above */
182
183/*
184 * Time stamp option structure.
185 */
186structip_timestamp {
187u_chaript_code;/* IPOPT_TS */
188u_chaript_len;/* size of structure (variable) */
189u_chaript_ptr;/* index of current entry */
190#if BYTE_ORDER == LITTLE_ENDIAN
191u_intipt_flg:4,/* flags, see below */
192ipt_oflw:4;/* overflow counter */
193#endif
194#if BYTE_ORDER == BIG_ENDIAN
195u_intipt_oflw:4,/* overflow counter */
196ipt_flg:4;/* flags, see below */
197#endif
198union ipt_timestamp {
199n_longipt_time[1];
200structipt_ta {
201struct in_addr ipt_addr;
202n_long ipt_time;
203} ipt_ta[1];
204} ipt_timestamp;
205};
206
207/* flag bits for ipt_flg */
208#defineIPOPT_TS_TSONLY0/* timestamps only */
209#defineIPOPT_TS_TSANDADDR1/* timestamps and addresses */
210#defineIPOPT_TS_PRESPEC3/* specified modules only */
211
212/* bits for security (not byte swapped) */
213#defineIPOPT_SECUR_UNCLASS0x0000
214#defineIPOPT_SECUR_CONFID0xf135
215#defineIPOPT_SECUR_EFTO0x789a
216#defineIPOPT_SECUR_MMMM0xbc4d
217#defineIPOPT_SECUR_RESTR0xaf13
218#defineIPOPT_SECUR_SECRET0xd788
219#defineIPOPT_SECUR_TOPSECRET0x6bc5
220
221/*
222 * Internet implementation parameters.
223 */
224#defineMAXTTL255/* maximum time to live (seconds) */
225#defineIPDEFTTL64/* default ttl, from RFC 1340 */
226#defineIPFRAGTTL60/* time to live for frags, slowhz */
227#defineIPTTLDEC1/* subtracted when forwarding */
228
229#defineIP_MSS576/* default maximum segment size */
230
231#endif
232

Archive Download this file

Revision: 1146