Skip to content
This repository was archived by the owner on Nov 25, 2025. It is now read-only.

Latest commit

 

History

History
608 lines (559 loc) · 53.2 KB

Posix-compatibility.md

File metadata and controls

608 lines (559 loc) · 53.2 KB

POSIX Compatibility

This document provides an overview of the POSIX interface along with common non-standard extensions and their mapping to functionalities provided by this proposal.

General

I/O completion polling (poll, select, pselect, epoll_* (non-standard), kqueue (non-standard))

Use the various subscribe methods to obtain a pollable handle. Then use that to wait for IO events using the wasi:io/poll interface.

Non-blocking mode (FIONBIO, SOCK_NONBLOCK, O_NONBLOCK)

All WASI sockets are non-blocking and can not be configured to block. Blocking behaviour can be recreated in userland (or in wasi-libc) by calling pollable::block on the relevant pollable.

TCP urgent data (sockatmark, MSG_OOB, SO_OOBINLINE, SIOCATMARK)

Out-of-band (OOB) data is currently not included in this proposal. Application-level usage of the TCP "urgent" flag is rare in practice and discouraged in general. Including it in WASI would probably interfere with the ability to use WASI/ComponentModel streams.

Peeking (MSG_PEEK)

Peeking support is not provided by this proposal directly. Including it in WASI would probably interfere with the ability to use WASI/ComponentModel streams.

Support for it might be able to be recreated in userland (or in wasi-libc).

Writing to closed streams (SIGPIPE, SO_NOSIGPIPE)

WASI has no concept of 'signals'. Implementations that require it are encouraged to set the SO_NOSIGPIPE option to true, to increase cross-platform consistency. Writing to a closed stream in WASI returns a regular error.

Close-on-exec (FD_CLOEXEC, SOCK_CLOEXEC, O_CLOEXEC)

Not included in proposal. WASI has no concept of UNIX-style processes.

Functions

socket

connect

bind

listen

accept, accept4 (non-standard)

To collect the remote address, call tcp-socket::remote-address on the newly accepted client socket.

Some platforms provide an accept4 variant with additional flags. None of these flags make sense in the context of this proposal. See SOCK_NONBLOCK & SOCK_CLOEXEC.

getsockname, getpeername

read, readv, recv, recvfrom, recvmsg, recvmmsg (non-standard)

TCP sockets can be read using the input-stream returned by connect or accept. UDP sockets can be read using the incoming-datagram-stream returned by udp-socket::stream.

The various POSIX functions should be implementable on top of these two resources.

None of the flags are directly present in WASI Sockets:

  • MSG_DONTWAIT: This is always the case.
  • MSG_OOB on TCP sockets: Not supported
  • MSG_OOB on UDP sockets: N/A
  • MSG_PEEK: No direct support
  • MSG_TRUNC on TCP sockets: N/A
  • MSG_TRUNC on UDP sockets: Not needed, the returned data array always has the exact perfect size.
  • MSG_WAITALL on TCP sockets: Emulatable in userspace.
  • MSG_WAITALL on UDP sockets: N/A
  • MSG_EOR: N/A (not supported on TCP & UDP sockets)
  • MSG_CMSG_CLOEXEC: N/A (only used on Unix domain sockets)

Receiving ancillary messages: None supported as of yet. But see the various "RECV" socket options below.

write, writev, send, sendto, sendmsg, sendmmsg (non-standard)

TCP sockets can be written to using the output-stream returned by connect or accept. UDP sockets can be written to using the outgoing-datagram-stream returned by udp-socket::stream.

The various POSIX functions should be implementable on top of these two resources.

None of the flags are directly present in WASI Sockets:

  • MSG_DONTROUTE: Not included in proposal at the moment.
  • MSG_DONTWAIT: This is always the case.
  • MSG_NOSIGNAL: This is always the case.
  • MSG_OOB on TCP sockets: Not supported
  • MSG_OOB on UDP sockets: N/A
  • MSG_EOR: N/A (not supported on TCP & UDP sockets)

Sending ancillary messages: None supported as of yet.

sendfile (non-standard)

  • TCP: Part of the wasi:io/streams proposal as output-stream::splice
  • UDP: N/A

shutdown

sockatmark

  • TCP: Not supported, see OOB.
  • UDP: N/A

close

Dropping the socket resource effectively performs a close.

socketpair, connectat (non-standard), bindat (non-standard)

Specifically for UNIX domain sockets. Out of scope for this proposal.

fcntl

ioctl

getsockopt, setsockopt

Socket options have been split out into distinct functions. See table below.

Socket options

POSIX defines the signatures of the getsockopt & setsockopt functions, but does not provide much guidance on the individual socket options themselves. Because of this lack of a central authority, a list has been compiled of the options that are used "in the wild".

The results are not intended to be an exhaustive overview of all possible network applications, but rather to provide input on which options are worth standardizing in WASI.

Additionally, most columns have been populated semi-automatically by grepping through the respective codebases. The results have not been manually verified and therefore may not be 100% correct.

Legend:

  • ✅ = Included in proposal.
  • ⚠️ = Partially supported.
  • ⛔ = Consciously decided not to include in WASI. See notes for explanation.
  • ❔ = Not included (yet), for no particular reason.
Option Notes Used/implemented by
✅ SO_DOMAIN
SO_PROTOCOL_INFO on Windows
tcp-socket::address-family
udp-socket::address-family
linux, windows, freebsd, .net
✅ SO_ACCEPTCONN tcp-socket::is-listening posix, linux, windows, macos, freebsd, .net
✅ IP_TTL tcp-socket::(set-)hop-limit
udp-socket::(set-)unicast-hop-limit
linux, windows, macos, freebsd, jvm, .net, rust, libuv
✅ IPV6_UNICAST_HOPS tcp-socket::(set-)hop-limit
udp-socket::(set-)unicast-hop-limit
posix, linux, windows, macos, freebsd, jvm, .net, libuv
✅ SO_RCVBUF tcp-socket::(set-)receive-buffer-size
udp-socket::(set-)receive-buffer-size
posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, nginx, msquic
✅ SO_SNDBUF tcp-socket::(set-)send-buffer-size
udp-socket::(set-)send-buffer-size
posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, nginx, curl
✅ SO_KEEPALIVE tcp-socket::(set-)keep-alive-enabled posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, openssl, nginx, curl, exim
✅ TCP_KEEPIDLE
TCP_KEEPALIVE on MacOS
tcp-socket::(set-)keep-alive-idle-time linux, windows, macos, freebsd, jvm, .net, libuv, go, nginx, curl
✅ TCP_KEEPINTVL tcp-socket::(set-)keep-alive-interval linux, windows, macos, freebsd, jvm, .net, libuv, go, nginx, curl
✅ TCP_KEEPCNT tcp-socket::(set-)keep-alive-count linux, windows, macos, freebsd, jvm, .net, libuv, nginx
✅ SO_REUSEADDR for TCP Enabled by default. See tcp-socket::bind posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, openssl, nginx, curl, exim
⚠️ IPV6_V6ONLY In WASI this always true. #1 posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, openssl, curl, msquic, exim
⛔ SO_ERROR Not necessary. WIT has (or will have) native support for asynchronous results. posix, linux, windows, macos, freebsd, jvm, .net, rust, libuv, go, openssl, nginx, curl, msquic
⛔ SO_TYPE Can be inferred from the socket resource type. posix, linux, windows, macos, freebsd, jvm, .net, go, openssl, nginx, curl, exim
⛔ SO_PROTOCOL
SO_PROTOCOL_INFO on Windows
Can be inferred from the socket resource type. linux, windows, freebsd, .net, exim
⛔ IP_HDRINCL Out of scope. Raw sockets only. linux, windows, macos, freebsd, .net
⛔ IPV6_HDRINCL Out of scope. Raw sockets only. linux, windows, .net
⛔ SO_RCVTIMEO WASI sockets are always non-blocking. Timeouts can be recreated in libc. posix, linux, windows, macos, freebsd, jvm, .net, rust, openssl, curl
⛔ SO_SNDTIMEO WASI sockets are always non-blocking. Timeouts can be recreated in libc. posix, windows, macos, freebsd, .net, rust, openssl
⛔ SO_OOBINLINE Not supported, see OOB posix, linux, windows, macos, freebsd, jvm, .net
⛔ SO_PEERCRED Out of scope; UNIX domain sockets only. linux, jvm, .net
⛔ SO_PEERSEC Out of scope; UNIX domain sockets only. linux
⛔ SO_NOSIGPIPE Not supported, see SIGPIPE macos, freebsd, libuv, curl
❔ IP_RECVPKTINFO
IP_PKTINFO on Linux & Windows
IP_RECVDSTADDR+IP_RECVIF on MacOS & FreeBSD
#77 linux, windows, macos, freebsd, .net, openssl, nginx, msquic
❔ IPV6_RECVPKTINFO
IPV6_PKTINFO on Windows
#77 linux, windows, macos, freebsd, .net, openssl, nginx, msquic
❔ IP_RECVTOS #78 linux, windows, macos, freebsd, msquic
❔ IPV6_RECVTCLASS #78 linux, windows, macos, freebsd, msquic
❔ IP_TOS #78 linux, windows, macos, freebsd, jvm, .net, exim
❔ IPV6_TCLASS #78 linux, macos, freebsd, jvm, .net, exim
❔ TCP_ECN_MODE #78 macos
❔ TCP_ENABLE_ECN #78 macos
❔ SO_LINGER #80 posix, linux, windows, macos, freebsd, jvm, .net, rust, libuv, go, openssl, nginx
❔ IP_DONTFRAG
IP_DONTFRAGMENT on Windows
#79 linux, windows, macos, freebsd, jvm, .net, openssl, nginx, msquic
❔ IPV6_DONTFRAG #79 linux, windows, macos, freebsd, jvm, .net, openssl, nginx, msquic
❔ IP_MTU_DISCOVER #79 linux, windows, openssl, nginx, curl, msquic
❔ IPV6_MTU_DISCOVER #79 linux, windows, openssl, nginx, curl, msquic
❔ TCP_NODELAY #75 posix, linux, windows, macos, freebsd, jvm, .net, rust, libuv, go, openssl, nginx, curl, exim
❔ TCP_CORK
TCP_NOPUSH on MacOS & FreeBSD
#75 linux, macos, freebsd, nginx, exim
❔ SO_REUSEADDR for UDP #74 posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, openssl, nginx, curl, exim
❔ SO_EXCLUSIVEADDRUSE #74 windows
❔ SO_RANDOMIZE_PORT #74 windows
❔ SO_RANDOMPORT #74 macos
❔ IP_BIND_ADDRESS_NO_PORT #74 linux, nginx, curl
❔ SO_PORT_SCALABILITY #74 windows
❔ SO_REUSE_UNICASTPORT #74 windows, .net
❔ SO_REUSEPORT #74 linux, macos, freebsd, .net, libuv, go, nginx, msquic
❔ SO_REUSEPORT_LB #74 freebsd, nginx
❔ SO_ATTACH_REUSEPORT_CBPF #74 linux, msquic
❔ SO_ATTACH_REUSEPORT_EBPF #74 linux, nginx
❔ SO_DETACH_REUSEPORT_BPF #74 linux
❔ TCP_REUSPORT_LB_NUMA #74 freebsd
❔ SO_INCOMING_CPU #74 linux
❔ SO_INCOMING_NAPI_ID #74 linux, jvm
❔ SO_BINDTODEVICE #74 linux, libuv, go, curl
❔ SO_BINDTOIFINDEX #74 linux
❔ IP_UNICAST_IF #74 linux, windows, msquic
❔ IPV6_UNICAST_IF #74 linux, windows, msquic
❔ IP_BOUND_IF #74 macos
❔ IPV6_BOUND_IF #74 macos
❔ IP_FREEBIND #74 linux
❔ IPV6_FREEBIND #74 linux
❔ IP_TRANSPARENT #74 linux, nginx
❔ IPV6_TRANSPARENT #74 linux, nginx
❔ IP_BINDANY #74 freebsd, nginx
❔ IPV6_BINDANY #74 freebsd, nginx
❔ SO_REUSE_MULTICASTPORT #74, #73 windows
❔ SO_BROADCAST #73 posix, linux, windows, macos, freebsd, jvm, .net, rust, libuv, go
❔ MCAST_JOIN_GROUP
Supersedes: IP_ADD_MEMBERSHIP
Supersedes: IPV6_JOIN_GROUP
Supersedes: IPV6_ADD_MEMBERSHIP
#73 posix, linux, windows, macos, freebsd, jvm, .net, rust, libuv, go
❔ MCAST_LEAVE_GROUP
Supersedes: IP_DROP_MEMBERSHIP
Supersedes: IPV6_LEAVE_GROUP
Supersedes: IPV6_DROP_MEMBERSHIP
#73 posix, linux, windows, macos, freebsd, jvm, .net, rust, libuv
❔ MCAST_JOIN_SOURCE_GROUP
Supersedes: IP_ADD_SOURCE_MEMBERSHIP
#73 linux, windows, macos, freebsd, jvm, .net, libuv
❔ MCAST_LEAVE_SOURCE_GROUP
Supersedes: IP_DROP_SOURCE_MEMBERSHIP
#73 linux, windows, macos, freebsd, jvm, .net, libuv
❔ MCAST_BLOCK_SOURCE
Supersedes: IP_BLOCK_SOURCE
#73 linux, windows, macos, freebsd, jvm, .net
❔ MCAST_UNBLOCK_SOURCE
Supersedes: IP_UNBLOCK_SOURCE
#73 linux, windows, macos, freebsd, jvm, .net
❔ IP_MSFILTER #73 linux, windows, macos, freebsd
❔ IPV6_MSFILTER #73 macos, freebsd
❔ IP_MULTICAST_IF #73 linux, windows, macos, freebsd, jvm, .net, libuv, go
❔ IPV6_MULTICAST_IF #73 posix, linux, windows, macos, freebsd, jvm, .net, libuv, go
❔ IP_MULTICAST_LOOP #73 linux, windows, macos, freebsd, jvm, .net, rust, libuv, go
❔ IPV6_MULTICAST_LOOP #73 posix, linux, windows, macos, freebsd, jvm, .net, rust, libuv, go
❔ IP_MULTICAST_TTL #73 linux, windows, macos, freebsd, jvm, .net, rust, libuv
❔ IPV6_MULTICAST_HOPS #73 posix, linux, windows, macos, freebsd, jvm, .net, libuv
❔ IP_MULTICAST_ALL #73 linux
❔ IPV6_MULTICAST_ALL #73 linux
❔ IP_MULTICAST_IFINDEX #73 macos
❔ TCP_FASTOPEN #81 linux, windows, macos, freebsd, openssl, nginx, exim
❔ TCP_FASTOPEN_CONNECT #81 linux, openssl, curl, exim
❔ TCP_FASTOPEN_KEY #81 linux
❔ TCP_FASTOPEN_NO_COOKIE #81 linux
❔ TCP_FASTOPEN_FORCE_ENABLE #81 macos
❔ TCP_FASTOPEN_FORCE_HEURISTICS #81 macos
❔ SO_SNDLOWAT Not usefully implemented on Linux & Windows. posix, linux, macos, freebsd, .net, nginx
❔ SO_RCVLOWAT posix, linux, macos, freebsd, .net
❔ IP_RECVTTL linux, windows, macos, freebsd
❔ IPV6_RECVHOPLIMIT linux, macos, freebsd
❔ SO_DEBUG posix, linux, windows, macos, freebsd, .net
❔ SO_DONTROUTE posix, linux, windows, macos, freebsd, .net
❔ TCP_INFO
via ioctl on Windows
linux, windows, macos, freebsd, nginx, exim
❔ IP_IPSEC_POLICY linux, macos, freebsd
❔ IP_MINTTL linux, freebsd
❔ IPV6_MINHOPCOUNT linux
❔ IP_MTU linux, windows, openssl
❔ IPV6_MTU linux, windows, openssl
❔ IPV6_PATHMTU linux, macos, freebsd
❔ IPV6_RECVPATHMTU linux, macos, freebsd
❔ IPV6_USE_MIN_MTU linux, macos, freebsd
❔ IP_OPTIONS linux, windows, macos, freebsd, .net, exim
❔ IP_RECVOPTS linux, macos, freebsd
❔ IP_RECVORIGDSTADDR
IP_ORIGDSTADDR on FreeBSD
linux, freebsd
❔ IP_RECVRETOPTS
Alias: IP_RETOPTS
linux, macos, freebsd
❔ IPV6_2292DSTOPTS linux, macos, freebsd
❔ IPV6_2292HOPLIMIT linux, macos, freebsd
❔ IPV6_2292HOPOPTS linux, macos, freebsd
❔ IPV6_2292PKTINFO linux, macos, freebsd
❔ IPV6_2292PKTOPTIONS linux, macos, freebsd
❔ IPV6_2292RTHDR linux, macos, freebsd
❔ IPV6_AUTOFLOWLABEL linux, macos, freebsd
❔ IPV6_CHECKSUM linux, macos, freebsd
❔ IPV6_DSTOPTS linux, macos, freebsd
❔ IPV6_HOPOPTS linux, macos, freebsd
❔ IPV6_IPSEC_POLICY linux, macos, freebsd
❔ IPV6_NEXTHOP linux, macos, freebsd
❔ IPV6_RECVDSTOPTS linux, macos, freebsd
❔ IPV6_RECVHOPOPTS linux, macos, freebsd
❔ IPV6_RECVORIGDSTADDR
IPV6_ORIGDSTADDR on FreeBSD
linux, freebsd
❔ IPV6_RECVRTHDR linux, macos, freebsd
❔ IPV6_RTHDR linux, macos, freebsd
❔ IPV6_RTHDRDSTOPTS linux, macos, freebsd
❔ SO_TIMESTAMP linux, macos, freebsd
❔ TCP_CONGESTION linux, freebsd
❔ TCP_MAXSEG linux, macos, freebsd
❔ TCP_MD5SIG linux, freebsd
❔ TCP_NOTSENT_LOWAT linux, macos
❔ UDP_ENCAP linux, freebsd
❔ IP_CHECKSUM linux
❔ IP_NODEFRAG linux
❔ IP_PASSSEC linux
❔ IP_PKTOPTIONS linux
❔ IP_RECVERR linux, libuv
❔ IP_RECVERR_RFC4884 linux
❔ IP_RECVFRAGSIZE linux
❔ IP_ROUTER_ALERT linux
❔ IP_XFRM_POLICY linux
❔ IPV6_ADDR_PREFERENCES linux
❔ IPV6_ADDRFORM linux
❔ IPV6_AUTHHDR linux
❔ IPV6_FLOWINFO linux
❔ IPV6_FLOWINFO_SEND linux
❔ IPV6_FLOWLABEL_MGR linux
❔ IPV6_JOIN_ANYCAST linux
❔ IPV6_LEAVE_ANYCAST linux
❔ IPV6_RECVERR linux, libuv
❔ IPV6_RECVERR_RFC4884 linux
❔ IPV6_RECVFRAGSIZE linux
❔ IPV6_ROUTER_ALERT linux
❔ IPV6_ROUTER_ALERT_ISOLATE linux
❔ IPV6_XFRM_POLICY linux
❔ SO_ATTACH_FILTER linux
❔ SO_BPF_EXTENSIONS linux
❔ SO_BSDCOMPAT linux
❔ SO_BUF_LOCK linux
❔ SO_BUSY_POLL linux
❔ SO_BUSY_POLL_BUDGET linux
❔ SO_CNX_ADVICE linux
❔ SO_COOKIE linux, nginx
❔ SO_DETACH_FILTER linux
❔ SO_LOCK_FILTER linux
❔ SO_MARK linux
❔ SO_MEMINFO linux
❔ SO_NETNS_COOKIE linux
❔ SO_NO_CHECK linux
❔ SO_NOFCS linux
❔ SO_PASSCRED linux
❔ SO_PASSSEC linux
❔ SO_PEEK_OFF linux
❔ SO_PEERNAME linux
❔ SO_PREFER_BUSY_POLL linux
❔ SO_PRIORITY linux
❔ SO_RCVBUFFORCE linux
❔ SO_RCVMARK linux
❔ SO_RESERVE_MEM linux
❔ SO_RXQ_OVFL linux
❔ SO_SELECT_ERR_QUEUE linux
❔ SO_SNDBUFFORCE linux
❔ SO_TIMESTAMPING linux
❔ SO_TIMESTAMPNS linux
❔ SO_TXREHASH linux
❔ SO_TXTIME linux
❔ SO_WIFI_STATUS linux
❔ SO_ZEROCOPY linux
❔ TCP_CC_INFO linux
❔ TCP_CM_INQ linux
❔ TCP_DEFER_ACCEPT linux, nginx
❔ TCP_INQ linux
❔ TCP_LINGER2 linux
❔ TCP_MD5SIG_EXT linux
❔ TCP_QUEUE_SEQ linux
❔ TCP_QUICKACK linux, jvm, exim
❔ TCP_REPAIR linux
❔ TCP_REPAIR_OPTIONS linux
❔ TCP_REPAIR_QUEUE linux
❔ TCP_REPAIR_WINDOW linux
❔ TCP_SAVE_SYN linux
❔ TCP_SAVED_SYN linux
❔ TCP_SYNCNT linux
❔ TCP_THIN_DUPACK linux
❔ TCP_THIN_LINEAR_TIMEOUTS linux
❔ TCP_TIMESTAMP linux
❔ TCP_TX_DELAY linux
❔ TCP_ULP linux
❔ TCP_USER_TIMEOUT linux
❔ TCP_WINDOW_CLAMP linux
❔ TCP_ZEROCOPY_RECEIVE linux
❔ UDP_CORK linux
❔ UDP_GRO linux, msquic
❔ UDP_NO_CHECK6_RX linux
❔ UDP_NO_CHECK6_TX linux
❔ UDP_SEGMENT linux, nginx
❔ IP_ADD_IFLIST windows
❔ IP_DEL_IFLIST windows
❔ IP_GET_IFLIST windows
❔ IP_IFLIST windows
❔ IP_ORIGINAL_ARRIVAL_IF windows
❔ IP_ORIGINAL_ARRIVAL_IF windows
❔ IP_RECEIVE_BROADCAST windows
❔ IP_USER_MTU windows
❔ IP_WFP_REDIRECT_CONTEXT windows
❔ IP_WFP_REDIRECT_RECORDS windows
❔ IPV6_ADD_IFLIST windows
❔ IPV6_DEL_IFLIST windows
❔ IPV6_GET_IFLIST windows
❔ IPV6_IFLIST windows
❔ IPV6_PROTECTION_LEVEL windows
❔ IPV6_RECVIF windows
❔ IPV6_USER_MTU windows
❔ SO_BSP_STATE windows
❔ SO_CONDITIONAL_ACCEPT windows
❔ SO_CONNDATA windows
❔ SO_CONNDATALEN windows
❔ SO_CONNECT_TIME windows
❔ SO_CONNOPT windows
❔ SO_CONNOPTLEN windows
❔ SO_DISCDATA windows
❔ SO_DISCDATALEN windows
❔ SO_DISCOPT windows
❔ SO_DISCOPTLEN windows
❔ SO_GROUP_ID windows
❔ SO_GROUP_PRIORITY windows
❔ SO_MAX_MSG_SIZE windows
❔ SO_MAXDG windows
❔ SO_MAXPATHDG windows
❔ SO_OPENTYPE windows
❔ SO_PAUSE_ACCEPT windows
❔ SO_PROTOCOL_INFO windows
❔ SO_PROTOCOL_INFOA windows
❔ SO_PROTOCOL_INFOW windows
❔ SO_UPDATE_ACCEPT_CONTEXT windows
❔ SO_UPDATE_CONNECT_CONTEXT windows
❔ TCP_BSDURGENT windows
❔ TCP_EXPEDITED_1122 windows
❔ TCP_FAIL_CONNECT_ON_ICMP_ERROR windows
❔ TCP_ICMP_ERROR_INFO windows
❔ TCP_MAXRT windows
❔ TCP_TIMESTAMPS windows
❔ UDP_CHECKSUM_COVERAGE windows
❔ UDP_NOCHECKSUM windows
❔ UDP_RECV_MAX_COALESCED_SIZE windows, msquic
❔ UDP_SEND_MSG_SIZE windows, msquic
❔ IP_FAITH macos
❔ IP_NAT__XXX macos
❔ IP_STRIPHDR macos
❔ IP_TRAFFIC_MGT_BACKGROUND macos
❔ IPV6_3542DSTOPTS macos
❔ IPV6_3542HOPLIMIT macos
❔ IPV6_3542HOPOPTS macos
❔ IPV6_3542NEXTHOP macos
❔ IPV6_3542PKTINFO macos
❔ IPV6_3542RTHDR macos
❔ IPV6_RTHDR_LOOSE macos
❔ IPV6_RTHDR_STRICT macos
❔ IPV6_RTHDR_TYPE_0 macos
❔ SO_AWDL_UNRESTRICTED macos
❔ SO_CFIL_SOCK_ID macos
❔ SO_DELEGATED macos
❔ SO_DELEGATED_UUID macos
❔ SO_DONTTRUNC macos
❔ SO_EXECPATH macos
❔ SO_EXTENDED_BK_IDLE macos
❔ SO_FLOW_DIVERT_TOKEN macos
❔ SO_FLUSH macos
❔ SO_INTCOPROC_ALLOW macos
❔ SO_LINGER_SEC macos
❔ SO_MARK_CELLFALLBACK macos
❔ SO_MPKL_SEND_INFO macos
❔ SO_NECP_ATTRIBUTES macos
❔ SO_NECP_CLIENTUUID macos
❔ SO_NECP_LISTENUUID macos
❔ SO_NET_SERVICE_TYPE macos
❔ SO_NETSVC_MARKING_LEVEL macos
❔ SO_NKE macos
❔ SO_NOADDRERR macos
❔ SO_NOAPNFALLBK macos
❔ SO_NOTIFYCONFLICT macos
❔ SO_NOWAKEFROMSLEEP macos
❔ SO_NP_EXTENSIONS macos
❔ SO_NREAD macos
❔ SO_NUMRCVPKT macos
❔ SO_NWRITE macos
❔ SO_OPPORTUNISTIC macos
❔ SO_QOSMARKING_POLICY_OVERRIDE macos
❔ SO_RECV_ANYIF macos
❔ SO_RESTRICTIONS macos
❔ SO_REUSESHAREUID macos
❔ SO_STATISTICS_EVENT macos
❔ SO_TC_NET_SERVICE_OFFSET macos
❔ SO_TC_NETSVC_SIG macos
❔ SO_TIMESTAMP_CONTINUOUS macos
❔ SO_TIMESTAMP_MONOTONIC macos
❔ SO_TRAFFIC_MGT_BACKGROUND macos
❔ SO_UPCALLCLOSEWAIT macos
❔ SO_WANT_KEV_SOCKET_CLOSED macos
❔ SO_WANTMORE macos
❔ SO_WANTOOBFLAG macos
❔ MPTCP_ALTERNATE_PORT macos
❔ MPTCP_EXPECTED_PROGRESS_TARGET macos
❔ MPTCP_FORCE_ENABLE macos
❔ MPTCP_FORCE_VERSION macos
❔ MPTCP_SERVICE_TYPE macos
❔ PERSIST_TIMEOUT macos
❔ TCP_ADAPTIVE_READ_TIMEOUT macos
❔ TCP_ADAPTIVE_WRITE_TIMEOUT macos
❔ TCP_CONNECTION_INFO macos
❔ TCP_CONNECTIONTIMEOUT macos
❔ TCP_DISABLE_BLACKHOLE_DETECTION macos
❔ TCP_KEEPALIVE_OFFLOAD macos
❔ TCP_MEASURE_BW_BURST macos
❔ TCP_MEASURE_SND_BW macos
❔ TCP_NOTIFY_ACKNOWLEDGEMENT macos
❔ TCP_NOTIMEWAIT macos
❔ TCP_PEER_PID macos
❔ TCP_RXT_CONNDROPTIME macos
❔ TCP_RXT_FINDROP macos
❔ TCP_RXT_MINIMUM_TIMEOUT macos
❔ TCP_SENDMOREACKS macos
❔ UDP_KEEPALIVE_OFFLOAD macos
❔ UDP_NOCKSUM macos
❔ ICMP6_FILTER macos, freebsd
❔ IP_MULTICAST_VIF macos, freebsd
❔ IP_PORTRANGE macos, freebsd, go
❔ IP_RSVP_OFF macos, freebsd
❔ IP_RSVP_ON macos, freebsd
❔ IP_RSVP_VIF_OFF macos, freebsd
❔ IP_RSVP_VIF_ON macos, freebsd
❔ IPV6_2292NEXTHOP macos, freebsd
❔ IPV6_BINDV6ONLY macos, freebsd
❔ IPV6_FAITH macos, freebsd
❔ IPV6_PKTOPTIONS macos, freebsd
❔ IPV6_PORTRANGE macos, freebsd, go
❔ IPV6_PREFER_TEMPADDR macos, freebsd
❔ IPV6_RECVRTHDRDSTOPTS macos, freebsd
❔ SO_ACCEPTFILTER macos, freebsd, nginx
❔ SO_LABEL macos, freebsd
❔ SO_PEERLABEL macos, freebsd
❔ SO_USELOOPBACK macos, freebsd
❔ TCP_NOOPT macos, freebsd
❔ IP_BINDMULTI freebsd
❔ IP_FLOWID freebsd
❔ IP_FLOWTYPE freebsd
❔ IP_MAX_MEMBERSHIPS freebsd
❔ IP_ONESBCAST freebsd
❔ IP_RECVFLOWID freebsd
❔ IP_RECVRSSBUCKETID freebsd
❔ IP_RSS_LISTEN_BUCKET freebsd
❔ IP_RSSBUCKETID freebsd
❔ IP_SENDSRCADDR freebsd, nginx
❔ IP_VLAN_PCP freebsd
❔ IPV6_AUTH_LEVEL freebsd
❔ IPV6_BINDMULTI freebsd
❔ IPV6_ESP_NETWORK_LEVEL freebsd
❔ IPV6_ESP_TRANS_LEVEL freebsd
❔ IPV6_FLOWID freebsd
❔ IPV6_FLOWTYPE freebsd
❔ IPV6_IPCOMP_LEVEL freebsd
❔ IPV6_RECVFLOWID freebsd
❔ IPV6_RECVRSSBUCKETID freebsd
❔ IPV6_RSS_LISTEN_BUCKET freebsd
❔ IPV6_RSSBUCKETID freebsd
❔ IPV6_VLAN_PCP freebsd
❔ SO_BINTIME freebsd
❔ SO_LISTENINCQLEN freebsd
❔ SO_LISTENQLEN freebsd, exim
❔ SO_LISTENQLIMIT freebsd
❔ SO_MAX_PACING_RATE freebsd
❔ SO_NO_DDP freebsd
❔ SO_NO_OFFLOAD freebsd
❔ SO_RERROR freebsd
❔ SO_SETFIB freebsd, nginx
❔ SO_TS_BINTIME freebsd
❔ SO_TS_CLOCK freebsd
❔ SO_TS_CLOCK_MAX freebsd
❔ SO_TS_DEFAULT freebsd
❔ SO_TS_MONOTONIC freebsd
❔ SO_TS_REALTIME freebsd
❔ SO_TS_REALTIME_MICRO freebsd
❔ SO_USER_COOKIE freebsd
❔ TCP_CCALGOOPT freebsd
❔ TCP_DEFER_OPTIONS freebsd
❔ TCP_DELACK freebsd
❔ TCP_FAST_RSM_HACK freebsd
❔ TCP_FIN_IS_RST freebsd
❔ TCP_FUNCTION_ALIAS freebsd
❔ TCP_FUNCTION_BLK freebsd
❔ TCP_HDWR_RATE_CAP freebsd
❔ TCP_HDWR_UP_ONLY freebsd
❔ TCP_IDLE_REDUCE freebsd
❔ TCP_IWND_NB freebsd
❔ TCP_IWND_NSEG freebsd
❔ TCP_KEEPINIT freebsd
❔ TCP_LOG freebsd
❔ TCP_LOG_LIMIT freebsd
❔ TCP_LOG_TAG freebsd
❔ TCP_LOGBUF freebsd
❔ TCP_LOGDUMP freebsd
❔ TCP_LOGDUMPID freebsd
❔ TCP_LOGID freebsd
❔ TCP_LOGID_CNT freebsd
❔ TCP_LRD freebsd
❔ TCP_MAXPEAKRATE freebsd
❔ TCP_MAXUNACKTIME freebsd
❔ TCP_PCAP_IN freebsd
❔ TCP_PCAP_OUT freebsd
❔ TCP_PERF_INFO freebsd
❔ TCP_PROC_ACCOUNTING freebsd
❔ TCP_REMOTE_UDP_ENCAPS_PORT freebsd
❔ TCP_RXTLS_ENABLE freebsd
❔ TCP_RXTLS_MODE freebsd
❔ TCP_STATS freebsd
❔ TCP_TXTLS_ENABLE freebsd
❔ TCP_TXTLS_MODE freebsd
❔ TCP_USE_CMP_ACKS freebsd
❔ TCP_USER_LOG freebsd