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,2008 Apple 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: icmp6.h,v 1.46 2001/04/27 15:09:48 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_icmp.h␉8.1 (Berkeley) 6/10/93␊ |
92 | */␊ |
93 | ␊ |
94 | #ifndef _NETINET_ICMP6_H_␊ |
95 | #define _NETINET_ICMP6_H_␊ |
96 | #include <sys/appleapiopts.h>␊ |
97 | ␊ |
98 | #define ICMPV6_PLD_MAXLEN␉1232␉/* IPV6_MMTU - sizeof(struct ip6_hdr)␊ |
99 | ␉␉␉␉␉ - sizeof(struct icmp6_hdr) */␊ |
100 | ␊ |
101 | struct icmp6_hdr {␊ |
102 | ␉u_int8_t␉icmp6_type;␉/* type field */␊ |
103 | ␉u_int8_t␉icmp6_code;␉/* code field */␊ |
104 | ␉u_int16_t␉icmp6_cksum;␉/* checksum field */␊ |
105 | ␉union {␊ |
106 | ␉␉u_int32_t␉icmp6_un_data32[1]; /* type-specific field */␊ |
107 | ␉␉u_int16_t␉icmp6_un_data16[2]; /* type-specific field */␊ |
108 | ␉␉u_int8_t␉icmp6_un_data8[4]; /* type-specific field */␊ |
109 | ␉} icmp6_dataun;␊ |
110 | };␊ |
111 | ␊ |
112 | #define icmp6_data32␉icmp6_dataun.icmp6_un_data32␊ |
113 | #define icmp6_data16␉icmp6_dataun.icmp6_un_data16␊ |
114 | #define icmp6_data8␉icmp6_dataun.icmp6_un_data8␊ |
115 | #define icmp6_pptr␉icmp6_data32[0]␉␉/* parameter prob */␊ |
116 | #define icmp6_mtu␉icmp6_data32[0]␉␉/* packet too big */␊ |
117 | #define icmp6_id␉icmp6_data16[0]␉␉/* echo request/reply */␊ |
118 | #define icmp6_seq␉icmp6_data16[1]␉␉/* echo request/reply */␊ |
119 | #define icmp6_maxdelay␉icmp6_data16[0]␉␉/* mcast group membership */␊ |
120 | ␊ |
121 | #define ICMP6_DST_UNREACH␉␉1␉/* dest unreachable, codes: */␊ |
122 | #define ICMP6_PACKET_TOO_BIG␉␉2␉/* packet too big */␊ |
123 | #define ICMP6_TIME_EXCEEDED␉␉3␉/* time exceeded, code: */␊ |
124 | #define ICMP6_PARAM_PROB␉␉4␉/* ip6 header bad */␊ |
125 | ␊ |
126 | #define ICMP6_ECHO_REQUEST␉␉128␉/* echo service */␊ |
127 | #define ICMP6_ECHO_REPLY␉␉129␉/* echo reply */␊ |
128 | #define ICMP6_MEMBERSHIP_QUERY␉␉130␉/* group membership query */␊ |
129 | #define MLD6_LISTENER_QUERY␉␉130 ␉/* multicast listener query */␊ |
130 | #define ICMP6_MEMBERSHIP_REPORT␉␉131␉/* group membership report */␊ |
131 | #define MLD6_LISTENER_REPORT␉␉131␉/* multicast listener report */␊ |
132 | #define ICMP6_MEMBERSHIP_REDUCTION␉132␉/* group membership termination */␊ |
133 | #define MLD6_LISTENER_DONE␉␉132␉/* multicast listener done */␊ |
134 | ␊ |
135 | #define␉MLD_LISTENER_QUERY␉␉MLD6_LISTENER_QUERY␊ |
136 | #define␉MLD_LISTENER_REPORT␉␉MLD6_LISTENER_REPORT␊ |
137 | #define␉MLD_LISTENER_DONE␉␉MLD6_LISTENER_DONE␊ |
138 | ␊ |
139 | #define ND_ROUTER_SOLICIT␉␉133␉/* router solicitation */␊ |
140 | #define ND_ROUTER_ADVERT␉␉134␉/* router advertisment */␊ |
141 | #define ND_NEIGHBOR_SOLICIT␉␉135␉/* neighbor solicitation */␊ |
142 | #define ND_NEIGHBOR_ADVERT␉␉136␉/* neighbor advertisment */␊ |
143 | #define ND_REDIRECT␉␉␉137␉/* redirect */␊ |
144 | ␊ |
145 | #define ICMP6_ROUTER_RENUMBERING␉138␉/* router renumbering */␊ |
146 | ␊ |
147 | #define ICMP6_WRUREQUEST␉␉139␉/* who are you request */␊ |
148 | #define ICMP6_WRUREPLY␉␉␉140␉/* who are you reply */␊ |
149 | #define ICMP6_FQDN_QUERY␉␉139␉/* FQDN query */␊ |
150 | #define ICMP6_FQDN_REPLY␉␉140␉/* FQDN reply */␊ |
151 | #define ICMP6_NI_QUERY␉␉␉139␉/* node information request */␊ |
152 | #define ICMP6_NI_REPLY␉␉␉140␉/* node information reply */␊ |
153 | ␊ |
154 | /* The definitions below are experimental. TBA */␊ |
155 | #define MLD6_MTRACE_RESP␉␉200␉/* mtrace response(to sender) */␊ |
156 | #define MLD6_MTRACE␉␉␉201␉/* mtrace messages */␊ |
157 | ␊ |
158 | #define␉MLD_MTRACE_RESP␉␉␉MLD6_MTRACE_RESP␊ |
159 | #define␉MLD_MTRACE␉␉␉MLD6_MTRACE␊ |
160 | ␊ |
161 | #define ICMP6_HADISCOV_REQUEST␉␉202␉/* XXX To be defined */␊ |
162 | #define ICMP6_HADISCOV_REPLY␉␉203␉/* XXX To be defined */␊ |
163 | ␊ |
164 | #define ICMP6_MAXTYPE␉␉␉203␊ |
165 | ␊ |
166 | #define ICMP6_DST_UNREACH_NOROUTE␉0␉/* no route to destination */␊ |
167 | #define ICMP6_DST_UNREACH_ADMIN␉ ␉1␉/* administratively prohibited */␊ |
168 | #define ICMP6_DST_UNREACH_NOTNEIGHBOR␉2␉/* not a neighbor(obsolete) */␊ |
169 | #define ICMP6_DST_UNREACH_BEYONDSCOPE␉2␉/* beyond scope of source address */␊ |
170 | #define ICMP6_DST_UNREACH_ADDR␉␉3␉/* address unreachable */␊ |
171 | #define ICMP6_DST_UNREACH_NOPORT␉4␉/* port unreachable */␊ |
172 | ␊ |
173 | #define ICMP6_TIME_EXCEED_TRANSIT ␉0␉/* ttl==0 in transit */␊ |
174 | #define ICMP6_TIME_EXCEED_REASSEMBLY␉1␉/* ttl==0 in reass */␊ |
175 | ␊ |
176 | #define ICMP6_PARAMPROB_HEADER ␉ ␉0␉/* erroneous header field */␊ |
177 | #define ICMP6_PARAMPROB_NEXTHEADER␉1␉/* unrecognized next header */␊ |
178 | #define ICMP6_PARAMPROB_OPTION␉␉2␉/* unrecognized option */␊ |
179 | ␊ |
180 | #define ICMP6_INFOMSG_MASK␉␉0x80␉/* all informational messages */␊ |
181 | ␊ |
182 | #define ICMP6_NI_SUBJ_IPV6␉0␉/* Query Subject is an IPv6 address */␊ |
183 | #define ICMP6_NI_SUBJ_FQDN␉1␉/* Query Subject is a Domain name */␊ |
184 | #define ICMP6_NI_SUBJ_IPV4␉2␉/* Query Subject is an IPv4 address */␊ |
185 | ␊ |
186 | #define ICMP6_NI_SUCCESS␉0␉/* node information successful reply */␊ |
187 | #define ICMP6_NI_REFUSED␉1␉/* node information request is refused */␊ |
188 | #define ICMP6_NI_UNKNOWN␉2␉/* unknown Qtype */␊ |
189 | ␊ |
190 | #define ICMP6_ROUTER_RENUMBERING_COMMAND 0␉/* rr command */␊ |
191 | #define ICMP6_ROUTER_RENUMBERING_RESULT 1␉/* rr result */␊ |
192 | #define ICMP6_ROUTER_RENUMBERING_SEQNUM_RESET 255␉/* rr seq num reset */␊ |
193 | ␊ |
194 | /* Used in kernel only */␊ |
195 | #define ND_REDIRECT_ONLINK␉0␉/* redirect to an on-link node */␊ |
196 | #define ND_REDIRECT_ROUTER␉1␉/* redirect to a better router */␊ |
197 | ␊ |
198 | /*␊ |
199 | * Multicast Listener Discovery␊ |
200 | */␊ |
201 | struct mld6_hdr {␊ |
202 | ␉struct icmp6_hdr␉mld6_hdr;␊ |
203 | ␉struct in6_addr␉␉mld6_addr; /* multicast address */␊ |
204 | };␊ |
205 | ␊ |
206 | #define mld6_type␉mld6_hdr.icmp6_type␊ |
207 | #define mld6_code␉mld6_hdr.icmp6_code␊ |
208 | #define mld6_cksum␉mld6_hdr.icmp6_cksum␊ |
209 | #define mld6_maxdelay␉mld6_hdr.icmp6_data16[0]␊ |
210 | #define mld6_reserved␉mld6_hdr.icmp6_data16[1]␊ |
211 | ␊ |
212 | /*␊ |
213 | * Neighbor Discovery␊ |
214 | */␊ |
215 | ␊ |
216 | struct nd_router_solicit {␉/* router solicitation */␊ |
217 | ␉struct icmp6_hdr ␉nd_rs_hdr;␊ |
218 | ␉/* could be followed by options */␊ |
219 | };␊ |
220 | ␊ |
221 | #define nd_rs_type␉nd_rs_hdr.icmp6_type␊ |
222 | #define nd_rs_code␉nd_rs_hdr.icmp6_code␊ |
223 | #define nd_rs_cksum␉nd_rs_hdr.icmp6_cksum␊ |
224 | #define nd_rs_reserved␉nd_rs_hdr.icmp6_data32[0]␊ |
225 | ␊ |
226 | struct nd_router_advert {␉/* router advertisement */␊ |
227 | ␉struct icmp6_hdr␉nd_ra_hdr;␊ |
228 | ␉u_int32_t␉␉nd_ra_reachable;␉/* reachable time */␊ |
229 | ␉u_int32_t␉␉nd_ra_retransmit;␉/* retransmit timer */␊ |
230 | ␉/* could be followed by options */␊ |
231 | };␊ |
232 | ␊ |
233 | #define nd_ra_type␉␉nd_ra_hdr.icmp6_type␊ |
234 | #define nd_ra_code␉␉nd_ra_hdr.icmp6_code␊ |
235 | #define nd_ra_cksum␉␉nd_ra_hdr.icmp6_cksum␊ |
236 | #define nd_ra_curhoplimit␉nd_ra_hdr.icmp6_data8[0]␊ |
237 | #define nd_ra_flags_reserved␉nd_ra_hdr.icmp6_data8[1]␊ |
238 | #define ND_RA_FLAG_MANAGED␉0x80␊ |
239 | #define ND_RA_FLAG_OTHER␉0x40␊ |
240 | #define ND_RA_FLAG_HA␉␉0x20␊ |
241 | ␊ |
242 | /*␊ |
243 | * Router preference values based on draft-draves-ipngwg-router-selection-01.␊ |
244 | * These are non-standard definitions.␊ |
245 | */␊ |
246 | #define ND_RA_FLAG_RTPREF_MASK␉0x18 /* 00011000 */␊ |
247 | ␊ |
248 | #define ND_RA_FLAG_RTPREF_HIGH␉0x08 /* 00001000 */␊ |
249 | #define ND_RA_FLAG_RTPREF_MEDIUM␉0x00 /* 00000000 */␊ |
250 | #define ND_RA_FLAG_RTPREF_LOW␉0x18 /* 00011000 */␊ |
251 | #define ND_RA_FLAG_RTPREF_RSV␉0x10 /* 00010000 */␊ |
252 | ␊ |
253 | #define nd_ra_router_lifetime␉nd_ra_hdr.icmp6_data16[1]␊ |
254 | ␊ |
255 | struct nd_neighbor_solicit {␉/* neighbor solicitation */␊ |
256 | ␉struct icmp6_hdr␉nd_ns_hdr;␊ |
257 | ␉struct in6_addr␉␉nd_ns_target;␉/*target address */␊ |
258 | ␉/* could be followed by options */␊ |
259 | };␊ |
260 | ␊ |
261 | #define nd_ns_type␉␉nd_ns_hdr.icmp6_type␊ |
262 | #define nd_ns_code␉␉nd_ns_hdr.icmp6_code␊ |
263 | #define nd_ns_cksum␉␉nd_ns_hdr.icmp6_cksum␊ |
264 | #define nd_ns_reserved␉␉nd_ns_hdr.icmp6_data32[0]␊ |
265 | ␊ |
266 | struct nd_neighbor_advert {␉/* neighbor advertisement */␊ |
267 | ␉struct icmp6_hdr␉nd_na_hdr;␊ |
268 | ␉struct in6_addr␉␉nd_na_target;␉/* target address */␊ |
269 | ␉/* could be followed by options */␊ |
270 | };␊ |
271 | ␊ |
272 | #define nd_na_type␉␉nd_na_hdr.icmp6_type␊ |
273 | #define nd_na_code␉␉nd_na_hdr.icmp6_code␊ |
274 | #define nd_na_cksum␉␉nd_na_hdr.icmp6_cksum␊ |
275 | #define nd_na_flags_reserved␉nd_na_hdr.icmp6_data32[0]␊ |
276 | #if BYTE_ORDER == BIG_ENDIAN␊ |
277 | #define ND_NA_FLAG_ROUTER␉␉0x80000000␊ |
278 | #define ND_NA_FLAG_SOLICITED␉␉0x40000000␊ |
279 | #define ND_NA_FLAG_OVERRIDE␉␉0x20000000␊ |
280 | #else␊ |
281 | #if BYTE_ORDER == LITTLE_ENDIAN␊ |
282 | #define ND_NA_FLAG_ROUTER␉␉0x80␊ |
283 | #define ND_NA_FLAG_SOLICITED␉␉0x40␊ |
284 | #define ND_NA_FLAG_OVERRIDE␉␉0x20␊ |
285 | #endif␊ |
286 | #endif␊ |
287 | ␊ |
288 | struct nd_redirect {␉␉/* redirect */␊ |
289 | ␉struct icmp6_hdr␉nd_rd_hdr;␊ |
290 | ␉struct in6_addr␉␉nd_rd_target;␉/* target address */␊ |
291 | ␉struct in6_addr␉␉nd_rd_dst;␉/* destination address */␊ |
292 | ␉/* could be followed by options */␊ |
293 | };␊ |
294 | ␊ |
295 | #define nd_rd_type␉␉nd_rd_hdr.icmp6_type␊ |
296 | #define nd_rd_code␉␉nd_rd_hdr.icmp6_code␊ |
297 | #define nd_rd_cksum␉␉nd_rd_hdr.icmp6_cksum␊ |
298 | #define nd_rd_reserved␉␉nd_rd_hdr.icmp6_data32[0]␊ |
299 | ␊ |
300 | struct nd_opt_hdr {␉␉/* Neighbor discovery option header */␊ |
301 | ␉u_int8_t␉nd_opt_type;␊ |
302 | ␉u_int8_t␉nd_opt_len;␊ |
303 | ␉/* followed by option specific data*/␊ |
304 | };␊ |
305 | ␊ |
306 | #define ND_OPT_SOURCE_LINKADDR␉␉1␊ |
307 | #define ND_OPT_TARGET_LINKADDR␉␉2␊ |
308 | #define ND_OPT_PREFIX_INFORMATION␉3␊ |
309 | #define ND_OPT_REDIRECTED_HEADER␉4␊ |
310 | #define ND_OPT_MTU␉␉␉5␊ |
311 | ␊ |
312 | #define ND_OPT_ROUTE_INFO␉␉200␉/* draft-ietf-ipngwg-router-preference, not officially assigned yet */␊ |
313 | ␊ |
314 | struct nd_opt_prefix_info {␉/* prefix information */␊ |
315 | ␉u_int8_t␉nd_opt_pi_type;␊ |
316 | ␉u_int8_t␉nd_opt_pi_len;␊ |
317 | ␉u_int8_t␉nd_opt_pi_prefix_len;␊ |
318 | ␉u_int8_t␉nd_opt_pi_flags_reserved;␊ |
319 | ␉u_int32_t␉nd_opt_pi_valid_time;␊ |
320 | ␉u_int32_t␉nd_opt_pi_preferred_time;␊ |
321 | ␉u_int32_t␉nd_opt_pi_reserved2;␊ |
322 | ␉struct in6_addr␉nd_opt_pi_prefix;␊ |
323 | };␊ |
324 | ␊ |
325 | #define ND_OPT_PI_FLAG_ONLINK␉␉0x80␊ |
326 | #define ND_OPT_PI_FLAG_AUTO␉␉0x40␊ |
327 | ␊ |
328 | struct nd_opt_rd_hdr {␉␉/* redirected header */␊ |
329 | ␉u_int8_t␉nd_opt_rh_type;␊ |
330 | ␉u_int8_t␉nd_opt_rh_len;␊ |
331 | ␉u_int16_t␉nd_opt_rh_reserved1;␊ |
332 | ␉u_int32_t␉nd_opt_rh_reserved2;␊ |
333 | ␉/* followed by IP header and data */␊ |
334 | };␊ |
335 | ␊ |
336 | struct nd_opt_mtu {␉␉/* MTU option */␊ |
337 | ␉u_int8_t␉nd_opt_mtu_type;␊ |
338 | ␉u_int8_t␉nd_opt_mtu_len;␊ |
339 | ␉u_int16_t␉nd_opt_mtu_reserved;␊ |
340 | ␉u_int32_t␉nd_opt_mtu_mtu;␊ |
341 | };␊ |
342 | ␊ |
343 | struct nd_opt_route_info {␉/* route info */␊ |
344 | ␉u_int8_t␉nd_opt_rti_type;␊ |
345 | ␉u_int8_t␉nd_opt_rti_len;␊ |
346 | ␉u_int8_t␉nd_opt_rti_prefixlen;␊ |
347 | ␉u_int8_t␉nd_opt_rti_flags;␊ |
348 | ␉u_int32_t␉nd_opt_rti_lifetime;␊ |
349 | ␉/* followed by prefix */␊ |
350 | };␊ |
351 | ␊ |
352 | /*␊ |
353 | * icmp6 namelookup␊ |
354 | */␊ |
355 | ␊ |
356 | struct icmp6_namelookup {␊ |
357 | ␉struct icmp6_hdr ␉icmp6_nl_hdr;␊ |
358 | ␉u_int8_t␉icmp6_nl_nonce[8];␊ |
359 | ␉int32_t␉␉icmp6_nl_ttl;␊ |
360 | #if 0␊ |
361 | ␉u_int8_t␉icmp6_nl_len;␊ |
362 | ␉u_int8_t␉icmp6_nl_name[3];␊ |
363 | #endif␊ |
364 | ␉/* could be followed by options */␊ |
365 | };␊ |
366 | ␊ |
367 | /*␊ |
368 | * icmp6 node information␊ |
369 | */␊ |
370 | struct icmp6_nodeinfo {␊ |
371 | ␉struct icmp6_hdr icmp6_ni_hdr;␊ |
372 | ␉u_int8_t icmp6_ni_nonce[8];␊ |
373 | ␉/* could be followed by reply data */␊ |
374 | };␊ |
375 | ␊ |
376 | #define ni_type␉␉icmp6_ni_hdr.icmp6_type␊ |
377 | #define ni_code␉␉icmp6_ni_hdr.icmp6_code␊ |
378 | #define ni_cksum␉icmp6_ni_hdr.icmp6_cksum␊ |
379 | #define ni_qtype␉icmp6_ni_hdr.icmp6_data16[0]␊ |
380 | #define ni_flags␉icmp6_ni_hdr.icmp6_data16[1]␊ |
381 | ␊ |
382 | #define NI_QTYPE_NOOP␉␉0 /* NOOP */␊ |
383 | #define NI_QTYPE_SUPTYPES␉1 /* Supported Qtypes */␊ |
384 | #define NI_QTYPE_FQDN␉␉2 /* FQDN (draft 04) */␊ |
385 | #define NI_QTYPE_DNSNAME␉2 /* DNS Name */␊ |
386 | #define NI_QTYPE_NODEADDR␉3 /* Node Addresses */␊ |
387 | #define NI_QTYPE_IPV4ADDR␉4 /* IPv4 Addresses */␊ |
388 | ␊ |
389 | #if BYTE_ORDER == BIG_ENDIAN␊ |
390 | #define NI_SUPTYPE_FLAG_COMPRESS␉0x1␊ |
391 | #define NI_FQDN_FLAG_VALIDTTL␉␉0x1␊ |
392 | #elif BYTE_ORDER == LITTLE_ENDIAN␊ |
393 | #define NI_SUPTYPE_FLAG_COMPRESS␉0x0100␊ |
394 | #define NI_FQDN_FLAG_VALIDTTL␉␉0x0100␊ |
395 | #endif␊ |
396 | ␊ |
397 | #ifdef NAME_LOOKUPS_04␊ |
398 | #if BYTE_ORDER == BIG_ENDIAN␊ |
399 | #define NI_NODEADDR_FLAG_LINKLOCAL␉0x1␊ |
400 | #define NI_NODEADDR_FLAG_SITELOCAL␉0x2␊ |
401 | #define NI_NODEADDR_FLAG_GLOBAL␉␉0x4␊ |
402 | #define NI_NODEADDR_FLAG_ALL␉␉0x8␊ |
403 | #define NI_NODEADDR_FLAG_TRUNCATE␉0x10␊ |
404 | #define NI_NODEADDR_FLAG_ANYCAST␉0x20 /* just experimental. not in spec */␊ |
405 | #elif BYTE_ORDER == LITTLE_ENDIAN␊ |
406 | #define NI_NODEADDR_FLAG_LINKLOCAL␉0x0100␊ |
407 | #define NI_NODEADDR_FLAG_SITELOCAL␉0x0200␊ |
408 | #define NI_NODEADDR_FLAG_GLOBAL␉␉0x0400␊ |
409 | #define NI_NODEADDR_FLAG_ALL␉␉0x0800␊ |
410 | #define NI_NODEADDR_FLAG_TRUNCATE␉0x1000␊ |
411 | #define NI_NODEADDR_FLAG_ANYCAST␉0x2000 /* just experimental. not in spec */␊ |
412 | #endif␊ |
413 | #else /* draft-ietf-ipngwg-icmp-name-lookups-05 (and later?) */␊ |
414 | #if BYTE_ORDER == BIG_ENDIAN␊ |
415 | #define NI_NODEADDR_FLAG_TRUNCATE␉0x1␊ |
416 | #define NI_NODEADDR_FLAG_ALL␉␉0x2␊ |
417 | #define NI_NODEADDR_FLAG_COMPAT␉␉0x4␊ |
418 | #define NI_NODEADDR_FLAG_LINKLOCAL␉0x8␊ |
419 | #define NI_NODEADDR_FLAG_SITELOCAL␉0x10␊ |
420 | #define NI_NODEADDR_FLAG_GLOBAL␉␉0x20␊ |
421 | #define NI_NODEADDR_FLAG_ANYCAST␉0x40 /* just experimental. not in spec */␊ |
422 | #elif BYTE_ORDER == LITTLE_ENDIAN␊ |
423 | #define NI_NODEADDR_FLAG_TRUNCATE␉0x0100␊ |
424 | #define NI_NODEADDR_FLAG_ALL␉␉0x0200␊ |
425 | #define NI_NODEADDR_FLAG_COMPAT␉␉0x0400␊ |
426 | #define NI_NODEADDR_FLAG_LINKLOCAL␉0x0800␊ |
427 | #define NI_NODEADDR_FLAG_SITELOCAL␉0x1000␊ |
428 | #define NI_NODEADDR_FLAG_GLOBAL␉␉0x2000␊ |
429 | #define NI_NODEADDR_FLAG_ANYCAST␉0x4000 /* just experimental. not in spec */␊ |
430 | #endif␊ |
431 | #endif␊ |
432 | ␊ |
433 | struct ni_reply_fqdn {␊ |
434 | ␉u_int32_t ni_fqdn_ttl;␉/* TTL */␊ |
435 | ␉u_int8_t ni_fqdn_namelen; /* length in octets of the FQDN */␊ |
436 | ␉u_int8_t ni_fqdn_name[3]; /* XXX: alignment */␊ |
437 | };␊ |
438 | ␊ |
439 | /*␊ |
440 | * Router Renumbering. as router-renum-08.txt␊ |
441 | */␊ |
442 | struct icmp6_router_renum {␉/* router renumbering header */␊ |
443 | ␉struct icmp6_hdr␉rr_hdr;␊ |
444 | ␉u_int8_t␉rr_segnum;␊ |
445 | ␉u_int8_t␉rr_flags;␊ |
446 | ␉u_int16_t␉rr_maxdelay;␊ |
447 | ␉u_int32_t␉rr_reserved;␊ |
448 | };␊ |
449 | ␊ |
450 | #define ICMP6_RR_FLAGS_TEST␉␉0x80␊ |
451 | #define ICMP6_RR_FLAGS_REQRESULT␉0x40␊ |
452 | #define ICMP6_RR_FLAGS_FORCEAPPLY␉0x20␊ |
453 | #define ICMP6_RR_FLAGS_SPECSITE␉␉0x10␊ |
454 | #define ICMP6_RR_FLAGS_PREVDONE␉␉0x08␊ |
455 | ␊ |
456 | #define rr_type␉␉rr_hdr.icmp6_type␊ |
457 | #define rr_code␉␉rr_hdr.icmp6_code␊ |
458 | #define rr_cksum␉rr_hdr.icmp6_cksum␊ |
459 | #define rr_seqnum ␉rr_hdr.icmp6_data32[0]␊ |
460 | ␊ |
461 | struct rr_pco_match {␉␉/* match prefix part */␊ |
462 | ␉u_int8_t␉rpm_code;␊ |
463 | ␉u_int8_t␉rpm_len;␊ |
464 | ␉u_int8_t␉rpm_ordinal;␊ |
465 | ␉u_int8_t␉rpm_matchlen;␊ |
466 | ␉u_int8_t␉rpm_minlen;␊ |
467 | ␉u_int8_t␉rpm_maxlen;␊ |
468 | ␉u_int16_t␉rpm_reserved;␊ |
469 | ␉struct␉in6_addr␉rpm_prefix;␊ |
470 | };␊ |
471 | ␊ |
472 | #define RPM_PCO_ADD␉␉1␊ |
473 | #define RPM_PCO_CHANGE␉␉2␊ |
474 | #define RPM_PCO_SETGLOBAL␉3␊ |
475 | #define RPM_PCO_MAX␉␉4␊ |
476 | ␊ |
477 | struct rr_pco_use {␉␉/* use prefix part */␊ |
478 | ␉u_int8_t␉rpu_uselen;␊ |
479 | ␉u_int8_t␉rpu_keeplen;␊ |
480 | ␉u_int8_t␉rpu_ramask;␊ |
481 | ␉u_int8_t␉rpu_raflags;␊ |
482 | ␉u_int32_t␉rpu_vltime;␊ |
483 | ␉u_int32_t␉rpu_pltime;␊ |
484 | ␉u_int32_t␉rpu_flags;␊ |
485 | ␉struct␉in6_addr rpu_prefix;␊ |
486 | };␊ |
487 | #define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK␉0x80␊ |
488 | #define ICMP6_RR_PCOUSE_RAFLAGS_AUTO␉0x40␊ |
489 | ␊ |
490 | #if BYTE_ORDER == BIG_ENDIAN␊ |
491 | #define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000␊ |
492 | #define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40000000␊ |
493 | #elif BYTE_ORDER == LITTLE_ENDIAN␊ |
494 | #define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80␊ |
495 | #define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME 0x40␊ |
496 | #endif␊ |
497 | ␊ |
498 | struct rr_result {␉␉/* router renumbering result message */␊ |
499 | ␉u_int16_t␉rrr_flags;␊ |
500 | ␉u_int8_t␉rrr_ordinal;␊ |
501 | ␉u_int8_t␉rrr_matchedlen;␊ |
502 | ␉u_int32_t␉rrr_ifid;␊ |
503 | ␉struct␉in6_addr rrr_prefix;␊ |
504 | };␊ |
505 | #if BYTE_ORDER == BIG_ENDIAN␊ |
506 | #define ICMP6_RR_RESULT_FLAGS_OOB␉␉0x0002␊ |
507 | #define ICMP6_RR_RESULT_FLAGS_FORBIDDEN␉␉0x0001␊ |
508 | #elif BYTE_ORDER == LITTLE_ENDIAN␊ |
509 | #define ICMP6_RR_RESULT_FLAGS_OOB␉␉0x0200␊ |
510 | #define ICMP6_RR_RESULT_FLAGS_FORBIDDEN␉␉0x0100␊ |
511 | #endif␊ |
512 | ␊ |
513 | /*␊ |
514 | * icmp6 filter structures.␊ |
515 | */␊ |
516 | ␊ |
517 | struct icmp6_filter {␊ |
518 | ␉u_int32_t icmp6_filt[8];␊ |
519 | };␊ |
520 | ␊ |
521 | #define␉ICMP6_FILTER_SETPASSALL(filterp) \␊ |
522 | ␉memset(filterp, 0xff, sizeof(struct icmp6_filter))␊ |
523 | #define␉ICMP6_FILTER_SETBLOCKALL(filterp) \␊ |
524 | ␉memset(filterp, 0x00, sizeof(struct icmp6_filter))␊ |
525 | ␊ |
526 | #define␉ICMP6_FILTER_SETPASS(type, filterp) \␊ |
527 | ␉(((filterp)->icmp6_filt[(type) >> 5]) |= (1 << ((type) & 31)))␊ |
528 | #define␉ICMP6_FILTER_SETBLOCK(type, filterp) \␊ |
529 | ␉(((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31)))␊ |
530 | #define␉ICMP6_FILTER_WILLPASS(type, filterp) \␊ |
531 | ␉((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)␊ |
532 | #define␉ICMP6_FILTER_WILLBLOCK(type, filterp) \␊ |
533 | ␉((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)␊ |
534 | ␊ |
535 | /*␊ |
536 | * Variables related to this implementation␊ |
537 | * of the internet control message protocol version 6.␊ |
538 | */␊ |
539 | struct icmp6errstat {␊ |
540 | ␉u_quad_t icp6errs_dst_unreach_noroute;␊ |
541 | ␉u_quad_t icp6errs_dst_unreach_admin;␊ |
542 | ␉u_quad_t icp6errs_dst_unreach_beyondscope;␊ |
543 | ␉u_quad_t icp6errs_dst_unreach_addr;␊ |
544 | ␉u_quad_t icp6errs_dst_unreach_noport;␊ |
545 | ␉u_quad_t icp6errs_packet_too_big;␊ |
546 | ␉u_quad_t icp6errs_time_exceed_transit;␊ |
547 | ␉u_quad_t icp6errs_time_exceed_reassembly;␊ |
548 | ␉u_quad_t icp6errs_paramprob_header;␊ |
549 | ␉u_quad_t icp6errs_paramprob_nextheader;␊ |
550 | ␉u_quad_t icp6errs_paramprob_option;␊ |
551 | ␉u_quad_t icp6errs_redirect; /* we regard redirect as an error here */␊ |
552 | ␉u_quad_t icp6errs_unknown;␊ |
553 | };␊ |
554 | ␊ |
555 | struct icmp6stat {␊ |
556 | /* statistics related to icmp6 packets generated */␊ |
557 | ␉u_quad_t icp6s_error;␉␉/* # of calls to icmp6_error */␊ |
558 | ␉u_quad_t icp6s_canterror;␉/* no error 'cuz old was icmp */␊ |
559 | ␉u_quad_t icp6s_toofreq;␉␉/* no error 'cuz rate limitation */␊ |
560 | ␉u_quad_t icp6s_outhist[256];␊ |
561 | /* statistics related to input message processed */␊ |
562 | ␉u_quad_t icp6s_badcode;␉␉/* icmp6_code out of range */␊ |
563 | ␉u_quad_t icp6s_tooshort;␉/* packet < sizeof(struct icmp6_hdr) */␊ |
564 | ␉u_quad_t icp6s_checksum;␉/* bad checksum */␊ |
565 | ␉u_quad_t icp6s_badlen;␉␉/* calculated bound mismatch */␊ |
566 | ␉u_quad_t icp6s_reflect;␉␉/* number of responses */␊ |
567 | ␉u_quad_t icp6s_inhist[256];␉␊ |
568 | ␉u_quad_t icp6s_nd_toomanyopt;␉/* too many ND options */␊ |
569 | ␉struct icmp6errstat icp6s_outerrhist;␊ |
570 | #define icp6s_odst_unreach_noroute \␊ |
571 | ␉icp6s_outerrhist.icp6errs_dst_unreach_noroute␊ |
572 | #define icp6s_odst_unreach_admin icp6s_outerrhist.icp6errs_dst_unreach_admin␊ |
573 | #define icp6s_odst_unreach_beyondscope \␊ |
574 | ␉icp6s_outerrhist.icp6errs_dst_unreach_beyondscope␊ |
575 | #define icp6s_odst_unreach_addr icp6s_outerrhist.icp6errs_dst_unreach_addr␊ |
576 | #define icp6s_odst_unreach_noport icp6s_outerrhist.icp6errs_dst_unreach_noport␊ |
577 | #define icp6s_opacket_too_big icp6s_outerrhist.icp6errs_packet_too_big␊ |
578 | #define icp6s_otime_exceed_transit \␊ |
579 | ␉icp6s_outerrhist.icp6errs_time_exceed_transit␊ |
580 | #define icp6s_otime_exceed_reassembly \␊ |
581 | ␉icp6s_outerrhist.icp6errs_time_exceed_reassembly␊ |
582 | #define icp6s_oparamprob_header icp6s_outerrhist.icp6errs_paramprob_header␊ |
583 | #define icp6s_oparamprob_nextheader \␊ |
584 | ␉icp6s_outerrhist.icp6errs_paramprob_nextheader␊ |
585 | #define icp6s_oparamprob_option icp6s_outerrhist.icp6errs_paramprob_option␊ |
586 | #define icp6s_oredirect icp6s_outerrhist.icp6errs_redirect␊ |
587 | #define icp6s_ounknown icp6s_outerrhist.icp6errs_unknown␊ |
588 | ␉u_quad_t icp6s_pmtuchg;␉␉/* path MTU changes */␊ |
589 | ␉u_quad_t icp6s_nd_badopt;␉/* bad ND options */␊ |
590 | ␉u_quad_t icp6s_badns;␉␉/* bad neighbor solicitation */␊ |
591 | ␉u_quad_t icp6s_badna;␉␉/* bad neighbor advertisement */␊ |
592 | ␉u_quad_t icp6s_badrs;␉␉/* bad router advertisement */␊ |
593 | ␉u_quad_t icp6s_badra;␉␉/* bad router advertisement */␊ |
594 | ␉u_quad_t icp6s_badredirect;␉/* bad redirect message */␊ |
595 | };␊ |
596 | ␊ |
597 | /*␊ |
598 | * Names for ICMP sysctl objects␊ |
599 | */␊ |
600 | #define ICMPV6CTL_STATS␉␉1␊ |
601 | #define ICMPV6CTL_REDIRACCEPT␉2␉/* accept/process redirects */␊ |
602 | #define ICMPV6CTL_REDIRTIMEOUT␉3␉/* redirect cache time */␊ |
603 | #define ICMPV6CTL_ND6_PRUNE␉6␊ |
604 | #define ICMPV6CTL_ND6_DELAY␉8␊ |
605 | #define ICMPV6CTL_ND6_UMAXTRIES␉9␊ |
606 | #define ICMPV6CTL_ND6_MMAXTRIES␉␉10␊ |
607 | #define ICMPV6CTL_ND6_USELOOPBACK␉11␊ |
608 | /*#define ICMPV6CTL_ND6_PROXYALL␉12␉obsoleted, do not reuse here */␊ |
609 | #define ICMPV6CTL_NODEINFO␉13␊ |
610 | #define ICMPV6CTL_ERRPPSLIMIT␉14␉/* ICMPv6 error pps limitation */␊ |
611 | #define ICMPV6CTL_ND6_MAXNUDHINT␉15␊ |
612 | #define ICMPV6CTL_MTUDISC_HIWAT␉16␊ |
613 | #define ICMPV6CTL_MTUDISC_LOWAT␉17␊ |
614 | #define ICMPV6CTL_ND6_DEBUG␉18␊ |
615 | #define ICMPV6CTL_ND6_DRLIST␉19␊ |
616 | #define ICMPV6CTL_ND6_PRLIST␉20␊ |
617 | #define ICMPV6CTL_MAXID␉␉21␊ |
618 | ␊ |
619 | ␊ |
620 | #endif /* !_NETINET_ICMP6_H_ */␊ |
621 |