Root/
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 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 | /*␉$KAME: ip6.h,v 1.18 2001/03/29 05:34:30 itojun Exp $*/␊ |
29 | ␊ |
30 | /*␊ |
31 | * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.␊ |
32 | * All rights reserved.␊ |
33 | *␊ |
34 | * Redistribution and use in source and binary forms, with or without␊ |
35 | * modification, are permitted provided that the following conditions␊ |
36 | * are met:␊ |
37 | * 1. Redistributions of source code must retain the above copyright␊ |
38 | * notice, this list of conditions and the following disclaimer.␊ |
39 | * 2. Redistributions in binary form must reproduce the above copyright␊ |
40 | * notice, this list of conditions and the following disclaimer in the␊ |
41 | * documentation and/or other materials provided with the distribution.␊ |
42 | * 3. Neither the name of the project nor the names of its contributors␊ |
43 | * may be used to endorse or promote products derived from this software␊ |
44 | * without specific prior written permission.␊ |
45 | *␊ |
46 | * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND␊ |
47 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE␊ |
48 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE␊ |
49 | * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE␊ |
50 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL␊ |
51 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS␊ |
52 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)␊ |
53 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT␊ |
54 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY␊ |
55 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF␊ |
56 | * SUCH DAMAGE.␊ |
57 | */␊ |
58 | ␊ |
59 | /*␊ |
60 | * Copyright (c) 1982, 1986, 1993␊ |
61 | *␉The Regents of the University of California. All rights reserved.␊ |
62 | *␊ |
63 | * Redistribution and use in source and binary forms, with or without␊ |
64 | * modification, are permitted provided that the following conditions␊ |
65 | * are met:␊ |
66 | * 1. Redistributions of source code must retain the above copyright␊ |
67 | * notice, this list of conditions and the following disclaimer.␊ |
68 | * 2. Redistributions in binary form must reproduce the above copyright␊ |
69 | * notice, this list of conditions and the following disclaimer in the␊ |
70 | * documentation and/or other materials provided with the distribution.␊ |
71 | * 3. All advertising materials mentioning features or use of this software␊ |
72 | * must display the following acknowledgement:␊ |
73 | *␉This product includes software developed by the University of␊ |
74 | *␉California, Berkeley and its contributors.␊ |
75 | * 4. Neither the name of the University nor the names of its contributors␊ |
76 | * may be used to endorse or promote products derived from this software␊ |
77 | * without specific prior written permission.␊ |
78 | *␊ |
79 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND␊ |
80 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE␊ |
81 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE␊ |
82 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE␊ |
83 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL␊ |
84 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS␊ |
85 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)␊ |
86 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT␊ |
87 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY␊ |
88 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF␊ |
89 | * SUCH DAMAGE.␊ |
90 | *␊ |
91 | *␉@(#)ip.h␉8.1 (Berkeley) 6/10/93␊ |
92 | */␊ |
93 | ␊ |
94 | #ifndef _NETINET_IP6_H_␊ |
95 | #define _NETINET_IP6_H_␊ |
96 | #include <sys/appleapiopts.h>␊ |
97 | ␊ |
98 | /*␊ |
99 | * Definition for internet protocol version 6.␊ |
100 | * RFC 2460␊ |
101 | */␊ |
102 | ␊ |
103 | struct ip6_hdr {␊ |
104 | ␉union {␊ |
105 | ␉␉struct ip6_hdrctl {␊ |
106 | ␉␉␉u_int32_t ip6_un1_flow;␉/* 20 bits of flow-ID */␊ |
107 | ␉␉␉u_int16_t ip6_un1_plen;␉/* payload length */␊ |
108 | ␉␉␉u_int8_t ip6_un1_nxt;␉/* next header */␊ |
109 | ␉␉␉u_int8_t ip6_un1_hlim;␉/* hop limit */␊ |
110 | ␉␉} ip6_un1;␊ |
111 | ␉␉u_int8_t ip6_un2_vfc;␉/* 4 bits version, top 4 bits class */␊ |
112 | ␉} ip6_ctlun;␊ |
113 | ␉struct in6_addr ip6_src;␉/* source address */␊ |
114 | ␉struct in6_addr ip6_dst;␉/* destination address */␊ |
115 | } __attribute__((__packed__));␊ |
116 | ␊ |
117 | #define ip6_vfc␉␉ip6_ctlun.ip6_un2_vfc␊ |
118 | #define ip6_flow␉ip6_ctlun.ip6_un1.ip6_un1_flow␊ |
119 | #define ip6_plen␉ip6_ctlun.ip6_un1.ip6_un1_plen␊ |
120 | #define ip6_nxt␉␉ip6_ctlun.ip6_un1.ip6_un1_nxt␊ |
121 | #define ip6_hlim␉ip6_ctlun.ip6_un1.ip6_un1_hlim␊ |
122 | #define ip6_hops␉ip6_ctlun.ip6_un1.ip6_un1_hlim␊ |
123 | ␊ |
124 | #define IPV6_VERSION␉␉0x60␊ |
125 | #define IPV6_VERSION_MASK␉0xf0␊ |
126 | ␊ |
127 | #if BYTE_ORDER == BIG_ENDIAN␊ |
128 | #define IPV6_FLOWINFO_MASK␉0x0fffffff␉/* flow info (28 bits) */␊ |
129 | #define IPV6_FLOWLABEL_MASK␉0x000fffff␉/* flow label (20 bits) */␊ |
130 | #else␊ |
131 | #if BYTE_ORDER == LITTLE_ENDIAN␊ |
132 | #define IPV6_FLOWINFO_MASK␉0xffffff0f␉/* flow info (28 bits) */␊ |
133 | #define IPV6_FLOWLABEL_MASK␉0xffff0f00␉/* flow label (20 bits) */␊ |
134 | #endif /* LITTLE_ENDIAN */␊ |
135 | #endif␊ |
136 | #if 1␊ |
137 | /* ECN bits proposed by Sally Floyd */␊ |
138 | #define IP6TOS_CE␉␉0x01␉/* congestion experienced */␊ |
139 | #define IP6TOS_ECT␉␉0x02␉/* ECN-capable transport */␊ |
140 | #endif␊ |
141 | ␊ |
142 | /*␊ |
143 | * Extension Headers␊ |
144 | */␊ |
145 | ␊ |
146 | struct␉ip6_ext {␊ |
147 | ␉u_int8_t ip6e_nxt;␊ |
148 | ␉u_int8_t ip6e_len;␊ |
149 | } __attribute__((__packed__));␊ |
150 | ␊ |
151 | /* Hop-by-Hop options header */␊ |
152 | /* XXX should we pad it to force alignment on an 8-byte boundary? */␊ |
153 | struct ip6_hbh {␊ |
154 | ␉u_int8_t ip6h_nxt;␉/* next header */␊ |
155 | ␉u_int8_t ip6h_len;␉/* length in units of 8 octets */␊ |
156 | ␉/* followed by options */␊ |
157 | } __attribute__((__packed__));␊ |
158 | ␊ |
159 | /* Destination options header */␊ |
160 | /* XXX should we pad it to force alignment on an 8-byte boundary? */␊ |
161 | struct ip6_dest {␊ |
162 | ␉u_int8_t ip6d_nxt;␉/* next header */␊ |
163 | ␉u_int8_t ip6d_len;␉/* length in units of 8 octets */␊ |
164 | ␉/* followed by options */␊ |
165 | } __attribute__((__packed__));␊ |
166 | ␊ |
167 | /* Option types and related macros */␊ |
168 | #define IP6OPT_PAD1␉␉0x00␉/* 00 0 00000 */␊ |
169 | #define IP6OPT_PADN␉␉0x01␉/* 00 0 00001 */␊ |
170 | #define IP6OPT_JUMBO␉␉0xC2␉/* 11 0 00010 = 194 */␊ |
171 | #define IP6OPT_NSAP_ADDR␉0xC3␉/* 11 0 00011 */␊ |
172 | #define IP6OPT_TUNNEL_LIMIT␉0x04␉/* 00 0 00100 */␊ |
173 | #define IP6OPT_RTALERT␉␉0x05␉/* 00 0 00101 (KAME definition) */␊ |
174 | ␊ |
175 | #define IP6OPT_RTALERT_LEN␉4␊ |
176 | #define IP6OPT_RTALERT_MLD␉0␉/* Datagram contains an MLD message */␊ |
177 | #define IP6OPT_RTALERT_RSVP␉1␉/* Datagram contains an RSVP message */␊ |
178 | #define IP6OPT_RTALERT_ACTNET␉2 ␉/* contains an Active Networks msg */␊ |
179 | #define IP6OPT_MINLEN␉␉2␊ |
180 | ␊ |
181 | #define IP6OPT_BINDING_UPDATE␉0xc6␉/* 11 0 00110 */␊ |
182 | #define IP6OPT_BINDING_ACK␉0x07␉/* 00 0 00111 */␊ |
183 | #define IP6OPT_BINDING_REQ␉0x08␉/* 00 0 01000 */␊ |
184 | #define IP6OPT_HOME_ADDRESS␉0xc9␉/* 11 0 01001 */␊ |
185 | #define IP6OPT_EID␉␉0x8a␉/* 10 0 01010 */␊ |
186 | ␊ |
187 | #define IP6OPT_TYPE(o)␉␉((o) & 0xC0)␊ |
188 | #define IP6OPT_TYPE_SKIP␉0x00␊ |
189 | #define IP6OPT_TYPE_DISCARD␉0x40␊ |
190 | #define IP6OPT_TYPE_FORCEICMP␉0x80␊ |
191 | #define IP6OPT_TYPE_ICMP␉0xC0␊ |
192 | ␊ |
193 | #define IP6OPT_MUTABLE␉␉0x20␊ |
194 | ␊ |
195 | #define IP6OPT_JUMBO_LEN␉6␊ |
196 | ␊ |
197 | /* Routing header */␊ |
198 | struct ip6_rthdr {␊ |
199 | ␉u_int8_t ip6r_nxt;␉/* next header */␊ |
200 | ␉u_int8_t ip6r_len;␉/* length in units of 8 octets */␊ |
201 | ␉u_int8_t ip6r_type;␉/* routing type */␊ |
202 | ␉u_int8_t ip6r_segleft;␉/* segments left */␊ |
203 | ␉/* followed by routing type specific data */␊ |
204 | } __attribute__((__packed__));␊ |
205 | ␊ |
206 | /* Type 0 Routing header */␊ |
207 | struct ip6_rthdr0 {␊ |
208 | ␉u_int8_t ip6r0_nxt;␉␉/* next header */␊ |
209 | ␉u_int8_t ip6r0_len;␉␉/* length in units of 8 octets */␊ |
210 | ␉u_int8_t ip6r0_type;␉␉/* always zero */␊ |
211 | ␉u_int8_t ip6r0_segleft;␉/* segments left */␊ |
212 | ␉u_int8_t ip6r0_reserved;␉/* reserved field */␊ |
213 | ␉u_int8_t ip6r0_slmap[3];␉/* strict/loose bit map */␊ |
214 | ␉struct in6_addr ip6r0_addr[1];␉/* up to 23 addresses */␊ |
215 | } __attribute__((__packed__));␊ |
216 | ␊ |
217 | /* Fragment header */␊ |
218 | struct ip6_frag {␊ |
219 | ␉u_int8_t ip6f_nxt;␉␉/* next header */␊ |
220 | ␉u_int8_t ip6f_reserved;␉/* reserved field */␊ |
221 | ␉u_int16_t ip6f_offlg;␉␉/* offset, reserved, and flag */␊ |
222 | ␉u_int32_t ip6f_ident;␉␉/* identification */␊ |
223 | } __attribute__((__packed__));␊ |
224 | ␊ |
225 | #if BYTE_ORDER == BIG_ENDIAN␊ |
226 | #define IP6F_OFF_MASK␉␉0xfff8␉/* mask out offset from _offlg */␊ |
227 | #define IP6F_RESERVED_MASK␉0x0006␉/* reserved bits in ip6f_offlg */␊ |
228 | #define IP6F_MORE_FRAG␉␉0x0001␉/* more-fragments flag */␊ |
229 | #else /* BYTE_ORDER == LITTLE_ENDIAN */␊ |
230 | #define IP6F_OFF_MASK␉␉0xf8ff␉/* mask out offset from _offlg */␊ |
231 | #define IP6F_RESERVED_MASK␉0x0600␉/* reserved bits in ip6f_offlg */␊ |
232 | #define IP6F_MORE_FRAG␉␉0x0100␉/* more-fragments flag */␊ |
233 | #endif /* BYTE_ORDER == LITTLE_ENDIAN */␊ |
234 | ␊ |
235 | /*␊ |
236 | * Internet implementation parameters.␊ |
237 | */␊ |
238 | #define IPV6_MAXHLIM␉255␉/* maximun hoplimit */␊ |
239 | #define IPV6_DEFHLIM␉64␉/* default hlim */␊ |
240 | #define IPV6_FRAGTTL␉120␉/* ttl for fragment packets, in slowtimo tick */␊ |
241 | #define IPV6_HLIMDEC␉1␉/* subtracted when forwaeding */␊ |
242 | ␊ |
243 | #define IPV6_MMTU␉1280␉/* minimal MTU and reassembly. 1024 + 256 */␊ |
244 | #define IPV6_MAXPACKET␉65535␉/* ip6 max packet size without Jumbo payload*/␊ |
245 | ␊ |
246 | #endif /* !_NETINET_IP6_H_ */␊ |
247 |