Skip to content
BSD syscall#97

svc · unix #97

socket

Creates a new communication endpoint and returns a file descriptor referring to it.

Prototype

int socket(int domain, int type, int protocol);

Returns: int

Arguments

NameTypeDirDescription
domainint-
typeint-
protocolint-

Version history

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard97
xnu-1699.24.8macOS 10.7 Lion97
xnu-2050.18.24macOS 10.8 Mountain Lion97
xnu-2422.115.4macOS 10.9 Mavericks97
xnu-2782.40.9macOS 10.10 Yosemite97
xnu-3247.1.106macOS 10.11 El Capitan97
xnu-3789.1.32macOS 10.12 Sierra97
xnu-4570.1.46macOS 10.13 High Sierra97
xnu-4903.221.2macOS 10.14 Mojave97
xnu-6153.11.26macOS 10.15 Catalina97
xnu-7195.50.7.100.1macOS 11.0 Big Sur97
xnu-8019.41.5macOS 12.0 Monterey97
xnu-8792.41.9macOS 13.0 Ventura97
xnu-10002.1.13macOS 14.0 Sonoma97
xnu-11215.1.10macOS 15.0 Sequoia97
xnu-11417.101.15macOS 15.4 Sequoia97
xnu-12377.1.9macOS 26.0 Tahoe97
xnu-10002.41.9—97
xnu-10002.61.3—97
xnu-10002.81.5—97
xnu-10063.101.15—97
xnu-10063.121.3—97
xnu-10063.141.1—97
xnu-11215.41.3—97
xnu-11215.61.5—97
xnu-11215.81.4—97
xnu-11417.121.6—97
xnu-11417.140.69—97
xnu-12377.101.15—97
xnu-12377.41.6—97
xnu-12377.61.12—97
xnu-12377.81.4—97
xnu-1486.2.11—97
xnu-1504.15.3—97
xnu-1504.3.12—97
xnu-1504.7.4—97
xnu-1504.9.17—97
xnu-1504.9.26—97
xnu-1504.9.37—97
xnu-1699.22.73—97
xnu-1699.22.81—97
xnu-1699.24.23—97
xnu-1699.26.8—97
xnu-1699.32.7—97
xnu-2050.22.13—97
xnu-2050.24.15—97
xnu-2050.48.11—97
xnu-2050.7.9—97
xnu-2050.9.2—97
xnu-2422.1.72—97
xnu-2422.100.13—97
xnu-2422.110.17—97
xnu-2422.90.20—97
xnu-2782.1.97—97
xnu-2782.10.72—97
xnu-2782.20.48—97
xnu-2782.30.5—97
xnu-3247.10.11—97
xnu-3248.20.55—97
xnu-3248.30.4—97
xnu-3248.40.184—97
xnu-3248.50.21—97
xnu-3248.60.10—97
xnu-3789.21.4—97
xnu-3789.31.2—97
xnu-3789.41.3—97
xnu-3789.51.2—97
xnu-3789.60.24—97
xnu-3789.70.16—97
xnu-4570.20.62—97
xnu-4570.31.3—97
xnu-4570.41.2—97
xnu-4570.51.1—97
xnu-4570.61.1—97
xnu-4570.71.2—97
xnu-4903.231.4—97
xnu-4903.241.1—97
xnu-4903.270.47—97
xnu-6153.101.6—97
xnu-6153.121.1—97
xnu-6153.141.1—97
xnu-6153.41.3—97
xnu-6153.61.1—97
xnu-6153.81.5—97
xnu-7195.101.1—97
xnu-7195.121.3—97
xnu-7195.141.2—97
xnu-7195.60.75—97
xnu-7195.81.3—97
xnu-8019.61.5—97
xnu-8019.80.24—97
xnu-8020.101.4—97
xnu-8020.121.3—97
xnu-8020.140.41—97
xnu-8792.61.2—97
xnu-8792.81.2—97
xnu-8796.101.5—97
xnu-8796.121.2—97
xnu-8796.141.3—97

Examples

Create a TCP socket

#include <sys/socket.h>
#include <netinet/in.h>

int fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (fd < 0) perror("socket");

Notes

macOS implements BSD sockets in xnu's bsd/kern/uipc_socket.c on top of Mach-backed file descriptors. The kernel routes the (domain, type, protocol) triple through pr_usrreqs of the matching protosw, then attaches the resulting socket to a fileproc so it can participate in select/kqueue/poll. Since Big Sur, user-space TCP/UDP for many flows is brokered through the Network Extension framework and the Skywalk data path, but the legacy socket() entry point remains the universal allocator. Sandboxed apps may receive ENOTSUP for AF_INET/AF_INET6 when the network entitlements are missing.

Detection

Endpoint Security has no dedicated event for raw socket() creation. To observe socket lifecycle, attach a NetworkExtension content filter (NEFilterDataProvider) or use the proc_info PROC_PIDFDSOCKETINFO walker against /dev/fdesc. DTrace's syscall::socket:entry probe is reliable on Intel and on Apple Silicon when SIP is disabled.

Related APIs

socketpairbindconnectconnectxsetsockoptshutdownnecp_open