2. Linux TCP Socket Options: SimpleXMQ, on which the SimpleX Chat CLI client
depends, uses Linux-specific TCP socket options [2] that are not available
in OpenBSD [3], namely TCP_KEEPIDLE, TCP_KEEPINTVL, and TCP_KEEPCNT. My
questions regarding this issue are:
[...]
For all of those options,
https://man7.org/linux/man-pages/man7/tcp.7.html
states that they should not be used in coded intended to be portable.
So you should probably ask upstream why they use those options.
I know that these TCP socket options are not defined in the POSIX
standard, which is why different Unix-like operating systems have
varying options in their TCP stack. However, it is understandable why
the SimpleX Chat project and other software projects utilize these
options. These options are not only available on Linux but also on all
actively developed free Unix-like operating systems, with the exception
of OpenBSD. FreeBSD [1], NetBSD [2], DragonFlyBSD [3], and even
operating systems based on illumos [4] (the successor of OpenSolaris)
include these options in their TCP stack.
References:
1. https://man.freebsd.org/cgi/man.cgi?query=tcp&sektion=4
2. https://man.netbsd.org/tcp.4
3. https://man.dragonflybsd.org/?command=tcp
4. https://www.illumos.org/man/4P/TCP