#include <sys/socket.h>
sys/socket.h
macroSO_TIMESTAMP_MONOTONIC
#define SO_TIMESTAMP_MONOTONIC 0x0800
Monotonically increasing timestamp on rcvd dgram
macroSO_NOADDRERR
#define SO_NOADDRERR 0x1023
APPLE: Returns EADDRNOTAVAIL when src is not available anymore
macroSO_REUSESHAREUID
#define SO_REUSESHAREUID 0x1025
APPLE: Allow reuse of port/socket by different userids
macroSO_NOTIFYCONFLICT
#define SO_NOTIFYCONFLICT 0x1026
APPLE: send notification if there is a bind on a port which is already in use
macroSO_UPCALLCLOSEWAIT
#define SO_UPCALLCLOSEWAIT 0x1027
APPLE: block on close until an upcall returns
macroSO_NETSVC_MARKING_LEVEL
#define SO_NETSVC_MARKING_LEVEL 0x1119
Get QoS marking in effect for socket
macroSO_RESOLVER_SIGNATURE
#define SO_RESOLVER_SIGNATURE 0x1131
A signed data blob from the system resolver
macroSO_BINDTODEVICE
#define SO_BINDTODEVICE 0x1134
bind socket to a network device (max valid option length IFNAMSIZ)
macroNETSVC_MRKNG_UNKNOWN
These are supported values for SO_NETSVC_MARKING_LEVEL
#define NETSVC_MRKNG_UNKNOWN 0
The outgoing network interface is not known
macroNETSVC_MRKNG_LVL_L2
#define NETSVC_MRKNG_LVL_L2 1
Default marking at layer 2 (for example Wi-Fi WMM)
macroNETSVC_MRKNG_LVL_L3L2_ALL
#define NETSVC_MRKNG_LVL_L3L2_ALL 2
Layer 3 DSCP marking and layer 2 marking for all Network Service Types
macroNETSVC_MRKNG_LVL_L3L2_BK
#define NETSVC_MRKNG_LVL_L3L2_BK 3
The system policy limits layer 3 DSCP marking and layer 2 marking
to background Network Service Types
typedefsae_associd_t
typedef __uint32_t sae_associd_t
macroSAE_ASSOCID_ANY
#define SAE_ASSOCID_ANY 0
macroSAE_ASSOCID_ALL
#define SAE_ASSOCID_ALL ((sae_associd_t)(-1ULL))
typedefsae_connid_t
typedef __uint32_t sae_connid_t
macroSAE_CONNID_ANY
#define SAE_CONNID_ANY 0
macroSAE_CONNID_ALL
#define SAE_CONNID_ALL ((sae_connid_t)(-1ULL))
macroCONNECT_RESUME_ON_READ_WRITE
connectx() flag parameters
#define CONNECT_RESUME_ON_READ_WRITE 0x1
resume connect() on read/write
macroCONNECT_DATA_AUTHENTICATED
#define CONNECT_DATA_AUTHENTICATED 0x4
data includes security that replaces the TFO-cookie
structsa_endpoints
sockaddr endpoints
| unsigned int | sae_srcif | optional source interface |
| const struct sockaddr * | sae_srcaddr | optional source address |
| socklen_t | sae_srcaddrlen | size of source address |
| const struct sockaddr * | sae_dstaddr | destination address |
| socklen_t | sae_dstaddrlen | size of destination address |
typedefsa_endpoints_t
typedef struct sa_endpoints sa_endpoints_t;
structlinger
Structure used for manipulating linger option.
| int | l_onoff | option on/off |
| int | l_linger | linger time |
structso_np_extensions
Structure to control non-portable Sockets extension to POSIX
| u_int32_t | npx_flags | |
| u_int32_t | npx_mask |
macroSONPX_SETOPTSHUT
#define SONPX_SETOPTSHUT 0x000000001
flag for allowing setsockopt after shutdown
macroSOL_SOCKET
Level number for (get/set)sockopt() to apply to socket itself.
#define SOL_SOCKET 0xffff
options for socket level
macropseudo_AF_HDRCMPLT
#define pseudo_AF_HDRCMPLT 35
Used by BPF to not rewrite headers
in interface output routine
macroAF_UTUN
#define AF_UTUN 38
macroAF_MAX
#define AF_MAX 41
structsockaddr
[XSI] Structure used by kernel to store most addresses.
| __uint8_t | sa_len | total length |
| sa_family_t | sa_family | [XSI] address family |
| char[14] | sa_data | [XSI] addr value |
struct__sockaddr_header
Least amount of information that a sockaddr requires.
Sockaddr_header is a compatible prefix structure of
all sockaddr objects.
| __uint8_t | sa_len | |
| sa_family_t | sa_family |
structsockproto
Structure used by kernel to pass protocol
information in raw sockets.
| __uint16_t | sp_family | address family |
| __uint16_t | sp_protocol | protocol |
macro_SS_MAXSIZE
RFC 2553: protocol-independent placeholder for socket addresses
#define _SS_MAXSIZE 128
macro_SS_ALIGNSIZE
#define _SS_ALIGNSIZE (sizeof(__int64_t))
macro_SS_PAD1SIZE
#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(__uint8_t) - sizeof(sa_family_t))
macro_SS_PAD2SIZE
#define _SS_PAD2SIZE (_SS_MAXSIZE - sizeof(__uint8_t) - sizeof(sa_family_t) - _SS_PAD1SIZE - _SS_ALIGNSIZE)
structsockaddr_storage
[XSI] sockaddr_storage
| __uint8_t | ss_len | address length |
| sa_family_t | ss_family | [XSI] address family |
| char[6] | __ss_pad1 | |
| __int64_t | __ss_align | force structure storage alignment |
| char[112] | __ss_pad2 |
macroPF_IMPLINK
#define PF_IMPLINK AF_IMPLINK
macroPF_DATAKIT
#define PF_DATAKIT AF_DATAKIT
macroPF_APPLETALK
#define PF_APPLETALK AF_APPLETALK
macroPF_PIP
#define PF_PIP pseudo_AF_PIP
macroPF_KEY
#define PF_KEY pseudo_AF_KEY
macroPF_NETBIOS
#define PF_NETBIOS AF_NETBIOS
macroPF_RESERVED_36
#define PF_RESERVED_36 AF_RESERVED_36
macroNET_MAXID
Definitions for network related sysctl, CTL_NET.
Second level is protocol family.
Third level is protocol number.
Further levels are defined by the individual families below.
#define NET_MAXID AF_MAX
macroNET_RT_DUMP
PF_ROUTE - Routing table
Three additional levels are defined:
Fourth: address family, 0 is wildcard
Fifth: type of info, defined below
Sixth: flag(s) to mask with for NET_RT_FLAGS
#define NET_RT_DUMP 1
dump; may limit to a.f.
macroNET_RT_FLAGS_PRIV
Allows read access non-local host's MAC address
if the process has neighbor cache entitlement.
#define NET_RT_FLAGS_PRIV 10
macroNET_RT_MAXID
#define NET_RT_MAXID 11
structmsghdr
[XSI] Message header for recvmsg and sendmsg calls.
Used value-result for recvmsg, value only for sendmsg.
| void * | msg_name | [XSI] optional address |
| socklen_t | msg_namelen | [XSI] size of address |
| struct iovec * | msg_iov | [XSI] scatter/gather array |
| int | msg_iovlen | [XSI] # elements in msg_iov |
| void * | msg_control | [XSI] ancillary data, see below |
| socklen_t | msg_controllen | [XSI] ancillary data buffer len |
| int | msg_flags | [XSI] flags on received message |
structcmsghdr
Header for ancillary data objects in msg_control buffer.
Used for additional information with/about a datagram
not expressible by flags. The format is a sequence
of message elements headed by cmsghdr structures.
| socklen_t | cmsg_len | [XSI] data byte count, including hdr |
| int | cmsg_level | [XSI] originating protocol |
| int | cmsg_type | [XSI] protocol-specific type |
macroCMSG_DATA
given pointer to struct cmsghdr, return pointer to data
#define CMSG_DATA(cmsg) ((unsigned char *)(cmsg) + __DARWIN_ALIGN32(sizeof(struct cmsghdr)))
macroCMSG_FIRSTHDR
RFC 2292 requires to check msg_controllen, in case that the kernel returns
an empty list for some reasons.
#define CMSG_FIRSTHDR(mhdr) ((mhdr)->msg_controllen >= sizeof(struct cmsghdr) ? (struct cmsghdr *)(mhdr)->msg_control : (struct cmsghdr *)0L)
macroCMSG_NXTHDR
Given pointer to struct cmsghdr, return pointer to next cmsghdr
RFC 2292 says that CMSG_NXTHDR(mhdr, NULL) is equivalent to CMSG_FIRSTHDR(mhdr)
#define CMSG_NXTHDR(mhdr, cmsg) ((char *)(cmsg) == (char *)0L ? CMSG_FIRSTHDR(mhdr) : ((((unsigned char *)(cmsg) + __DARWIN_ALIGN32((__uint32_t)(cmsg)->cmsg_len) + __DARWIN_ALIGN32(sizeof(struct cmsghdr))) > ((unsigned char *)(mhdr)->msg_control + (mhdr)->msg_controllen)) ? (struct cmsghdr *)0L /* NULL */ : (struct cmsghdr *)(void *)((unsigned char *)(cmsg) + __DARWIN_ALIGN32((__uint32_t)(cmsg)->cmsg_len))))
macroCMSG_SPACE
RFC 2292 additions
#define CMSG_SPACE(l) (__DARWIN_ALIGN32(sizeof(struct cmsghdr)) + __DARWIN_ALIGN32(l))
macroSCM_RIGHTS
"Socket"-level control message types:
#define SCM_RIGHTS 0x01
access rights (array of int)
macroSHUT_RD
howto arguments for shutdown(2), specified by Posix.1g.
#define SHUT_RD 0
shut down the reading side
structsf_hdtr
sendfile(2) header/trailer struct
| struct iovec * | headers | pointer to an array of header struct iovec's |
| int | hdr_cnt | number of header iovec's |
| struct iovec * | trailers | pointer to an array of trailer struct iovec's |
| int | trl_cnt | number of trailer iovec's |
functionaccept
__DARWIN_ALIAS_C(accept) int accept(int, struct sockaddr * __restrict, socklen_t * __restrict)
man page · March 18, 2015
accept(2) — accept a connection on a socketfunctionbind
__DARWIN_ALIAS(bind) int bind(int, const struct sockaddr *, socklen_t)
man page · March 18, 2015
bind(2) — bind a name to a socketfunctionconnect
__DARWIN_ALIAS_C(connect) int connect(int, const struct sockaddr *, socklen_t)
man page · March 18, 2015
connect(2) — initiate a connection on a socketfunctiongetpeername
__DARWIN_ALIAS(getpeername) int getpeername(int, struct sockaddr * __restrict, socklen_t * __restrict)
man page · June 4, 1993
getpeername(2) — get address of connected peerfunctiongetsockname
__DARWIN_ALIAS(getsockname) int getsockname(int, struct sockaddr * __restrict, socklen_t * __restrict)
man page · June 4, 1993
getsockname(2) — get socket namefunctiongetsockopt
int getsockopt(int, int, int, void * __restrict, socklen_t * __restrict)
man page · April 19, 1994
getsockopt(2) — get and set options on socketsfunctionlisten
__DARWIN_ALIAS(listen)
int listen(int, int)man page · March 18, 2015
listen(2) — listen for connections on a socketfunctionrecv
__DARWIN_ALIAS_C(recv) ssize_t recv(int, void *, size_t, int)
man page · March 18, 2015
recv(2) — receive a message from a socketfunctionrecvfrom
__DARWIN_ALIAS_C(recvfrom) ssize_t recvfrom( int, void *, size_t, int, struct sockaddr * __restrict, socklen_t * __restrict )
man page · March 18, 2015
recvfrom(2) — receive a message from a socketfunctionrecvmsg
__DARWIN_ALIAS_C(recvmsg) ssize_t recvmsg(int, struct msghdr *, int)
man page · March 18, 2015
recvmsg(2) — receive a message from a socketfunctionsend
__DARWIN_ALIAS_C(send) ssize_t send(int, const void *, size_t, int)
man page · February 21, 1994
send(2) — send a message from a socketfunctionsendmsg
__DARWIN_ALIAS_C(sendmsg) ssize_t sendmsg(int, const struct msghdr *, int)
man page · February 21, 1994
sendmsg(2) — send a message from a socketfunctionsendto
__DARWIN_ALIAS_C(sendto) ssize_t sendto(int, const void *, size_t, int, const struct sockaddr *, socklen_t)
man page · February 21, 1994
sendto(2) — send a message from a socketfunctionsetsockopt
int setsockopt(int, int, int, const void *, socklen_t)
man page · April 19, 1994
setsockopt(2) — get and set options on socketsfunctionshutdown
int shutdown(int, int)
man page · March 18, 2015
shutdown(2) — shut down part of a full-duplex connectionfunctionsockatmark
__OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0)
int sockatmark(int)man page · October 13, 2002
sockatmark(3) — determine whether the read pointer is at the OOB markfunctionsocket
int socket(int, int, int)
man page · March 18, 2015
socket(2) — create an endpoint for communicationfunctionsocketpair
__DARWIN_ALIAS(socketpair)
int socketpair(int, int, int, int *)man page · June 4, 1993
socketpair(2) — create a pair of connected socketsfunctionsendfile
int sendfile(int, int, off_t, off_t *, struct sf_hdtr *, int)
man page · March 31, 2006
sendfile(2) — send a file to a socketfunctionpfctlinput
void pfctlinput(int, struct sockaddr *)
functionconnectx
__API_AVAILABLE(macosx(10.11), ios(9.0), tvos(9.0), watchos(2.0)) int connectx( int, const sa_endpoints_t *, sae_associd_t, unsigned int, const struct iovec *, unsigned int, size_t *, sae_connid_t * )
man page · March 26, 2015
connectx(2) — initiate a connection on a socketfunctiondisconnectx
__API_AVAILABLE(macosx(10.11), ios(9.0), tvos(9.0), watchos(2.0)) int disconnectx(int, sae_associd_t, sae_connid_t)
man page · April 10, 2015
disconnectx(2) — disconnects a connection on a socket