This document provides an overview of the POSIX interface along with common non-standard extensions and their mapping to functionalities provided by this proposal.
Use the various subscribe methods to obtain a pollable handle. Then use that to wait for IO events using the wasi:io/poll interface.
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.
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 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).
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.
Not included in proposal. WASI has no concept of UNIX-style processes.
- TCP:
create-tcp-socket - UDP:
create-udp-socket
- TCP:
tcp-socket::start-connect&tcp-socket::finish-connect - UDP:
udp-socket::start-connect&udp-socket::finish-connect
- TCP:
tcp-socket::start-bind&tcp-socket::finish-bind - UDP:
udp-socket::start-bind&udp-socket::finish-bind
- TCP:
tcp-socket::start-listen&tcp-socket::finish-listen. Thebacklogparameter has been split out into a distinct functiontcp-socket::set-listen-backlog-size(See #34). - UDP: N/A
- TCP:
tcp-socket::accept - UDP: N/A
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.
- TCP:
tcp-socket::local-address&tcp-socket::remote-address - UDP:
udp-socket::local-address&udp-socket::remote-address
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_OOBon TCP sockets: Not supportedMSG_OOBon UDP sockets: N/AMSG_PEEK: No direct supportMSG_TRUNCon TCP sockets: N/AMSG_TRUNCon UDP sockets: Not needed, the returned data array always has the exact perfect size.MSG_WAITALLon TCP sockets: Emulatable in userspace.MSG_WAITALLon UDP sockets: N/AMSG_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.
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_OOBon TCP sockets: Not supportedMSG_OOBon UDP sockets: N/AMSG_EOR: N/A (not supported on TCP & UDP sockets)
Sending ancillary messages: None supported as of yet.
- TCP: Part of the wasi:io/streams proposal as
output-stream::splice - UDP: N/A
- TCP:
tcp-socket::shutdown - UDP: N/A
- TCP: Not supported, see OOB.
- UDP: N/A
Dropping the socket resource effectively performs a close.
Specifically for UNIX domain sockets. Out of scope for this proposal.
F_GETFL/F_SETFL>O_NONBLOCK: Not needed.F_SETFD/F_GETFD>FD_CLOEXEC: Not included.
SIOCATMARK: Not included.FIONREAD: Currently not included. See #17.
Socket options have been split out into distinct functions. See table below.
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-familyudp-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-limitudp-socket::(set-)unicast-hop-limit |
linux, windows, macos, freebsd, jvm, .net, rust, libuv |
| ✅ | IPV6_UNICAST_HOPS | tcp-socket::(set-)hop-limitudp-socket::(set-)unicast-hop-limit |
posix, linux, windows, macos, freebsd, jvm, .net, libuv |
| ✅ | SO_RCVBUF | tcp-socket::(set-)receive-buffer-sizeudp-socket::(set-)receive-buffer-size |
posix, linux, windows, macos, freebsd, jvm, .net, libuv, go, nginx, msquic |
| ✅ | SO_SNDBUF | tcp-socket::(set-)send-buffer-sizeudp-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 |