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
| Name | Type | Dir | Description |
|---|---|---|---|
| domain | int | - | |
| type | int | - | |
| protocol | int | - |
Version history
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 97 |
| xnu-1699.24.8 | macOS 10.7 Lion | 97 |
| xnu-2050.18.24 | macOS 10.8 Mountain Lion | 97 |
| xnu-2422.115.4 | macOS 10.9 Mavericks | 97 |
| xnu-2782.40.9 | macOS 10.10 Yosemite | 97 |
| xnu-3247.1.106 | macOS 10.11 El Capitan | 97 |
| xnu-3789.1.32 | macOS 10.12 Sierra | 97 |
| xnu-4570.1.46 | macOS 10.13 High Sierra | 97 |
| xnu-4903.221.2 | macOS 10.14 Mojave | 97 |
| xnu-6153.11.26 | macOS 10.15 Catalina | 97 |
| xnu-7195.50.7.100.1 | macOS 11.0 Big Sur | 97 |
| xnu-8019.41.5 | macOS 12.0 Monterey | 97 |
| xnu-8792.41.9 | macOS 13.0 Ventura | 97 |
| xnu-10002.1.13 | macOS 14.0 Sonoma | 97 |
| xnu-11215.1.10 | macOS 15.0 Sequoia | 97 |
| xnu-11417.101.15 | macOS 15.4 Sequoia | 97 |
| xnu-12377.1.9 | macOS 26.0 Tahoe | 97 |
| 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.