2  * Copyright (c) 2000-2002 Apple Computer, Inc. All rights reserved. 
   4  * @APPLE_LICENSE_HEADER_START@ 
   6  * The contents of this file constitute Original Code as defined in and 
   7  * are subject to the Apple Public Source License Version 1.1 (the 
   8  * "License").  You may not use this file except in compliance with the 
   9  * License.  Please obtain a copy of the License at 
  10  * http://www.apple.com/publicsource and read it before using this file. 
  12  * This Original Code and all software distributed under the License are 
  13  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  14  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  15  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  16  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the 
  17  * License for the specific language governing rights and limitations 
  20  * @APPLE_LICENSE_HEADER_END@ 
  22 /* Copyright (c) 1998, 1999 Apple Computer, Inc. All Rights Reserved */ 
  23 /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */ 
  25  * Copyright (c) 1982, 1985, 1986, 1988, 1993, 1994 
  26  *      The Regents of the University of California.  All rights reserved. 
  28  * Redistribution and use in source and binary forms, with or without 
  29  * modification, are permitted provided that the following conditions 
  31  * 1. Redistributions of source code must retain the above copyright 
  32  *    notice, this list of conditions and the following disclaimer. 
  33  * 2. Redistributions in binary form must reproduce the above copyright 
  34  *    notice, this list of conditions and the following disclaimer in the 
  35  *    documentation and/or other materials provided with the distribution. 
  36  * 3. All advertising materials mentioning features or use of this software 
  37  *    must display the following acknowledgement: 
  38  *      This product includes software developed by the University of 
  39  *      California, Berkeley and its contributors. 
  40  * 4. Neither the name of the University nor the names of its contributors 
  41  *    may be used to endorse or promote products derived from this software 
  42  *    without specific prior written permission. 
  44  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 
  45  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
  46  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
  47  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 
  48  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
  49  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
  50  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
  51  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
  52  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
  53  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
  56  *      @(#)socket.h    8.4 (Berkeley) 2/21/94 
  57  * $FreeBSD: src/sys/sys/socket.h,v 1.39.2.7 2001/07/03 11:02:01 ume Exp $ 
  60 #ifndef _SYS_SOCKET_H_ 
  61 #define _SYS_SOCKET_H_ 
  64 #include <machine/ansi.h> 
  66 #define _NO_NAMESPACE_POLLUTION 
  67 #include <machine/param.h> 
  68 #undef _NO_NAMESPACE_POLLUTION 
  71  * Definitions related to sockets: types, address families, options. 
  77 typedef u_char          sa_family_t
; 
  78 #ifdef  _BSD_SOCKLEN_T_ 
  79 typedef _BSD_SOCKLEN_T_ socklen_t
; 
  80 #undef  _BSD_SOCKLEN_T_ 
  86 #define SOCK_STREAM     1               /* stream socket */ 
  87 #define SOCK_DGRAM      2               /* datagram socket */ 
  88 #define SOCK_RAW        3               /* raw-protocol interface */ 
  89 #define SOCK_RDM        4               /* reliably-delivered message */ 
  90 #define SOCK_SEQPACKET  5               /* sequenced packet stream */ 
  93  * Option flags per-socket. 
  95 #define SO_DEBUG        0x0001          /* turn on debugging info recording */ 
  96 #define SO_ACCEPTCONN   0x0002          /* socket has had listen() */ 
  97 #define SO_REUSEADDR    0x0004          /* allow local address reuse */ 
  98 #define SO_KEEPALIVE    0x0008          /* keep connections alive */ 
  99 #define SO_DONTROUTE    0x0010          /* just use interface addresses */ 
 100 #define SO_BROADCAST    0x0020          /* permit sending of broadcast msgs */ 
 101 #define SO_USELOOPBACK  0x0040          /* bypass hardware when possible */ 
 102 #define SO_LINGER       0x0080          /* linger on close if data present */ 
 103 #define SO_OOBINLINE    0x0100          /* leave received OOB data in line */ 
 104 #define SO_REUSEPORT    0x0200          /* allow local address & port reuse */ 
 105 #define SO_TIMESTAMP    0x0400          /* timestamp received dgram traffic */ 
 107 #define SO_ACCEPTFILTER 0x1000          /* there is an accept filter */ 
 109 #define SO_DONTTRUNC    0x2000          /* APPLE: Retain unread data */ 
 111 #define SO_WANTMORE             0x4000          /* APPLE: Give hint when more data ready */ 
 112 #define SO_WANTOOBFLAG  0x8000          /* APPLE: Want OOB in MSG_FLAG on receive */ 
 116  * Additional options, not kept in so_options. 
 118 #define SO_SNDBUF       0x1001          /* send buffer size */ 
 119 #define SO_RCVBUF       0x1002          /* receive buffer size */ 
 120 #define SO_SNDLOWAT     0x1003          /* send low-water mark */ 
 121 #define SO_RCVLOWAT     0x1004          /* receive low-water mark */ 
 122 #define SO_SNDTIMEO     0x1005          /* send timeout */ 
 123 #define SO_RCVTIMEO     0x1006          /* receive timeout */ 
 124 #define SO_ERROR        0x1007          /* get error status and clear */ 
 125 #define SO_TYPE         0x1008          /* get socket type */ 
 126 /*efine SO_PRIVSTATE    0x1009             get/deny privileged state */ 
 128 #define SO_NREAD        0x1020          /* APPLE: get 1st-packet byte count */ 
 129 #define SO_NKE          0x1021          /* APPLE: Install socket-level NKE */ 
 130 #define SO_NOSIGPIPE    0x1022          /* APPLE: No SIGPIPE on EPIPE */ 
 133  * Structure used for manipulating linger option. 
 136         int     l_onoff
;                /* option on/off */ 
 137         int     l_linger
;               /* linger time */ 
 141 struct  accept_filter_arg 
{ 
 148  * Level number for (get/set)sockopt() to apply to socket itself. 
 150 #define SOL_SOCKET      0xffff          /* options for socket level */ 
 155 #define AF_UNSPEC       0               /* unspecified */ 
 156 #define AF_LOCAL        1               /* local to host (pipes) */ 
 157 #define AF_UNIX         AF_LOCAL        /* backward compatibility */ 
 158 #define AF_INET         2               /* internetwork: UDP, TCP, etc. */ 
 159 #define AF_IMPLINK      3               /* arpanet imp addresses */ 
 160 #define AF_PUP          4               /* pup protocols: e.g. BSP */ 
 161 #define AF_CHAOS        5               /* mit CHAOS protocols */ 
 162 #define AF_NS           6               /* XEROX NS protocols */ 
 163 #define AF_ISO          7               /* ISO protocols */ 
 164 #define AF_OSI          AF_ISO 
 165 #define AF_ECMA         8               /* European computer manufacturers */ 
 166 #define AF_DATAKIT      9               /* datakit protocols */ 
 167 #define AF_CCITT        10              /* CCITT protocols, X.25 etc */ 
 168 #define AF_SNA          11              /* IBM SNA */ 
 169 #define AF_DECnet       12              /* DECnet */ 
 170 #define AF_DLI          13              /* DEC Direct data link interface */ 
 171 #define AF_LAT          14              /* LAT */ 
 172 #define AF_HYLINK       15              /* NSC Hyperchannel */ 
 173 #define AF_APPLETALK    16              /* Apple Talk */ 
 174 #define AF_ROUTE        17              /* Internal Routing Protocol */ 
 175 #define AF_LINK         18              /* Link layer interface */ 
 176 #define pseudo_AF_XTP   19              /* eXpress Transfer Protocol (no AF) */ 
 177 #define AF_COIP         20              /* connection-oriented IP, aka ST II */ 
 178 #define AF_CNT          21              /* Computer Network Technology */ 
 179 #define pseudo_AF_RTIP  22              /* Help Identify RTIP packets */ 
 180 #define AF_IPX          23              /* Novell Internet Protocol */ 
 181 #define AF_SIP          24              /* Simple Internet Protocol */ 
 182 #define pseudo_AF_PIP   25              /* Help Identify PIP packets */ 
 184 /*define pseudo_AF_BLUE 26         Identify packets for Blue Box - Not used */ 
 185 #define AF_NDRV         27              /* Network Driver 'raw' access */ 
 187 #define AF_ISDN         28              /* Integrated Services Digital Network*/ 
 188 #define AF_E164         AF_ISDN         /* CCITT E.164 recommendation */ 
 189 #define pseudo_AF_KEY   29              /* Internal key-management function */ 
 190 #define AF_INET6        30              /* IPv6 */ 
 191 #define AF_NATM         31              /* native ATM access */ 
 193 #define AF_SYSTEM       32              /* Kernel event messages */ 
 194 #define AF_NETBIOS      33              /* NetBIOS */ 
 195 #define AF_PPP          34              /* PPP communication protocol */ 
 197 #define AF_ATM          30              /* ATM */ 
 199 #define pseudo_AF_HDRCMPLT 35           /* Used by BPF to not rewrite headers 
 200                                          * in interface output routine 
 203 #define AF_NETGRAPH     32              /* Netgraph sockets */ 
 208  * Structure used by kernel to store most 
 212         u_char  sa_len
;                 /* total length */ 
 213         u_char  sa_family
;              /* address family */ 
 214         char            sa_data
[14];            /* actually longer; address value */ 
 216 #define SOCK_MAXADDRLEN 255             /* longest possible addresses */ 
 219  * Structure used by kernel to pass protocol 
 220  * information in raw sockets. 
 223         u_short sp_family
;              /* address family */ 
 224         u_short sp_protocol
;            /* protocol */ 
 228  * RFC 2553: protocol-independent placeholder for socket addresses 
 230 #define _SS_MAXSIZE     128 
 231 #define _SS_ALIGNSIZE   (sizeof(int64_t)) 
 232 #define _SS_PAD1SIZE    (_SS_ALIGNSIZE - sizeof(u_char) - sizeof(sa_family_t)) 
 233 #define _SS_PAD2SIZE    (_SS_MAXSIZE - sizeof(u_char) - sizeof(sa_family_t) - \ 
 234                                 _SS_PAD1SIZE - _SS_ALIGNSIZE) 
 236 struct sockaddr_storage 
{ 
 237         u_char          ss_len
;         /* address length */ 
 238         sa_family_t     ss_family
;      /* address family */ 
 239         char                    __ss_pad1
[_SS_PAD1SIZE
]; 
 240         int64_t         __ss_align
;     /* force desired structure storage alignment */ 
 241         char                    __ss_pad2
[_SS_PAD2SIZE
]; 
 245  * Protocol families, same as address families for now. 
 247 #define PF_UNSPEC       AF_UNSPEC 
 248 #define PF_LOCAL        AF_LOCAL 
 249 #define PF_UNIX         PF_LOCAL        /* backward compatibility */ 
 250 #define PF_INET         AF_INET 
 251 #define PF_IMPLINK      AF_IMPLINK 
 252 #define PF_PUP          AF_PUP 
 253 #define PF_CHAOS        AF_CHAOS 
 255 #define PF_ISO          AF_ISO 
 256 #define PF_OSI          AF_ISO 
 257 #define PF_ECMA         AF_ECMA 
 258 #define PF_DATAKIT      AF_DATAKIT 
 259 #define PF_CCITT        AF_CCITT 
 260 #define PF_SNA          AF_SNA 
 261 #define PF_DECnet       AF_DECnet 
 262 #define PF_DLI          AF_DLI 
 263 #define PF_LAT          AF_LAT 
 264 #define PF_HYLINK       AF_HYLINK 
 265 #define PF_APPLETALK    AF_APPLETALK 
 266 #define PF_ROUTE        AF_ROUTE 
 267 #define PF_LINK         AF_LINK 
 268 #define PF_XTP          pseudo_AF_XTP   /* really just proto family, no AF */ 
 269 #define PF_COIP         AF_COIP 
 270 #define PF_CNT          AF_CNT 
 271 #define PF_SIP          AF_SIP 
 272 #define PF_IPX          AF_IPX          /* same format as AF_NS */ 
 273 #define PF_RTIP         pseudo_AF_RTIP  /* same format as AF_INET */ 
 274 #define PF_PIP          pseudo_AF_PIP 
 276 #define PF_NDRV         AF_NDRV 
 278 #define PF_ISDN         AF_ISDN 
 279 #define PF_KEY          pseudo_AF_KEY 
 280 #define PF_INET6        AF_INET6 
 281 #define PF_NATM         AF_NATM 
 283 #define PF_SYSTEM       AF_SYSTEM 
 284 #define PF_NETBIOS      AF_NETBIOS 
 285 #define PF_PPP          AF_PPP 
 287 #define PF_ATM          AF_ATM 
 288 #define PF_NETGRAPH     AF_NETGRAPH 
 291 #define PF_MAX          AF_MAX 
 294  * Definitions for network related sysctl, CTL_NET. 
 296  * Second level is protocol family. 
 297  * Third level is protocol number. 
 299  * Further levels are defined by the individual families below. 
 301 #define NET_MAXID       AF_MAX 
 303 #define CTL_NET_NAMES { \ 
 305         { "local", CTLTYPE_NODE }, \ 
 306         { "inet", CTLTYPE_NODE }, \ 
 307         { "implink", CTLTYPE_NODE }, \ 
 308         { "pup", CTLTYPE_NODE }, \ 
 309         { "chaos", CTLTYPE_NODE }, \ 
 310         { "xerox_ns", CTLTYPE_NODE }, \ 
 311         { "iso", CTLTYPE_NODE }, \ 
 312         { "emca", CTLTYPE_NODE }, \ 
 313         { "datakit", CTLTYPE_NODE }, \ 
 314         { "ccitt", CTLTYPE_NODE }, \ 
 315         { "ibm_sna", CTLTYPE_NODE }, \ 
 316         { "decnet", CTLTYPE_NODE }, \ 
 317         { "dec_dli", CTLTYPE_NODE }, \ 
 318         { "lat", CTLTYPE_NODE }, \ 
 319         { "hylink", CTLTYPE_NODE }, \ 
 320         { "appletalk", CTLTYPE_NODE }, \ 
 321         { "route", CTLTYPE_NODE }, \ 
 322         { "link_layer", CTLTYPE_NODE }, \ 
 323         { "xtp", CTLTYPE_NODE }, \ 
 324         { "coip", CTLTYPE_NODE }, \ 
 325         { "cnt", CTLTYPE_NODE }, \ 
 326         { "rtip", CTLTYPE_NODE }, \ 
 327         { "ipx", CTLTYPE_NODE }, \ 
 328         { "sip", CTLTYPE_NODE }, \ 
 329         { "pip", CTLTYPE_NODE }, \ 
 331         { "ndrv", CTLTYPE_NODE }, \ 
 332         { "isdn", CTLTYPE_NODE }, \ 
 333         { "key", CTLTYPE_NODE }, \ 
 334         { "inet6", CTLTYPE_NODE }, \ 
 335         { "natm", CTLTYPE_NODE }, \ 
 336         { "sys", CTLTYPE_NODE }, \ 
 337         { "netbios", CTLTYPE_NODE }, \ 
 338         { "ppp", CTLTYPE_NODE }, \ 
 339         { "hdrcomplete", CTLTYPE_NODE }, \ 
 343  * PF_ROUTE - Routing table 
 345  * Three additional levels are defined: 
 346  *      Fourth: address family, 0 is wildcard 
 347  *      Fifth: type of info, defined below 
 348  *      Sixth: flag(s) to mask with for NET_RT_FLAGS 
 350 #define NET_RT_DUMP     1               /* dump; may limit to a.f. */ 
 351 #define NET_RT_FLAGS    2               /* by flags, e.g. RESOLVING */ 
 352 #define NET_RT_IFLIST   3               /* survey interface list */ 
 353 #define NET_RT_MAXID    4 
 355 #define CTL_NET_RT_NAMES { \ 
 357         { "dump", CTLTYPE_STRUCT }, \ 
 358         { "flags", CTLTYPE_STRUCT }, \ 
 359         { "iflist", CTLTYPE_STRUCT }, \ 
 363  * Maximum queue length specifiable by listen. 
 365 #define SOMAXCONN       128 
 368  * Message header for recvmsg and sendmsg calls. 
 369  * Used value-result for recvmsg, value only for sendmsg. 
 372         caddr_t msg_name
;               /* optional address */ 
 373         u_int   msg_namelen
;            /* size of address */ 
 374         struct  iovec 
*msg_iov
;         /* scatter/gather array */ 
 375         u_int   msg_iovlen
;             /* # elements in msg_iov */ 
 376         caddr_t msg_control
;            /* ancillary data, see below */ 
 377         u_int   msg_controllen
;         /* ancillary data buffer len */ 
 378         int     msg_flags
;              /* flags on received message */ 
 381 #define MSG_OOB         0x1             /* process out-of-band data */ 
 382 #define MSG_PEEK        0x2             /* peek at incoming message */ 
 383 #define MSG_DONTROUTE   0x4             /* send without using routing tables */ 
 384 #define MSG_EOR         0x8             /* data completes record */ 
 385 #define MSG_TRUNC       0x10            /* data discarded before delivery */ 
 386 #define MSG_CTRUNC      0x20            /* control data lost before delivery */ 
 387 #define MSG_WAITALL     0x40            /* wait for full request or error */ 
 388 #define MSG_DONTWAIT    0x80            /* this message should be nonblocking */ 
 389 #define MSG_EOF         0x100           /* data completes connection */ 
 391 #define MSG_FLUSH       0x400           /* Start of 'hold' seq; dump so_temp */ 
 392 #define MSG_HOLD        0x800           /* Hold frag in so_temp */ 
 393 #define MSG_SEND        0x1000          /* Send the packet in so_temp */ 
 394 #define MSG_HAVEMORE    0x2000          /* Data ready to be read */ 
 395 #define MSG_RCVMORE     0x4000          /* Data remains in current pkt */ 
 397 #define MSG_COMPAT      0x8000          /* used in sendit() */ 
 400  * Header for ancillary data objects in msg_control buffer. 
 401  * Used for additional information with/about a datagram 
 402  * not expressible by flags.  The format is a sequence 
 403  * of message elements headed by cmsghdr structures. 
 406         u_int   cmsg_len
;               /* data byte count, including hdr */ 
 407         int     cmsg_level
;             /* originating protocol */ 
 408         int     cmsg_type
;              /* protocol-specific type */ 
 409 /* followed by  u_char  cmsg_data[]; */ 
 414  * While we may have more groups than this, the cmsgcred struct must 
 415  * be able to fit in an mbuf, and NGROUPS_MAX is too large to allow 
 418 #define CMGROUP_MAX 16 
 421  * Credentials structure, used to verify the identity of a peer 
 422  * process that has sent us a message. This is allocated by the 
 423  * peer process but filled in by the kernel. This prevents the 
 424  * peer from lying about its identity. (Note that cmcred_groups[0] 
 425  * is the effective GID.) 
 428         pid_t   cmcred_pid
;             /* PID of sending process */ 
 429         uid_t   cmcred_uid
;             /* real UID of sending process */ 
 430         uid_t   cmcred_euid
;            /* effective UID of sending process */ 
 431         gid_t   cmcred_gid
;             /* real GID of sending process */ 
 432         short   cmcred_ngroups
;         /* number or groups */ 
 433         gid_t   cmcred_groups
[CMGROUP_MAX
];     /* groups */ 
 437 /* given pointer to struct cmsghdr, return pointer to data */ 
 438 #define CMSG_DATA(cmsg)         ((u_char *)(cmsg) + \ 
 439                                  ALIGN(sizeof(struct cmsghdr))) 
 441 /* given pointer to struct cmsghdr, return pointer to next cmsghdr */ 
 442 #define CMSG_NXTHDR(mhdr, cmsg) \ 
 443         (((caddr_t)(cmsg) + ALIGN((cmsg)->cmsg_len) + \ 
 444           ALIGN(sizeof(struct cmsghdr)) > \ 
 445             (caddr_t)(mhdr)->msg_control + (mhdr)->msg_controllen) ? \ 
 446             (struct cmsghdr *)NULL : \ 
 447             (struct cmsghdr *)((caddr_t)(cmsg) + ALIGN((cmsg)->cmsg_len))) 
 449 #define CMSG_FIRSTHDR(mhdr)     ((struct cmsghdr *)(mhdr)->msg_control) 
 451 /* RFC 2292 additions */ 
 453 #define CMSG_SPACE(l)           (ALIGN(sizeof(struct cmsghdr)) + ALIGN(l)) 
 454 #define CMSG_LEN(l)             (ALIGN(sizeof(struct cmsghdr)) + (l)) 
 457 #define CMSG_ALIGN(n)   ALIGN(n) 
 460 /* "Socket"-level control message types: */ 
 461 #define SCM_RIGHTS      0x01            /* access rights (array of int) */ 
 462 #define SCM_TIMESTAMP   0x02            /* timestamp (struct timeval) */ 
 463 #define SCM_CREDS       0x03            /* process creds (struct cmsgcred) */ 
 466  * 4.3 compat sockaddr, move to compat file later 
 469         u_short sa_family
;              /* address family */ 
 470         char    sa_data
[14];            /* up to 14 bytes of direct address */ 
 474  * 4.3-compat message header (move to compat file later). 
 477         caddr_t msg_name
;               /* optional address */ 
 478         int     msg_namelen
;            /* size of address */ 
 479         struct  iovec 
*msg_iov
;         /* scatter/gather array */ 
 480         int     msg_iovlen
;             /* # elements in msg_iov */ 
 481         caddr_t msg_accrights
;          /* access rights sent/received */ 
 482         int     msg_accrightslen
; 
 486  * howto arguments for shutdown(2), specified by Posix.1g. 
 488 #define SHUT_RD         0               /* shut down the reading side */ 
 489 #define SHUT_WR         1               /* shut down the writing side */ 
 490 #define SHUT_RDWR       2               /* shut down both sides */ 
 494  * sendfile(2) header/trailer struct 
 497         struct iovec 
*headers
;  /* pointer to an array of header struct iovec's */ 
 498         int hdr_cnt
;            /* number of header iovec's */ 
 499         struct iovec 
*trailers
; /* pointer to an array of trailer struct iovec's */ 
 500         int trl_cnt
;            /* number of trailer iovec's */ 
 506 #include <sys/cdefs.h> 
 509 int     accept 
__P((int, struct sockaddr 
*, int *)); 
 510 int     bind 
__P((int, const struct sockaddr 
*, int)); 
 511 int     connect 
__P((int, const struct sockaddr 
*, int)); 
 512 int     getpeername 
__P((int, struct sockaddr 
*, int *)); 
 513 int     getsockname 
__P((int, struct sockaddr 
*, int *)); 
 514 int     getsockopt 
__P((int, int, int, void *, int *)); 
 515 int     listen 
__P((int, int)); 
 516 ssize_t recv 
__P((int, void *, size_t, int)); 
 517 ssize_t recvfrom 
__P((int, void *, size_t, int, struct sockaddr 
*, int *)); 
 518 ssize_t recvmsg 
__P((int, struct msghdr 
*, int)); 
 519 ssize_t send 
__P((int, const void *, size_t, int)); 
 520 ssize_t sendto 
__P((int, const void *, 
 521             size_t, int, const struct sockaddr 
*, int)); 
 522 ssize_t sendmsg 
__P((int, const struct msghdr 
*, int)); 
 524 int     sendfile 
__P((int, int, off_t
, size_t, struct sf_hdtr 
*, off_t 
*, int)); 
 526 int     setsockopt 
__P((int, int, int, const void *, int)); 
 527 int     shutdown 
__P((int, int)); 
 528 int     socket 
__P((int, int, int)); 
 529 int     socketpair 
__P((int, int, int, int *)); 
 531 void    pfctlinput 
__P((int, struct sockaddr 
*)); 
 536 #endif /* !_SYS_SOCKET_H_ */