Root/
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-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 |