Root/
Source at commit 1230 created 12 years 11 months ago. By slice, delete error messages | |
---|---|
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 | /*␊ |
29 | * Copyright (c) 1982, 1986, 1990, 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 | *␉@(#)in.h␉8.3 (Berkeley) 1/3/94␊ |
61 | * $FreeBSD: src/sys/netinet/in.h,v 1.48.2.2 2001/04/21 14:53:06 ume Exp $␊ |
62 | */␊ |
63 | ␊ |
64 | #ifndef _NETINET_IN_H_␊ |
65 | #define _NETINET_IN_H_␊ |
66 | #include <sys/appleapiopts.h>␊ |
67 | #include <sys/_types.h>␊ |
68 | #include <stdint.h>␉␉/* uint(8|16|32)_t */␊ |
69 | ␊ |
70 | #ifndef _IN_ADDR_T␊ |
71 | #define _IN_ADDR_T␊ |
72 | typedef␉__uint32_t␉in_addr_t;␉/* base type for internet address */␊ |
73 | #endif␊ |
74 | ␊ |
75 | #ifndef _IN_PORT_T␊ |
76 | #define _IN_PORT_T␊ |
77 | typedef␉__uint16_t␉in_port_t;␊ |
78 | #endif␊ |
79 | ␊ |
80 | /*␊ |
81 | * POSIX 1003.1-2003␊ |
82 | * "Inclusion of the <netinet/in.h> header may also make visible all␊ |
83 | * symbols from <inttypes.h> and <sys/socket.h>".␊ |
84 | */␊ |
85 | #include <sys/socket.h>␊ |
86 | ␊ |
87 | /*␊ |
88 | * The following two #includes insure htonl and family are defined␊ |
89 | */␊ |
90 | #include <machine/endian.h>␊ |
91 | #include <sys/_endian.h>␊ |
92 | ␊ |
93 | /*␊ |
94 | * Constants and structures defined by the internet system,␊ |
95 | * Per RFC 790, September 1981, and numerous additions.␊ |
96 | */␊ |
97 | ␊ |
98 | /*␊ |
99 | * Protocols (RFC 1700)␊ |
100 | */␊ |
101 | #define␉IPPROTO_IP␉␉0␉␉/* dummy for IP */␊ |
102 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
103 | #define␉IPPROTO_HOPOPTS␉0␉␉/* IP6 hop-by-hop options */␊ |
104 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
105 | #define␉IPPROTO_ICMP␉␉1␉␉/* control message protocol */␊ |
106 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
107 | #define␉IPPROTO_IGMP␉␉2␉␉/* group mgmt protocol */␊ |
108 | #define␉IPPROTO_GGP␉␉3␉␉/* gateway^2 (deprecated) */␊ |
109 | #define IPPROTO_IPV4␉␉4 ␉␉/* IPv4 encapsulation */␊ |
110 | #define IPPROTO_IPIP␉␉IPPROTO_IPV4␉/* for compatibility */␊ |
111 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
112 | #define␉IPPROTO_TCP␉␉6␉␉/* tcp */␊ |
113 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
114 | #define␉IPPROTO_ST␉␉7␉␉/* Stream protocol II */␊ |
115 | #define␉IPPROTO_EGP␉␉8␉␉/* exterior gateway protocol */␊ |
116 | #define␉IPPROTO_PIGP␉␉9␉␉/* private interior gateway */␊ |
117 | #define␉IPPROTO_RCCMON␉␉10␉␉/* BBN RCC Monitoring */␊ |
118 | #define␉IPPROTO_NVPII␉␉11␉␉/* network voice protocol*/␊ |
119 | #define␉IPPROTO_PUP␉␉12␉␉/* pup */␊ |
120 | #define␉IPPROTO_ARGUS␉␉13␉␉/* Argus */␊ |
121 | #define␉IPPROTO_EMCON␉␉14␉␉/* EMCON */␊ |
122 | #define␉IPPROTO_XNET␉␉15␉␉/* Cross Net Debugger */␊ |
123 | #define␉IPPROTO_CHAOS␉␉16␉␉/* Chaos*/␊ |
124 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
125 | #define␉IPPROTO_UDP␉␉17␉␉/* user datagram protocol */␊ |
126 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
127 | #define␉IPPROTO_MUX␉␉18␉␉/* Multiplexing */␊ |
128 | #define␉IPPROTO_MEAS␉␉19␉␉/* DCN Measurement Subsystems */␊ |
129 | #define␉IPPROTO_HMP␉␉20␉␉/* Host Monitoring */␊ |
130 | #define␉IPPROTO_PRM␉␉21␉␉/* Packet Radio Measurement */␊ |
131 | #define␉IPPROTO_IDP␉␉22␉␉/* xns idp */␊ |
132 | #define␉IPPROTO_TRUNK1␉␉23␉␉/* Trunk-1 */␊ |
133 | #define␉IPPROTO_TRUNK2␉␉24␉␉/* Trunk-2 */␊ |
134 | #define␉IPPROTO_LEAF1␉␉25␉␉/* Leaf-1 */␊ |
135 | #define␉IPPROTO_LEAF2␉␉26␉␉/* Leaf-2 */␊ |
136 | #define␉IPPROTO_RDP␉␉27␉␉/* Reliable Data */␊ |
137 | #define␉IPPROTO_IRTP␉␉28␉␉/* Reliable Transaction */␊ |
138 | #define␉IPPROTO_TP␉␉29 ␉␉/* tp-4 w/ class negotiation */␊ |
139 | #define␉IPPROTO_BLT␉␉30␉␉/* Bulk Data Transfer */␊ |
140 | #define␉IPPROTO_NSP␉␉31␉␉/* Network Services */␊ |
141 | #define␉IPPROTO_INP␉␉32␉␉/* Merit Internodal */␊ |
142 | #define␉IPPROTO_SEP␉␉33␉␉/* Sequential Exchange */␊ |
143 | #define␉IPPROTO_3PC␉␉34␉␉/* Third Party Connect */␊ |
144 | #define␉IPPROTO_IDPR␉␉35␉␉/* InterDomain Policy Routing */␊ |
145 | #define␉IPPROTO_XTP␉␉36␉␉/* XTP */␊ |
146 | #define␉IPPROTO_DDP␉␉37␉␉/* Datagram Delivery */␊ |
147 | #define␉IPPROTO_CMTP␉␉38␉␉/* Control Message Transport */␊ |
148 | #define␉IPPROTO_TPXX␉␉39␉␉/* TP++ Transport */␊ |
149 | #define␉IPPROTO_IL␉␉40␉␉/* IL transport protocol */␊ |
150 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
151 | #define ␉IPPROTO_IPV6␉␉41␉␉/* IP6 header */␊ |
152 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
153 | #define␉IPPROTO_SDRP␉␉42␉␉/* Source Demand Routing */␊ |
154 | #define ␉IPPROTO_ROUTING␉43␉␉/* IP6 routing header */␊ |
155 | #define ␉IPPROTO_FRAGMENT␉44␉␉/* IP6 fragmentation header */␊ |
156 | #define␉IPPROTO_IDRP␉␉45␉␉/* InterDomain Routing*/␊ |
157 | #define ␉IPPROTO_RSVP␉␉46 ␉␉/* resource reservation */␊ |
158 | #define␉IPPROTO_GRE␉␉47␉␉/* General Routing Encap. */␊ |
159 | #define␉IPPROTO_MHRP␉␉48␉␉/* Mobile Host Routing */␊ |
160 | #define␉IPPROTO_BHA␉␉49␉␉/* BHA */␊ |
161 | #define␉IPPROTO_ESP␉␉50␉␉/* IP6 Encap Sec. Payload */␊ |
162 | #define␉IPPROTO_AH␉␉51␉␉/* IP6 Auth Header */␊ |
163 | #define␉IPPROTO_INLSP␉␉52␉␉/* Integ. Net Layer Security */␊ |
164 | #define␉IPPROTO_SWIPE␉␉53␉␉/* IP with encryption */␊ |
165 | #define␉IPPROTO_NHRP␉␉54␉␉/* Next Hop Resolution */␊ |
166 | /* 55-57: Unassigned */␊ |
167 | #define ␉IPPROTO_ICMPV6␉58␉␉/* ICMP6 */␊ |
168 | #define ␉IPPROTO_NONE␉␉59␉␉/* IP6 no next header */␊ |
169 | #define ␉IPPROTO_DSTOPTS␉60␉␉/* IP6 destination option */␊ |
170 | #define␉IPPROTO_AHIP␉␉61␉␉/* any host internal protocol */␊ |
171 | #define␉IPPROTO_CFTP␉␉62␉␉/* CFTP */␊ |
172 | #define␉IPPROTO_HELLO␉␉63␉␉/* "hello" routing protocol */␊ |
173 | #define␉IPPROTO_SATEXPAK␉64␉␉/* SATNET/Backroom EXPAK */␊ |
174 | #define␉IPPROTO_KRYPTOLAN␉65␉␉/* Kryptolan */␊ |
175 | #define␉IPPROTO_RVD␉␉66␉␉/* Remote Virtual Disk */␊ |
176 | #define␉IPPROTO_IPPC␉␉67␉␉/* Pluribus Packet Core */␊ |
177 | #define␉IPPROTO_ADFS␉␉68␉␉/* Any distributed FS */␊ |
178 | #define␉IPPROTO_SATMON␉␉69␉␉/* Satnet Monitoring */␊ |
179 | #define␉IPPROTO_VISA␉␉70␉␉/* VISA Protocol */␊ |
180 | #define␉IPPROTO_IPCV␉␉71␉␉/* Packet Core Utility */␊ |
181 | #define␉IPPROTO_CPNX␉␉72␉␉/* Comp. Prot. Net. Executive */␊ |
182 | #define␉IPPROTO_CPHB␉␉73␉␉/* Comp. Prot. HeartBeat */␊ |
183 | #define␉IPPROTO_WSN␉␉74␉␉/* Wang Span Network */␊ |
184 | #define␉IPPROTO_PVP␉␉75␉␉/* Packet Video Protocol */␊ |
185 | #define␉IPPROTO_BRSATMON␉76␉␉/* BackRoom SATNET Monitoring */␊ |
186 | #define␉IPPROTO_ND␉␉77␉␉/* Sun net disk proto (temp.) */␊ |
187 | #define␉IPPROTO_WBMON␉␉78␉␉/* WIDEBAND Monitoring */␊ |
188 | #define␉IPPROTO_WBEXPAK␉␉79␉␉/* WIDEBAND EXPAK */␊ |
189 | #define␉IPPROTO_EON␉␉80␉␉/* ISO cnlp */␊ |
190 | #define␉IPPROTO_VMTP␉␉81␉␉/* VMTP */␊ |
191 | #define␉IPPROTO_SVMTP␉␉82␉␉/* Secure VMTP */␊ |
192 | #define␉IPPROTO_VINES␉␉83␉␉/* Banyon VINES */␊ |
193 | #define␉IPPROTO_TTP␉␉84␉␉/* TTP */␊ |
194 | #define␉IPPROTO_IGP␉␉85␉␉/* NSFNET-IGP */␊ |
195 | #define␉IPPROTO_DGP␉␉86␉␉/* dissimilar gateway prot. */␊ |
196 | #define␉IPPROTO_TCF␉␉87␉␉/* TCF */␊ |
197 | #define␉IPPROTO_IGRP␉␉88␉␉/* Cisco/GXS IGRP */␊ |
198 | #define␉IPPROTO_OSPFIGP␉␉89␉␉/* OSPFIGP */␊ |
199 | #define␉IPPROTO_SRPC␉␉90␉␉/* Strite RPC protocol */␊ |
200 | #define␉IPPROTO_LARP␉␉91␉␉/* Locus Address Resoloution */␊ |
201 | #define␉IPPROTO_MTP␉␉92␉␉/* Multicast Transport */␊ |
202 | #define␉IPPROTO_AX25␉␉93␉␉/* AX.25 Frames */␊ |
203 | #define␉IPPROTO_IPEIP␉␉94␉␉/* IP encapsulated in IP */␊ |
204 | #define␉IPPROTO_MICP␉␉95␉␉/* Mobile Int.ing control */␊ |
205 | #define␉IPPROTO_SCCSP␉␉96␉␉/* Semaphore Comm. security */␊ |
206 | #define␉IPPROTO_ETHERIP␉␉97␉␉/* Ethernet IP encapsulation */␊ |
207 | #define␉IPPROTO_ENCAP␉␉98␉␉/* encapsulation header */␊ |
208 | #define␉IPPROTO_APES␉␉99␉␉/* any private encr. scheme */␊ |
209 | #define␉IPPROTO_GMTP␉␉100␉␉/* GMTP*/␊ |
210 | #define␉IPPROTO_IPCOMP␉108␉␉/* payload compression (IPComp) */␊ |
211 | /* 101-254: Partly Unassigned */␊ |
212 | #define␉IPPROTO_PIM␉␉103␉␉/* Protocol Independent Mcast */␊ |
213 | #define␉IPPROTO_PGM␉␉113␉␉/* PGM */␊ |
214 | /* 255: Reserved */␊ |
215 | /* BSD Private, local use, namespace incursion */␊ |
216 | #define␉IPPROTO_DIVERT␉␉254␉␉/* divert pseudo-protocol */␊ |
217 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
218 | #define␉IPPROTO_RAW␉␉255␉␉/* raw IP packet */␊ |
219 | ␊ |
220 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
221 | #define␉IPPROTO_MAX␉␉256␊ |
222 | ␊ |
223 | /* last return value of *_input(), meaning "all job for this pkt is done". */␊ |
224 | #define␉IPPROTO_DONE␉␉257␊ |
225 | #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */␊ |
226 | ␊ |
227 | /*␊ |
228 | * Local port number conventions:␊ |
229 | *␊ |
230 | * When a user does a bind(2) or connect(2) with a port number of zero,␊ |
231 | * a non-conflicting local port address is chosen.␊ |
232 | * The default range is IPPORT_RESERVED through␊ |
233 | * IPPORT_USERRESERVED, although that is settable by sysctl.␊ |
234 | *␊ |
235 | * A user may set the IPPROTO_IP option IP_PORTRANGE to change this␊ |
236 | * default assignment range.␊ |
237 | *␊ |
238 | * The value IP_PORTRANGE_DEFAULT causes the default behavior.␊ |
239 | *␊ |
240 | * The value IP_PORTRANGE_HIGH changes the range of candidate port numbers␊ |
241 | * into the "high" range. These are reserved for client outbound connections␊ |
242 | * which do not want to be filtered by any firewalls.␊ |
243 | *␊ |
244 | * The value IP_PORTRANGE_LOW changes the range to the "low" are␊ |
245 | * that is (by convention) restricted to privileged processes. This␊ |
246 | * convention is based on "vouchsafe" principles only. It is only secure␊ |
247 | * if you trust the remote host to restrict these ports.␊ |
248 | *␊ |
249 | * The default range of ports and the high range can be changed by␊ |
250 | * sysctl(3). (net.inet.ip.port{hi,low}{first,last}_auto)␊ |
251 | *␊ |
252 | * Changing those values has bad security implications if you are␊ |
253 | * using a a stateless firewall that is allowing packets outside of that␊ |
254 | * range in order to allow transparent outgoing connections.␊ |
255 | *␊ |
256 | * Such a firewall configuration will generally depend on the use of these␊ |
257 | * default values. If you change them, you may find your Security␊ |
258 | * Administrator looking for you with a heavy object.␊ |
259 | *␊ |
260 | * For a slightly more orthodox text view on this:␊ |
261 | *␊ |
262 | * ftp://ftp.isi.edu/in-notes/iana/assignments/port-numbers␊ |
263 | *␊ |
264 | * port numbers are divided into three ranges:␊ |
265 | *␊ |
266 | * 0 - 1023 Well Known Ports␊ |
267 | * 1024 - 49151 Registered Ports␊ |
268 | * 49152 - 65535 Dynamic and/or Private Ports␊ |
269 | *␊ |
270 | */␊ |
271 | ␊ |
272 | #define␉__DARWIN_IPPORT_RESERVED␉1024␊ |
273 | ␊ |
274 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
275 | /*␊ |
276 | * Ports < IPPORT_RESERVED are reserved for␊ |
277 | * privileged processes (e.g. root). (IP_PORTRANGE_LOW)␊ |
278 | * Ports > IPPORT_USERRESERVED are reserved␊ |
279 | * for servers, not necessarily privileged. (IP_PORTRANGE_DEFAULT)␊ |
280 | */␊ |
281 | #ifndef IPPORT_RESERVED␊ |
282 | #define␉IPPORT_RESERVED␉␉__DARWIN_IPPORT_RESERVED␊ |
283 | #endif␊ |
284 | #define␉IPPORT_USERRESERVED␉5000␊ |
285 | ␊ |
286 | /*␊ |
287 | * Default local port range to use by setting IP_PORTRANGE_HIGH␊ |
288 | */␊ |
289 | #define␉IPPORT_HIFIRSTAUTO␉49152␊ |
290 | #define␉IPPORT_HILASTAUTO␉65535␊ |
291 | ␊ |
292 | /*␊ |
293 | * Scanning for a free reserved port return a value below IPPORT_RESERVED,␊ |
294 | * but higher than IPPORT_RESERVEDSTART. Traditionally the start value was␊ |
295 | * 512, but that conflicts with some well-known-services that firewalls may␊ |
296 | * have a fit if we use.␊ |
297 | */␊ |
298 | #define IPPORT_RESERVEDSTART␉600␊ |
299 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
300 | ␊ |
301 | /*␊ |
302 | * Internet address (a structure for historical reasons)␊ |
303 | */␊ |
304 | struct in_addr {␊ |
305 | ␉in_addr_t s_addr;␊ |
306 | };␊ |
307 | ␊ |
308 | /*␊ |
309 | * Definitions of bits in internet address integers.␊ |
310 | * On subnets, the decomposition of addresses to host and net parts␊ |
311 | * is done according to subnet mask, not the masks here.␊ |
312 | */␊ |
313 | #define␉INADDR_ANY␉␉(u_int32_t)0x00000000␊ |
314 | #define␉INADDR_BROADCAST␉(u_int32_t)0xffffffff␉/* must be masked */␊ |
315 | ␊ |
316 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
317 | #define␉IN_CLASSA(i)␉␉(((u_int32_t)(i) & 0x80000000) == 0)␊ |
318 | #define␉IN_CLASSA_NET␉␉0xff000000␊ |
319 | #define␉IN_CLASSA_NSHIFT␉24␊ |
320 | #define␉IN_CLASSA_HOST␉␉0x00ffffff␊ |
321 | #define␉IN_CLASSA_MAX␉␉128␊ |
322 | ␊ |
323 | #define␉IN_CLASSB(i)␉␉(((u_int32_t)(i) & 0xc0000000) == 0x80000000)␊ |
324 | #define␉IN_CLASSB_NET␉␉0xffff0000␊ |
325 | #define␉IN_CLASSB_NSHIFT␉16␊ |
326 | #define␉IN_CLASSB_HOST␉␉0x0000ffff␊ |
327 | #define␉IN_CLASSB_MAX␉␉65536␊ |
328 | ␊ |
329 | #define␉IN_CLASSC(i)␉␉(((u_int32_t)(i) & 0xe0000000) == 0xc0000000)␊ |
330 | #define␉IN_CLASSC_NET␉␉0xffffff00␊ |
331 | #define␉IN_CLASSC_NSHIFT␉8␊ |
332 | #define␉IN_CLASSC_HOST␉␉0x000000ff␊ |
333 | ␊ |
334 | #define␉IN_CLASSD(i)␉␉(((u_int32_t)(i) & 0xf0000000) == 0xe0000000)␊ |
335 | #define␉IN_CLASSD_NET␉␉0xf0000000␉/* These ones aren't really */␊ |
336 | #define␉IN_CLASSD_NSHIFT␉28␉␉/* net and host fields, but */␊ |
337 | #define␉IN_CLASSD_HOST␉␉0x0fffffff␉/* routing needn't know. */␊ |
338 | #define␉IN_MULTICAST(i)␉␉IN_CLASSD(i)␊ |
339 | ␊ |
340 | #define␉IN_EXPERIMENTAL(i)␉(((u_int32_t)(i) & 0xf0000000) == 0xf0000000)␊ |
341 | #define␉IN_BADCLASS(i)␉␉(((u_int32_t)(i) & 0xf0000000) == 0xf0000000)␊ |
342 | ␊ |
343 | #define␉INADDR_LOOPBACK␉␉(u_int32_t)0x7f000001␊ |
344 | #define␉INADDR_NONE␉␉0xffffffff␉␉/* -1 return */␊ |
345 | ␊ |
346 | #define␉INADDR_UNSPEC_GROUP␉(u_int32_t)0xe0000000␉/* 224.0.0.0 */␊ |
347 | #define␉INADDR_ALLHOSTS_GROUP␉(u_int32_t)0xe0000001␉/* 224.0.0.1 */␊ |
348 | #define␉INADDR_ALLRTRS_GROUP␉(u_int32_t)0xe0000002␉/* 224.0.0.2 */␊ |
349 | #define␉INADDR_MAX_LOCAL_GROUP␉(u_int32_t)0xe00000ff␉/* 224.0.0.255 */␊ |
350 | ␊ |
351 | #ifdef __APPLE__␊ |
352 | #define IN_LINKLOCALNETNUM␉(u_int32_t)0xA9FE0000 /* 169.254.0.0 */␊ |
353 | #define IN_LINKLOCAL(i)␉␉(((u_int32_t)(i) & IN_CLASSB_NET) == IN_LINKLOCALNETNUM)␊ |
354 | #endif␊ |
355 | ␊ |
356 | #define␉IN_LOOPBACKNET␉␉127␉␉␉/* official! */␊ |
357 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
358 | ␊ |
359 | /*␊ |
360 | * Socket address, internet style.␊ |
361 | */␊ |
362 | struct sockaddr_in {␊ |
363 | ␉__uint8_t␉sin_len;␊ |
364 | ␉sa_family_t␉sin_family;␊ |
365 | ␉in_port_t␉sin_port;␊ |
366 | ␉struct␉in_addr sin_addr;␊ |
367 | ␉char␉␉sin_zero[8];␊ |
368 | };␊ |
369 | ␊ |
370 | #define INET_ADDRSTRLEN 16␊ |
371 | ␊ |
372 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
373 | /*␊ |
374 | * Structure used to describe IP options.␊ |
375 | * Used to store options internally, to pass them to a process,␊ |
376 | * or to restore options retrieved earlier.␊ |
377 | * The ip_dst is used for the first-hop gateway when using a source route␊ |
378 | * (this gets put into the header proper).␊ |
379 | */␊ |
380 | struct ip_opts {␊ |
381 | ␉struct␉in_addr ip_dst;␉␉/* first hop, 0 w/o src rt */␊ |
382 | ␉char␉ip_opts[40];␉␉/* actually variable in size */␊ |
383 | };␊ |
384 | ␊ |
385 | /*␊ |
386 | * Options for use with [gs]etsockopt at the IP level.␊ |
387 | * First word of comment is data type; bool is stored in int.␊ |
388 | */␊ |
389 | #define␉IP_OPTIONS␉␉1 /* buf/ip_opts; set/get IP options */␊ |
390 | #define␉IP_HDRINCL␉␉2 /* int; header is included with data */␊ |
391 | #define␉IP_TOS␉␉␉3 /* int; IP type of service and preced. */␊ |
392 | #define␉IP_TTL␉␉␉4 /* int; IP time to live */␊ |
393 | #define␉IP_RECVOPTS␉␉5 /* bool; receive all IP opts w/dgram */␊ |
394 | #define␉IP_RECVRETOPTS␉␉6 /* bool; receive IP opts for response */␊ |
395 | #define␉IP_RECVDSTADDR␉␉7 /* bool; receive IP dst addr w/dgram */␊ |
396 | #define␉IP_RETOPTS␉␉8 /* ip_opts; set/get IP options */␊ |
397 | #define␉IP_MULTICAST_IF␉␉9 /* u_char; set/get IP multicast i/f */␊ |
398 | #define␉IP_MULTICAST_TTL␉10 /* u_char; set/get IP multicast ttl */␊ |
399 | #define␉IP_MULTICAST_LOOP␉11 /* u_char; set/get IP multicast loopback */␊ |
400 | #define␉IP_ADD_MEMBERSHIP␉12 /* ip_mreq; add an IP group membership */␊ |
401 | #define␉IP_DROP_MEMBERSHIP␉13 /* ip_mreq; drop an IP group membership */␊ |
402 | #define IP_MULTICAST_VIF␉14 /* set/get IP mcast virt. iface */␊ |
403 | #define IP_RSVP_ON␉␉15 /* enable RSVP in kernel */␊ |
404 | #define IP_RSVP_OFF␉␉16 /* disable RSVP in kernel */␊ |
405 | #define IP_RSVP_VIF_ON␉␉17 /* set RSVP per-vif socket */␊ |
406 | #define IP_RSVP_VIF_OFF␉␉18 /* unset RSVP per-vif socket */␊ |
407 | #define IP_PORTRANGE␉␉19 /* int; range to choose for unspec port */␊ |
408 | #define␉IP_RECVIF␉␉20 /* bool; receive reception if w/dgram */␊ |
409 | /* for IPSEC */␊ |
410 | #define␉IP_IPSEC_POLICY␉␉21 /* int; set/get security policy */␊ |
411 | #define␉IP_FAITH␉␉22 /* bool; accept FAITH'ed connections */␊ |
412 | #ifdef __APPLE__␊ |
413 | #define IP_STRIPHDR ␉23 /* bool: drop receive of raw IP header */␊ |
414 | #endif␊ |
415 | #define IP_RECVTTL␉␉24 /* bool; receive reception TTL w/dgram */␊ |
416 | #define␉IP_BOUND_IF␉␉25 /* set/get bound interface */␊ |
417 | ␊ |
418 | ␊ |
419 | #define␉IP_FW_ADD ␉␉40 /* add a firewall rule to chain */␊ |
420 | #define␉IP_FW_DEL ␉␉41 /* delete a firewall rule from chain */␊ |
421 | #define␉IP_FW_FLUSH ␉␉42 /* flush firewall rule chain */␊ |
422 | #define␉IP_FW_ZERO ␉␉43 /* clear single/all firewall counter(s) */␊ |
423 | #define␉IP_FW_GET ␉␉44 /* get entire firewall rule chain */␊ |
424 | #define␉IP_FW_RESETLOG␉␉45 /* reset logging counters */␊ |
425 | ␊ |
426 | /* These older firewall socket option codes are maintained for backward compatibility. */␊ |
427 | #define␉IP_OLD_FW_ADD ␉50 /* add a firewall rule to chain */␊ |
428 | #define␉IP_OLD_FW_DEL ␉51 /* delete a firewall rule from chain */␊ |
429 | #define␉IP_OLD_FW_FLUSH ␉52 /* flush firewall rule chain */␊ |
430 | #define␉IP_OLD_FW_ZERO ␉53 /* clear single/all firewall counter(s) */␊ |
431 | #define␉IP_OLD_FW_GET ␉54 /* get entire firewall rule chain */␊ |
432 | #define IP_NAT__XXX␉␉␉55 /* set/get NAT opts XXX Deprecated, do not use */␊ |
433 | #define␉IP_OLD_FW_RESETLOG␉56 /* reset logging counters */␊ |
434 | ␊ |
435 | #define␉IP_DUMMYNET_CONFIGURE␉60 /* add/configure a dummynet pipe */␊ |
436 | #define␉IP_DUMMYNET_DEL␉␉61 /* delete a dummynet pipe from chain */␊ |
437 | #define␉IP_DUMMYNET_FLUSH␉62 /* flush dummynet */␊ |
438 | #define␉IP_DUMMYNET_GET␉␉64 /* get entire dummynet pipes */␊ |
439 | ␊ |
440 | #define␉IP_TRAFFIC_MGT_BACKGROUND␉65 /* int*; get background IO flags; set background IO */␊ |
441 | ␊ |
442 | ␊ |
443 | /* Background socket configuration flags */␊ |
444 | #ifdef __APPLE_API_UNSTABLE␊ |
445 | #define TRAFFIC_MGT_SO_BACKGROUND␉0x0001␉/* background socket */␊ |
446 | #define TRAFFIC_MGT_SO_BG_SUPPRESSED␉0x0002␉/* currently throttled */␊ |
447 | #define TRAFFIC_MGT_SO_BG_REGULATE␉0x0004␉/* traffic is regulated */␊ |
448 | #endif /* __APPLE_API_UNSTABLE */␊ |
449 | ␊ |
450 | /*␊ |
451 | * Defaults and limits for options␊ |
452 | */␊ |
453 | #define␉IP_DEFAULT_MULTICAST_TTL 1␉/* normally limit m'casts to 1 hop */␊ |
454 | #define␉IP_DEFAULT_MULTICAST_LOOP 1␉/* normally hear sends if a member */␊ |
455 | #define␉IP_MAX_MEMBERSHIPS␉20␉/* per socket */␊ |
456 | ␊ |
457 | /*␊ |
458 | * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.␊ |
459 | */␊ |
460 | struct ip_mreq {␊ |
461 | ␉struct␉in_addr imr_multiaddr;␉/* IP multicast address of group */␊ |
462 | ␉struct␉in_addr imr_interface;␉/* local IP address of interface */␊ |
463 | };␊ |
464 | ␊ |
465 | /*␊ |
466 | * Argument for IP_PORTRANGE:␊ |
467 | * - which range to search when port is unspecified at bind() or connect()␊ |
468 | */␊ |
469 | #define␉IP_PORTRANGE_DEFAULT␉0␉/* default range */␊ |
470 | #define␉IP_PORTRANGE_HIGH␉1␉/* "high" - request firewall bypass */␊ |
471 | #define␉IP_PORTRANGE_LOW␉2␉/* "low" - vouchsafe security */␊ |
472 | ␊ |
473 | ␊ |
474 | /*␊ |
475 | * Definitions for inet sysctl operations.␊ |
476 | *␊ |
477 | * Third level is protocol number.␊ |
478 | * Fourth level is desired variable within that protocol.␊ |
479 | */␊ |
480 | #define␉IPPROTO_MAXID␉(IPPROTO_AH + 1)␉/* don't list to IPPROTO_MAX */␊ |
481 | ␊ |
482 | ␊ |
483 | /*␊ |
484 | * Names for IP sysctl objects␊ |
485 | */␊ |
486 | #define␉IPCTL_FORWARDING␉1␉/* act as router */␊ |
487 | #define␉IPCTL_SENDREDIRECTS␉2␉/* may send redirects when forwarding */␊ |
488 | #define␉IPCTL_DEFTTL␉␉3␉/* default TTL */␊ |
489 | #ifdef notyet␊ |
490 | #define␉IPCTL_DEFMTU␉␉4␉/* default MTU */␊ |
491 | #endif␊ |
492 | #define IPCTL_RTEXPIRE␉␉5␉/* cloned route expiration time */␊ |
493 | #define IPCTL_RTMINEXPIRE␉6␉/* min value for expiration time */␊ |
494 | #define IPCTL_RTMAXCACHE␉7␉/* trigger level for dynamic expire */␊ |
495 | #define␉IPCTL_SOURCEROUTE␉8␉/* may perform source routes */␊ |
496 | #define␉IPCTL_DIRECTEDBROADCAST␉9␉/* may re-broadcast received packets */␊ |
497 | #define IPCTL_INTRQMAXLEN␉10␉/* max length of netisr queue */␊ |
498 | #define␉IPCTL_INTRQDROPS␉11␉/* number of netisr q drops */␊ |
499 | #define␉IPCTL_STATS␉␉12␉/* ipstat structure */␊ |
500 | #define␉IPCTL_ACCEPTSOURCEROUTE␉13␉/* may accept source routed packets */␊ |
501 | #define␉IPCTL_FASTFORWARDING␉14␉/* use fast IP forwarding code */␊ |
502 | #define␉IPCTL_KEEPFAITH␉␉15␉/* FAITH IPv4->IPv6 translater ctl */␊ |
503 | #define␉IPCTL_GIF_TTL␉␉16␉/* default TTL for gif encap packet */␊ |
504 | #define␉IPCTL_MAXID␉␉17␊ |
505 | ␊ |
506 | ␊ |
507 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
508 | ␊ |
509 | ␊ |
510 | /* INET6 stuff */␊ |
511 | #define __KAME_NETINET_IN_H_INCLUDED_␊ |
512 | #include <netinet6/in6.h>␊ |
513 | #undef __KAME_NETINET_IN_H_INCLUDED_␊ |
514 | ␊ |
515 | ␊ |
516 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
517 | __BEGIN_DECLS␊ |
518 | int bindresvport(int, struct sockaddr_in *);␊ |
519 | struct sockaddr;␊ |
520 | int bindresvport_sa(int, struct sockaddr *);␊ |
521 | __END_DECLS␊ |
522 | #endif␊ |
523 | ␊ |
524 | #endif /* _NETINET_IN_H_ */␊ |
525 |