diff --git a/Posix-compatibility.md b/Posix-compatibility.md index 4e4f202..26dfa2c 100644 --- a/Posix-compatibility.md +++ b/Posix-compatibility.md @@ -6,11 +6,11 @@ This document provides an overview of the POSIX interface along with common non- ## General ### I/O completion polling (`poll`, `select`, `pselect`, `epoll_*` (non-standard), `kqueue` (non-standard)) -Use [`tcp::subscribe`][tcp]/[`udp::subscribe`][udp] to obtain a `pollable` handle. Then use that to wait for IO events using the [wasi-poll][poll] interface. +Use the various `subscribe` methods to obtain a `pollable` handle. Then use that to wait for IO events using the [wasi:io/poll][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 repeatedly calling [`poll::poll-oneoff`][poll] until the operation is complete. +Blocking behaviour can be recreated in userland (or in wasi-libc) by calling [pollable::block][poll] 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 `stream`s. @@ -35,52 +35,56 @@ Not included in proposal. WASI has no concept of UNIX-style processes. - UDP: [`create-udp-socket`][udp-create-socket] ### `connect` -- TCP: [`tcp::start-connect`][tcp] & [`tcp::finish-connect`][tcp] -- UDP: [`udp::start-connect`][udp] & [`udp::finish-connect`][udp] +- TCP: [`tcp-socket::start-connect`][tcp] & [`tcp-socket::finish-connect`][tcp] +- UDP: [`udp-socket::start-connect`][udp] & [`udp-socket::finish-connect`][udp] ### `bind` -- TCP: [`tcp::start-bind`][tcp] & [`tcp::finish-bind`][tcp] -- UDP: [`udp::start-bind`][udp] & [`udp::finish-bind`][udp] +- TCP: [`tcp-socket::start-bind`][tcp] & [`tcp-socket::finish-bind`][tcp] +- UDP: [`udp-socket::start-bind`][udp] & [`udp-socket::finish-bind`][udp] ### `listen` -- TCP: [`tcp::start-listen`][tcp] & [`tcp::finish-listen`][tcp]. The `backlog` parameter has been split out into a distinct function [`tcp::set-listen-backlog-size`][tcp] ([See #34](https://github.com/WebAssembly/wasi-sockets/issues/34)). +- TCP: [`tcp-socket::start-listen`][tcp] & [`tcp-socket::finish-listen`][tcp]. The `backlog` parameter has been split out into a distinct function [`tcp-socket::set-listen-backlog-size`][tcp] ([See #34][34]). - UDP: N/A ### `accept`, `accept4` (non-standard) -- TCP: [`tcp::accept`][tcp] +- TCP: [`tcp-socket::accept`][tcp] - UDP: N/A -To collect the remote address, call [`tcp::remote-address`][tcp] on the newly accepted client socket. +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](#nonblock) & [SOCK_CLOEXEC](#cloexec). ### `getsockname`, `getpeername` -- TCP: [`tcp::local-address`][tcp] & [`tcp::remote-address`][tcp] -- UDP: [`udp::local-address`][udp] & [`udp::remote-address`][udp] +- TCP: [`tcp-socket::local-address`][tcp] & [`tcp-socket::remote-address`][tcp] +- UDP: [`udp-socket::local-address`][udp] & [`udp-socket::remote-address`][udp] ### `read`, `readv`, `recv`, `recvfrom`, `recvmsg`, `recvmmsg` (non-standard) -TCP sockets can be read using [`streams::(blocking-)read`][streams]. UDP sockets can be read using [`udp::receive`][udp]. +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 functions. +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](#nonblock). - `MSG_OOB` on TCP sockets: [Not supported](#oob) - `MSG_OOB` on UDP sockets: N/A - `MSG_PEEK`: [No direct support](#peek) -- `MSG_TRUNC on TCP sockets: N/A +- `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 [`streams::(blocking-)write`][streams]. UDP sockets can be written to using [`udp::send`][udp]. +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 functions. +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. @@ -90,13 +94,14 @@ None of the flags are directly present in WASI Sockets: - `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 Streams proposal as [`output-stream::forward`][streams] +- TCP: Part of the [wasi:io/streams][streams] proposal as `output-stream::splice` - UDP: N/A ### `shutdown` -- TCP: [`tcp::shutdown`][tcp] +- TCP: [`tcp-socket::shutdown`][tcp] - UDP: N/A ### `sockatmark` @@ -104,7 +109,7 @@ None of the flags are directly present in WASI Sockets: - UDP: N/A ### `close` -Dropping a handle performs an effective `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. @@ -115,7 +120,7 @@ Specifically for UNIX domain sockets. Out of scope for this proposal. ### `ioctl` - `SIOCATMARK`: [Not included](#oob). -- `FIONREAD`: Currently not included. See [#17](https://github.com/WebAssembly/wasi-sockets/issues/17). +- `FIONREAD`: Currently not included. See [#17][17]. ### `getsockopt`, `setsockopt` Socket options have been split out into distinct functions. See table below. @@ -132,466 +137,465 @@ The results are not intended to be an exhaustive overview of all possible networ 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. -Columns: -- "Socket option": The native option constant. -- "WASI": - - ✅ = Included in proposal. - - ⛔ = Consciously decided _not_ to include in WASI. See notes for explanation. - - ❔ = Not included (yet), for no particular reason. -- The rest: - - ✅ = Option is provided by the platform / depended upon by the application. - - ❌ = Option is not provided / not used. - -> Note: GitHub clips the table content. Scroll left and right to see all columns, or use the Code View. - -| Option | WASI | POSIX | Linux | Windows | MacOS | FreeBSD | JVM | .NET | Rust | Node.js | Go | OpenSSL | nginx | curl | msquic | exim | Notes | -|---------------------------------|-----------|--------|--------|---------|---------|---------|-------|--------|-------|---------|-----|----------|-------|-------|--------|-------|-| -| SO_ERROR | ⛔ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | Not necessary. WIT has (or will have) native support for asynchronous results. | -| SO_DOMAIN | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | [`tcp::address-family`][tcp]
[`udp::address-family`][udp]

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