Root/
Source at commit 2053 created 11 years 10 months ago. By zef, Re-enabled boot prompt reset functions. | |
---|---|
1 | /*␊ |
2 | * Copyright (c) 2000-2007 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 | /* Copyright (c) 1998, 1999 Apple Computer, Inc. All Rights Reserved */␊ |
29 | /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */␊ |
30 | /*␊ |
31 | * Copyright (c) 1982, 1985, 1986, 1988, 1993, 1994␊ |
32 | *␉The Regents of the University of California. 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. All advertising materials mentioning features or use of this software␊ |
43 | * must display the following acknowledgement:␊ |
44 | *␉This product includes software developed by the University of␊ |
45 | *␉California, Berkeley and its contributors.␊ |
46 | * 4. Neither the name of the University nor the names of its contributors␊ |
47 | * may be used to endorse or promote products derived from this software␊ |
48 | * without specific prior written permission.␊ |
49 | *␊ |
50 | * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND␊ |
51 | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE␊ |
52 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE␊ |
53 | * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE␊ |
54 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL␊ |
55 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS␊ |
56 | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)␊ |
57 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT␊ |
58 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY␊ |
59 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF␊ |
60 | * SUCH DAMAGE.␊ |
61 | *␊ |
62 | *␉@(#)socket.h␉8.4 (Berkeley) 2/21/94␊ |
63 | * $FreeBSD: src/sys/sys/socket.h,v 1.39.2.7 2001/07/03 11:02:01 ume Exp $␊ |
64 | */␊ |
65 | /*␊ |
66 | * NOTICE: This file was modified by SPARTA, Inc. in 2005 to introduce␊ |
67 | * support for mandatory and extensible security protections. This notice␊ |
68 | * is included in support of clause 2.2 (b) of the Apple Public License,␊ |
69 | * Version 2.0.␊ |
70 | */␊ |
71 | ␊ |
72 | #ifndef _SYS_SOCKET_H_␊ |
73 | #define␉_SYS_SOCKET_H_␊ |
74 | ␊ |
75 | #include <sys/types.h>␊ |
76 | #include <sys/cdefs.h>␊ |
77 | #include <machine/_param.h>␊ |
78 | ␊ |
79 | /*␊ |
80 | * Definitions related to sockets: types, address families, options.␊ |
81 | */␊ |
82 | ␊ |
83 | /*␊ |
84 | * Data types.␊ |
85 | */␊ |
86 | #ifndef _GID_T␊ |
87 | typedef __darwin_gid_t␉␉gid_t;␊ |
88 | #define _GID_T␊ |
89 | #endif␊ |
90 | ␊ |
91 | #ifndef _OFF_T␊ |
92 | typedef __darwin_off_t␉␉off_t;␊ |
93 | #define _OFF_T␊ |
94 | #endif␊ |
95 | ␊ |
96 | #ifndef _PID_T␊ |
97 | typedef __darwin_pid_t␉␉pid_t;␊ |
98 | #define _PID_T␊ |
99 | #endif␊ |
100 | ␊ |
101 | #ifndef _SA_FAMILY_T␊ |
102 | #define _SA_FAMILY_T␊ |
103 | typedef __uint8_t␉␉sa_family_t;␊ |
104 | #endif␊ |
105 | ␊ |
106 | #ifndef _SOCKLEN_T␊ |
107 | #define _SOCKLEN_T␊ |
108 | typedef␉__darwin_socklen_t␉socklen_t;␊ |
109 | #endif␊ |
110 | ␊ |
111 | /* XXX Not explicitly defined by POSIX, but function return types are */␊ |
112 | #ifndef _SIZE_T␊ |
113 | #define _SIZE_T␊ |
114 | typedef __darwin_size_t␉␉size_t;␊ |
115 | #endif␊ |
116 | ␊ |
117 | /* XXX Not explicitly defined by POSIX, but function return types are */␊ |
118 | #ifndef␉_SSIZE_T␊ |
119 | #define␉_SSIZE_T␊ |
120 | typedef␉__darwin_ssize_t␉ssize_t;␊ |
121 | #endif␊ |
122 | ␊ |
123 | /*␊ |
124 | * [XSI] The iovec structure shall be defined as described in <sys/uio.h>.␊ |
125 | */␊ |
126 | #ifndef _STRUCT_IOVEC␊ |
127 | #define␉_STRUCT_IOVEC␊ |
128 | struct iovec {␊ |
129 | ␉void * iov_base;␉/* [XSI] Base address of I/O memory region */␊ |
130 | ␉size_t␉ iov_len;␉/* [XSI] Size of region iov_base points to */␊ |
131 | };␊ |
132 | #endif␊ |
133 | ␊ |
134 | /*␊ |
135 | * Types␊ |
136 | */␊ |
137 | #define␉SOCK_STREAM␉1␉␉/* stream socket */␊ |
138 | #define␉SOCK_DGRAM␉2␉␉/* datagram socket */␊ |
139 | #define␉SOCK_RAW␉3␉␉/* raw-protocol interface */␊ |
140 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
141 | #define␉SOCK_RDM␉4␉␉/* reliably-delivered message */␊ |
142 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
143 | #define␉SOCK_SEQPACKET␉5␉␉/* sequenced packet stream */␊ |
144 | ␊ |
145 | /*␊ |
146 | * Option flags per-socket.␊ |
147 | */␊ |
148 | #define␉SO_DEBUG␉0x0001␉␉/* turn on debugging info recording */␊ |
149 | #define␉SO_ACCEPTCONN␉0x0002␉␉/* socket has had listen() */␊ |
150 | #define␉SO_REUSEADDR␉0x0004␉␉/* allow local address reuse */␊ |
151 | #define␉SO_KEEPALIVE␉0x0008␉␉/* keep connections alive */␊ |
152 | #define␉SO_DONTROUTE␉0x0010␉␉/* just use interface addresses */␊ |
153 | #define␉SO_BROADCAST␉0x0020␉␉/* permit sending of broadcast msgs */␊ |
154 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
155 | #define␉SO_USELOOPBACK␉0x0040␉␉/* bypass hardware when possible */␊ |
156 | #define SO_LINGER␉0x0080 /* linger on close if data present (in ticks) */␊ |
157 | #else␊ |
158 | #define SO_LINGER␉0x1080 /* linger on close if data present (in seconds) */␊ |
159 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
160 | #define␉SO_OOBINLINE␉0x0100␉␉/* leave received OOB data in line */␊ |
161 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
162 | #define␉SO_REUSEPORT␉0x0200␉␉/* allow local address & port reuse */␊ |
163 | #define␉SO_TIMESTAMP␉0x0400␉␉/* timestamp received dgram traffic */␊ |
164 | #ifndef __APPLE__␊ |
165 | #define␉SO_ACCEPTFILTER␉0x1000␉␉/* there is an accept filter */␊ |
166 | #else␊ |
167 | #define SO_DONTTRUNC␉0x2000␉␉/* APPLE: Retain unread data */␊ |
168 | ␉␉␉␉␉/* (ATOMIC proto) */␊ |
169 | #define SO_WANTMORE␉␉0x4000␉␉/* APPLE: Give hint when more data ready */␊ |
170 | #define SO_WANTOOBFLAG␉0x8000␉␉/* APPLE: Want OOB in MSG_FLAG on receive */␊ |
171 | #endif␊ |
172 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
173 | ␊ |
174 | /*␊ |
175 | * Additional options, not kept in so_options.␊ |
176 | */␊ |
177 | #define SO_SNDBUF␉0x1001␉␉/* send buffer size */␊ |
178 | #define SO_RCVBUF␉0x1002␉␉/* receive buffer size */␊ |
179 | #define SO_SNDLOWAT␉0x1003␉␉/* send low-water mark */␊ |
180 | #define SO_RCVLOWAT␉0x1004␉␉/* receive low-water mark */␊ |
181 | #define SO_SNDTIMEO␉0x1005␉␉/* send timeout */␊ |
182 | #define SO_RCVTIMEO␉0x1006␉␉/* receive timeout */␊ |
183 | #define␉SO_ERROR␉0x1007␉␉/* get error status and clear */␊ |
184 | #define␉SO_TYPE␉␉0x1008␉␉/* get socket type */␊ |
185 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
186 | /*efine␉SO_PRIVSTATE␉0x1009␉␉ get/deny privileged state */␊ |
187 | #ifdef __APPLE__␊ |
188 | #define SO_NREAD␉0x1020␉␉/* APPLE: get 1st-packet byte count */␊ |
189 | #define SO_NKE␉␉0x1021␉␉/* APPLE: Install socket-level NKE */␊ |
190 | #define SO_NOSIGPIPE␉0x1022␉␉/* APPLE: No SIGPIPE on EPIPE */␊ |
191 | #define SO_NOADDRERR␉0x1023␉␉/* APPLE: Returns EADDRNOTAVAIL when src is not available anymore */␊ |
192 | #define SO_NWRITE␉0x1024␉␉/* APPLE: Get number of bytes currently in send socket buffer */␊ |
193 | #define SO_REUSESHAREUID␉0x1025␉␉/* APPLE: Allow reuse of port/socket by different userids */␊ |
194 | #ifdef __APPLE_API_PRIVATE␊ |
195 | #define SO_NOTIFYCONFLICT␉0x1026␉/* APPLE: send notification if there is a bind on a port which is already in use */␊ |
196 | #define␉SO_UPCALLCLOSEWAIT␉0x1027␉/* APPLE: block on close until an upcall returns */␊ |
197 | #endif␊ |
198 | #define SO_LINGER_SEC␉0x1080 /* linger on close if data present (in seconds) */␊ |
199 | #define SO_RESTRICTIONS␉0x1081␉/* APPLE: deny inbound/outbound/both/flag set */␊ |
200 | #define SO_RESTRICT_DENYIN␉␉0x00000001␉/* flag for SO_RESTRICTIONS - deny inbound */␊ |
201 | #define SO_RESTRICT_DENYOUT␉␉0x00000002␉/* flag for SO_RESTRICTIONS - deny outbound */␊ |
202 | #define SO_RESTRICT_DENYSET␉␉0x80000000␉/* flag for SO_RESTRICTIONS - deny has been set */␊ |
203 | #define SO_RANDOMPORT 0x1082 /* APPLE: request local port randomization */␊ |
204 | #define SO_NP_EXTENSIONS␉0x1083␉/* To turn off some POSIX behavior */␊ |
205 | #endif␊ |
206 | #define␉SO_LABEL␉0x1010␉␉/* socket's MAC label */␊ |
207 | #define␉SO_PEERLABEL␉0x1011␉␉/* socket's peer MAC label */␊ |
208 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
209 | ␊ |
210 | /*␊ |
211 | * Structure used for manipulating linger option.␊ |
212 | */␊ |
213 | struct␉linger {␊ |
214 | ␉int␉l_onoff;␉␉/* option on/off */␊ |
215 | ␉int␉l_linger;␉␉/* linger time */␊ |
216 | };␊ |
217 | ␊ |
218 | #ifndef __APPLE__␊ |
219 | struct␉accept_filter_arg {␊ |
220 | ␉char␉af_name[16];␊ |
221 | ␉char␉af_arg[256-16];␊ |
222 | };␊ |
223 | #endif␊ |
224 | ␊ |
225 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
226 | #ifdef __APPLE__␊ |
227 | ␊ |
228 | /*␊ |
229 | * Structure to control non-portable Sockets extension to POSIX ␊ |
230 | */␊ |
231 | struct so_np_extensions {␊ |
232 | ␉u_int32_t␉npx_flags;␊ |
233 | ␉u_int32_t␉npx_mask;␊ |
234 | };␊ |
235 | ␊ |
236 | #define SONPX_SETOPTSHUT␉0x000000001 /* flag for allowing setsockopt after shutdown */␊ |
237 | ␊ |
238 | ␊ |
239 | ␊ |
240 | #endif␊ |
241 | #endif␊ |
242 | ␊ |
243 | /*␊ |
244 | * Level number for (get/set)sockopt() to apply to socket itself.␊ |
245 | */␊ |
246 | #define␉SOL_SOCKET␉0xffff␉␉/* options for socket level */␊ |
247 | ␊ |
248 | ␊ |
249 | /*␊ |
250 | * Address families.␊ |
251 | */␊ |
252 | #define␉AF_UNSPEC␉0␉␉/* unspecified */␊ |
253 | #define␉AF_UNIX␉␉1␉␉/* local to host (pipes) */␊ |
254 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
255 | #define␉AF_LOCAL␉AF_UNIX␉␉/* backward compatibility */␊ |
256 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
257 | #define␉AF_INET␉␉2␉␉/* internetwork: UDP, TCP, etc. */␊ |
258 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
259 | #define␉AF_IMPLINK␉3␉␉/* arpanet imp addresses */␊ |
260 | #define␉AF_PUP␉␉4␉␉/* pup protocols: e.g. BSP */␊ |
261 | #define␉AF_CHAOS␉5␉␉/* mit CHAOS protocols */␊ |
262 | #define␉AF_NS␉␉6␉␉/* XEROX NS protocols */␊ |
263 | #define␉AF_ISO␉␉7␉␉/* ISO protocols */␊ |
264 | #define␉AF_OSI␉␉AF_ISO␊ |
265 | #define␉AF_ECMA␉␉8␉␉/* European computer manufacturers */␊ |
266 | #define␉AF_DATAKIT␉9␉␉/* datakit protocols */␊ |
267 | #define␉AF_CCITT␉10␉␉/* CCITT protocols, X.25 etc */␊ |
268 | #define␉AF_SNA␉␉11␉␉/* IBM SNA */␊ |
269 | #define AF_DECnet␉12␉␉/* DECnet */␊ |
270 | #define AF_DLI␉␉13␉␉/* DEC Direct data link interface */␊ |
271 | #define AF_LAT␉␉14␉␉/* LAT */␊ |
272 | #define␉AF_HYLINK␉15␉␉/* NSC Hyperchannel */␊ |
273 | #define␉AF_APPLETALK␉16␉␉/* Apple Talk */␊ |
274 | #define␉AF_ROUTE␉17␉␉/* Internal Routing Protocol */␊ |
275 | #define␉AF_LINK␉␉18␉␉/* Link layer interface */␊ |
276 | #define␉pseudo_AF_XTP␉19␉␉/* eXpress Transfer Protocol (no AF) */␊ |
277 | #define␉AF_COIP␉␉20␉␉/* connection-oriented IP, aka ST II */␊ |
278 | #define␉AF_CNT␉␉21␉␉/* Computer Network Technology */␊ |
279 | #define pseudo_AF_RTIP␉22␉␉/* Help Identify RTIP packets */␊ |
280 | #define␉AF_IPX␉␉23␉␉/* Novell Internet Protocol */␊ |
281 | #define␉AF_SIP␉␉24␉␉/* Simple Internet Protocol */␊ |
282 | #define pseudo_AF_PIP␉25␉␉/* Help Identify PIP packets */␊ |
283 | #ifdef __APPLE__␊ |
284 | /*define pseudo_AF_BLUE␉26␉ Identify packets for Blue Box - Not used */␊ |
285 | #define AF_NDRV␉␉27␉␉/* Network Driver 'raw' access */␊ |
286 | #endif␊ |
287 | #define␉AF_ISDN␉␉28␉␉/* Integrated Services Digital Network*/␊ |
288 | #define␉AF_E164␉␉AF_ISDN␉␉/* CCITT E.164 recommendation */␊ |
289 | #define␉pseudo_AF_KEY␉29␉␉/* Internal key-management function */␊ |
290 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
291 | #define␉AF_INET6␉30␉␉/* IPv6 */␊ |
292 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
293 | #define␉AF_NATM␉␉31␉␉/* native ATM access */␊ |
294 | #ifdef __APPLE__␊ |
295 | #define AF_SYSTEM␉32␉␉/* Kernel event messages */␊ |
296 | #define AF_NETBIOS␉33␉␉/* NetBIOS */␊ |
297 | #define AF_PPP␉␉34␉␉/* PPP communication protocol */␊ |
298 | #else␊ |
299 | #define␉AF_ATM␉␉30␉␉/* ATM */␊ |
300 | #endif␊ |
301 | #define pseudo_AF_HDRCMPLT 35␉␉/* Used by BPF to not rewrite headers␊ |
302 | ␉␉␉␉␉ * in interface output routine␊ |
303 | ␉␉␉␉␉ */␊ |
304 | #define AF_RESERVED_36␉36␉␉/* Reserved for internal usage */␊ |
305 | ␊ |
306 | #ifndef __APPLE__␊ |
307 | #define␉AF_NETGRAPH␉32␉␉/* Netgraph sockets */␊ |
308 | #endif␊ |
309 | #define AF_IEEE80211 37 /* IEEE 802.11 protocol */␊ |
310 | #define␉AF_MAX␉␉38␊ |
311 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
312 | ␊ |
313 | /*␊ |
314 | * [XSI] Structure used by kernel to store most addresses.␊ |
315 | */␊ |
316 | struct sockaddr {␊ |
317 | ␉__uint8_t␉sa_len;␉␉/* total length */␊ |
318 | ␉sa_family_t␉sa_family;␉/* [XSI] address family */␊ |
319 | ␉char␉␉sa_data[14];␉/* [XSI] addr value (actually larger) */␊ |
320 | };␊ |
321 | ␊ |
322 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
323 | #define␉SOCK_MAXADDRLEN␉255␉␉/* longest possible addresses */␊ |
324 | ␊ |
325 | /*␊ |
326 | * Structure used by kernel to pass protocol␊ |
327 | * information in raw sockets.␊ |
328 | */␊ |
329 | struct sockproto {␊ |
330 | ␉__uint16_t␉sp_family;␉␉/* address family */␊ |
331 | ␉__uint16_t␉sp_protocol;␉␉/* protocol */␊ |
332 | };␊ |
333 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE)*/␊ |
334 | ␊ |
335 | /*␊ |
336 | * RFC 2553: protocol-independent placeholder for socket addresses␊ |
337 | */␊ |
338 | #define␉_SS_MAXSIZE␉128␊ |
339 | #define␉_SS_ALIGNSIZE␉(sizeof(__int64_t))␊ |
340 | #define␉_SS_PAD1SIZE␉\␊ |
341 | ␉␉(_SS_ALIGNSIZE - sizeof(__uint8_t) - sizeof(sa_family_t))␊ |
342 | #define␉_SS_PAD2SIZE␉\␊ |
343 | ␉␉(_SS_MAXSIZE - sizeof(__uint8_t) - sizeof(sa_family_t) - \␊ |
344 | ␉␉␉␉_SS_PAD1SIZE - _SS_ALIGNSIZE)␊ |
345 | ␊ |
346 | /*␊ |
347 | * [XSI] sockaddr_storage␊ |
348 | */␊ |
349 | struct sockaddr_storage {␊ |
350 | ␉__uint8_t␉ss_len;␉␉/* address length */␊ |
351 | ␉sa_family_t␉ss_family;␉/* [XSI] address family */␊ |
352 | ␉char␉␉␉__ss_pad1[_SS_PAD1SIZE];␊ |
353 | ␉__int64_t␉__ss_align;␉/* force structure storage alignment */␊ |
354 | ␉char␉␉␉__ss_pad2[_SS_PAD2SIZE];␊ |
355 | };␊ |
356 | ␊ |
357 | /*␊ |
358 | * Protocol families, same as address families for now.␊ |
359 | */␊ |
360 | #define␉PF_UNSPEC␉AF_UNSPEC␊ |
361 | #define␉PF_LOCAL␉AF_LOCAL␊ |
362 | #define␉PF_UNIX␉␉PF_LOCAL␉/* backward compatibility */␊ |
363 | #define␉PF_INET␉␉AF_INET␊ |
364 | #define␉PF_IMPLINK␉AF_IMPLINK␊ |
365 | #define␉PF_PUP␉␉AF_PUP␊ |
366 | #define␉PF_CHAOS␉AF_CHAOS␊ |
367 | #define␉PF_NS␉␉AF_NS␊ |
368 | #define␉PF_ISO␉␉AF_ISO␊ |
369 | #define␉PF_OSI␉␉AF_ISO␊ |
370 | #define␉PF_ECMA␉␉AF_ECMA␊ |
371 | #define␉PF_DATAKIT␉AF_DATAKIT␊ |
372 | #define␉PF_CCITT␉AF_CCITT␊ |
373 | #define␉PF_SNA␉␉AF_SNA␊ |
374 | #define PF_DECnet␉AF_DECnet␊ |
375 | #define PF_DLI␉␉AF_DLI␊ |
376 | #define PF_LAT␉␉AF_LAT␊ |
377 | #define␉PF_HYLINK␉AF_HYLINK␊ |
378 | #define␉PF_APPLETALK␉AF_APPLETALK␊ |
379 | #define␉PF_ROUTE␉AF_ROUTE␊ |
380 | #define␉PF_LINK␉␉AF_LINK␊ |
381 | #define␉PF_XTP␉␉pseudo_AF_XTP␉/* really just proto family, no AF */␊ |
382 | #define␉PF_COIP␉␉AF_COIP␊ |
383 | #define␉PF_CNT␉␉AF_CNT␊ |
384 | #define␉PF_SIP␉␉AF_SIP␊ |
385 | #define␉PF_IPX␉␉AF_IPX␉␉/* same format as AF_NS */␊ |
386 | #define PF_RTIP␉␉pseudo_AF_RTIP␉/* same format as AF_INET */␊ |
387 | #define PF_PIP␉␉pseudo_AF_PIP␊ |
388 | #ifdef __APPLE__␊ |
389 | #define PF_NDRV␉␉AF_NDRV␊ |
390 | #endif␊ |
391 | #define␉PF_ISDN␉␉AF_ISDN␊ |
392 | #define␉PF_KEY␉␉pseudo_AF_KEY␊ |
393 | #define␉PF_INET6␉AF_INET6␊ |
394 | #define␉PF_NATM␉␉AF_NATM␊ |
395 | #ifdef __APPLE__␊ |
396 | #define PF_SYSTEM␉AF_SYSTEM␊ |
397 | #define PF_NETBIOS␉AF_NETBIOS␊ |
398 | #define PF_PPP␉␉AF_PPP␊ |
399 | #define PF_RESERVED_36 AF_RESERVED_36␊ |
400 | ␊ |
401 | #else␊ |
402 | #define␉PF_ATM␉␉AF_ATM␊ |
403 | #define␉PF_NETGRAPH␉AF_NETGRAPH␊ |
404 | #endif␊ |
405 | ␊ |
406 | #define␉PF_MAX␉␉AF_MAX␊ |
407 | ␊ |
408 | /*␊ |
409 | * These do not have socket-layer support:␊ |
410 | */␊ |
411 | #define␉PF_VLAN␉␉((uint32_t)0x766c616e)␉/* 'vlan' */␊ |
412 | #define PF_BOND␉␉((uint32_t)0x626f6e64)␉/* 'bond' */␊ |
413 | ␊ |
414 | /*␊ |
415 | * Definitions for network related sysctl, CTL_NET.␊ |
416 | *␊ |
417 | * Second level is protocol family.␊ |
418 | * Third level is protocol number.␊ |
419 | *␊ |
420 | * Further levels are defined by the individual families below.␊ |
421 | */␊ |
422 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
423 | #define NET_MAXID␉AF_MAX␊ |
424 | #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */␊ |
425 | ␊ |
426 | ␊ |
427 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
428 | /*␊ |
429 | * PF_ROUTE - Routing table␊ |
430 | *␊ |
431 | * Three additional levels are defined:␊ |
432 | *␉Fourth: address family, 0 is wildcard␊ |
433 | *␉Fifth: type of info, defined below␊ |
434 | *␉Sixth: flag(s) to mask with for NET_RT_FLAGS␊ |
435 | */␊ |
436 | #define NET_RT_DUMP␉␉␉1␉␉/* dump; may limit to a.f. */␊ |
437 | #define NET_RT_FLAGS␉␉2␉␉/* by flags, e.g. RESOLVING */␊ |
438 | #define NET_RT_IFLIST␉␉3␉␉/* survey interface list */␊ |
439 | #define NET_RT_STAT␉␉␉4␉␉/* routing statistics */␊ |
440 | #define NET_RT_TRASH␉␉5␉␉/* routes not in table but not freed */␊ |
441 | #define NET_RT_IFLIST2␉6␉␉/* interface list with addresses */␊ |
442 | #define NET_RT_DUMP2 7 /* dump; may limit to a.f. */␊ |
443 | #define␉NET_RT_MAXID␉␉8␊ |
444 | #endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */␊ |
445 | ␊ |
446 | ␊ |
447 | /*␊ |
448 | * Maximum queue length specifiable by listen.␊ |
449 | */␊ |
450 | #define␉SOMAXCONN␉128␊ |
451 | ␊ |
452 | /*␊ |
453 | * [XSI] Message header for recvmsg and sendmsg calls.␊ |
454 | * Used value-result for recvmsg, value only for sendmsg.␊ |
455 | */␊ |
456 | struct msghdr {␊ |
457 | ␉void␉␉*msg_name;␉/* [XSI] optional address */␊ |
458 | ␉socklen_t␉msg_namelen;␉/* [XSI] size of address */␊ |
459 | ␉struct␉␉iovec *msg_iov;␉/* [XSI] scatter/gather array */␊ |
460 | ␉int␉␉msg_iovlen;␉/* [XSI] # elements in msg_iov */␊ |
461 | ␉void␉␉*msg_control;␉/* [XSI] ancillary data, see below */␊ |
462 | ␉socklen_t␉msg_controllen;␉/* [XSI] ancillary data buffer len */␊ |
463 | ␉int␉␉msg_flags;␉/* [XSI] flags on received message */␊ |
464 | };␊ |
465 | ␊ |
466 | ␊ |
467 | #define␉MSG_OOB␉␉0x1␉␉/* process out-of-band data */␊ |
468 | #define␉MSG_PEEK␉0x2␉␉/* peek at incoming message */␊ |
469 | #define␉MSG_DONTROUTE␉0x4␉␉/* send without using routing tables */␊ |
470 | #define␉MSG_EOR␉␉0x8␉␉/* data completes record */␊ |
471 | #define␉MSG_TRUNC␉0x10␉␉/* data discarded before delivery */␊ |
472 | #define␉MSG_CTRUNC␉0x20␉␉/* control data lost before delivery */␊ |
473 | #define␉MSG_WAITALL␉0x40␉␉/* wait for full request or error */␊ |
474 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
475 | #define␉MSG_DONTWAIT␉0x80␉␉/* this message should be nonblocking */␊ |
476 | #define␉MSG_EOF␉␉0x100␉␉/* data completes connection */␊ |
477 | #ifdef __APPLE__␊ |
478 | #define MSG_WAITSTREAM 0x200 /* wait up to full request.. may return partial */␊ |
479 | #define MSG_FLUSH␉0x400␉␉/* Start of 'hold' seq; dump so_temp */␊ |
480 | #define MSG_HOLD␉0x800␉␉/* Hold frag in so_temp */␊ |
481 | #define MSG_SEND␉0x1000␉␉/* Send the packet in so_temp */␊ |
482 | #define MSG_HAVEMORE␉0x2000␉␉/* Data ready to be read */␊ |
483 | #define MSG_RCVMORE␉0x4000␉␉/* Data remains in current pkt */␊ |
484 | #endif␊ |
485 | #define MSG_NEEDSA␉0x10000␉␉/* Fail receive if socket address cannot be allocated */␊ |
486 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
487 | ␊ |
488 | /*␊ |
489 | * Header for ancillary data objects in msg_control buffer.␊ |
490 | * Used for additional information with/about a datagram␊ |
491 | * not expressible by flags. The format is a sequence␊ |
492 | * of message elements headed by cmsghdr structures.␊ |
493 | */␊ |
494 | struct cmsghdr {␊ |
495 | ␉socklen_t␉cmsg_len;␉/* [XSI] data byte count, including hdr */␊ |
496 | ␉int␉␉cmsg_level;␉/* [XSI] originating protocol */␊ |
497 | ␉int␉␉cmsg_type;␉/* [XSI] protocol-specific type */␊ |
498 | /* followed by␉unsigned char cmsg_data[]; */␊ |
499 | };␊ |
500 | ␊ |
501 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
502 | #ifndef __APPLE__␊ |
503 | /*␊ |
504 | * While we may have more groups than this, the cmsgcred struct must␊ |
505 | * be able to fit in an mbuf, and NGROUPS_MAX is too large to allow␊ |
506 | * this.␊ |
507 | */␊ |
508 | #define CMGROUP_MAX 16␊ |
509 | ␊ |
510 | /*␊ |
511 | * Credentials structure, used to verify the identity of a peer␊ |
512 | * process that has sent us a message. This is allocated by the␊ |
513 | * peer process but filled in by the kernel. This prevents the␊ |
514 | * peer from lying about its identity. (Note that cmcred_groups[0]␊ |
515 | * is the effective GID.)␊ |
516 | */␊ |
517 | struct cmsgcred {␊ |
518 | ␉pid_t␉cmcred_pid;␉␉/* PID of sending process */␊ |
519 | ␉uid_t␉cmcred_uid;␉␉/* real UID of sending process */␊ |
520 | ␉uid_t␉cmcred_euid;␉␉/* effective UID of sending process */␊ |
521 | ␉gid_t␉cmcred_gid;␉␉/* real GID of sending process */␊ |
522 | ␉short␉cmcred_ngroups;␉␉/* number or groups */␊ |
523 | ␉gid_t␉cmcred_groups[CMGROUP_MAX];␉/* groups */␊ |
524 | };␊ |
525 | #endif␊ |
526 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
527 | ␊ |
528 | /* given pointer to struct cmsghdr, return pointer to data */␊ |
529 | #define␉CMSG_DATA(cmsg)␉␉((unsigned char *)(cmsg) + \␊ |
530 | ␉␉␉␉ __DARWIN_ALIGN32(sizeof(struct cmsghdr)))␊ |
531 | ␊ |
532 | /*␊ |
533 | * RFC 2292 requires to check msg_controllen, in case that the kernel returns␊ |
534 | * an empty list for some reasons.␊ |
535 | */␊ |
536 | #define CMSG_FIRSTHDR(mhdr) \␊ |
537 | ((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? \␊ |
538 | (struct cmsghdr *)(mhdr)->msg_control : \␊ |
539 | (struct cmsghdr *)0L)␊ |
540 | ␊ |
541 | ␊ |
542 | /* ␊ |
543 | * Given pointer to struct cmsghdr, return pointer to next cmsghdr␊ |
544 | * RFC 2292 says that CMSG_NXTHDR(mhdr, NULL) is equivalent to CMSG_FIRSTHDR(mhdr)␊ |
545 | */␊ |
546 | #define␉CMSG_NXTHDR(mhdr, cmsg)␉␉␉␉␉␉\␊ |
547 | ␉((char *)(cmsg) == (char *)0L ? CMSG_FIRSTHDR(mhdr) :␉␉\␊ |
548 | ␉ ((((unsigned char *)(cmsg) +␉␉␉␉␉\␊ |
549 | ␉ __DARWIN_ALIGN32((__uint32_t)(cmsg)->cmsg_len) +␉␉\␊ |
550 | ␉ __DARWIN_ALIGN32(sizeof(struct cmsghdr))) >␉␉␉\␊ |
551 | ␉ ((unsigned char *)(mhdr)->msg_control +␉␉␉\␊ |
552 | ␉ (mhdr)->msg_controllen)) ?␉␉␉␉␉\␊ |
553 | ␉ (struct cmsghdr *)0L /* NULL */ :␉␉␉␉\␊ |
554 | ␉ (struct cmsghdr *)((unsigned char *)(cmsg) +␉␉␉\␊ |
555 | ␉ ␉␉ __DARWIN_ALIGN32((__uint32_t)(cmsg)->cmsg_len))))␊ |
556 | ␊ |
557 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
558 | /* RFC 2292 additions */␊ |
559 | #define␉CMSG_SPACE(l)␉␉(__DARWIN_ALIGN32(sizeof(struct cmsghdr)) + __DARWIN_ALIGN32(l))␊ |
560 | #define␉CMSG_LEN(l)␉␉(__DARWIN_ALIGN32(sizeof(struct cmsghdr)) + (l))␊ |
561 | ␊ |
562 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
563 | ␊ |
564 | /* "Socket"-level control message types: */␊ |
565 | #define␉SCM_RIGHTS␉0x01␉␉/* access rights (array of int) */␊ |
566 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
567 | #define␉SCM_TIMESTAMP␉0x02␉␉/* timestamp (struct timeval) */␊ |
568 | #define␉SCM_CREDS␉0x03␉␉/* process creds (struct cmsgcred) */␊ |
569 | ␊ |
570 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
571 | ␊ |
572 | /*␊ |
573 | * howto arguments for shutdown(2), specified by Posix.1g.␊ |
574 | */␊ |
575 | #define␉SHUT_RD␉␉0␉␉/* shut down the reading side */␊ |
576 | #define␉SHUT_WR␉␉1␉␉/* shut down the writing side */␊ |
577 | #define␉SHUT_RDWR␉2␉␉/* shut down both sides */␊ |
578 | ␊ |
579 | #if !defined(_POSIX_C_SOURCE)␊ |
580 | /*␊ |
581 | * sendfile(2) header/trailer struct␊ |
582 | */␊ |
583 | struct sf_hdtr {␊ |
584 | ␉struct iovec *headers;␉/* pointer to an array of header struct iovec's */␊ |
585 | ␉int hdr_cnt;␉␉/* number of header iovec's */␊ |
586 | ␉struct iovec *trailers;␉/* pointer to an array of trailer struct iovec's */␊ |
587 | ␉int trl_cnt;␉␉/* number of trailer iovec's */␊ |
588 | };␊ |
589 | ␊ |
590 | ␊ |
591 | #endif␉/* !_POSIX_C_SOURCE */␊ |
592 | ␊ |
593 | __BEGIN_DECLS␊ |
594 | int␉accept(int, struct sockaddr * __restrict, socklen_t * __restrict)␊ |
595 | ␉␉__DARWIN_ALIAS_C(accept);␊ |
596 | int␉bind(int, const struct sockaddr *, socklen_t) __DARWIN_ALIAS(bind);␊ |
597 | int␉connect(int, const struct sockaddr *, socklen_t) __DARWIN_ALIAS_C( connect);␊ |
598 | int␉getpeername(int, struct sockaddr * __restrict, socklen_t * __restrict)␊ |
599 | ␉␉__DARWIN_ALIAS(getpeername);␊ |
600 | int␉getsockname(int, struct sockaddr * __restrict, socklen_t * __restrict)␊ |
601 | ␉␉__DARWIN_ALIAS(getsockname);␊ |
602 | int␉getsockopt(int, int, int, void * __restrict, socklen_t * __restrict);␊ |
603 | int␉listen(int, int) __DARWIN_ALIAS(listen);␊ |
604 | ssize_t␉recv(int, void *, size_t, int) __DARWIN_ALIAS_C(recv);␊ |
605 | ssize_t␉recvfrom(int, void *, size_t, int, struct sockaddr * __restrict,␊ |
606 | ␉␉socklen_t * __restrict) __DARWIN_ALIAS_C(recvfrom);␊ |
607 | ssize_t␉recvmsg(int, struct msghdr *, int) __DARWIN_ALIAS_C(recvmsg);␊ |
608 | ssize_t␉send(int, const void *, size_t, int) __DARWIN_ALIAS_C(send);␊ |
609 | ssize_t␉sendmsg(int, const struct msghdr *, int) __DARWIN_ALIAS_C(sendmsg);␊ |
610 | ssize_t␉sendto(int, const void *, size_t,␊ |
611 | ␉␉int, const struct sockaddr *, socklen_t) __DARWIN_ALIAS_C(sendto);␊ |
612 | int␉setsockopt(int, int, int, const void *, socklen_t);␊ |
613 | int␉shutdown(int, int);␊ |
614 | int␉sockatmark(int);␊ |
615 | int␉socket(int, int, int);␊ |
616 | int␉socketpair(int, int, int, int *) __DARWIN_ALIAS(socketpair);␊ |
617 | ␊ |
618 | #if !defined(_POSIX_C_SOURCE)␊ |
619 | int␉sendfile(int, int, off_t, off_t *, struct sf_hdtr *, int);␊ |
620 | #endif␉/* !_POSIX_C_SOURCE */␊ |
621 | ␊ |
622 | #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)␊ |
623 | void␉pfctlinput(int, struct sockaddr *);␊ |
624 | #endif␉/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */␊ |
625 | __END_DECLS␊ |
626 | ␊ |
627 | ␊ |
628 | ␊ |
629 | #endif /* !_SYS_SOCKET_H_ */␊ |
630 |