Support abstract namespace AF_UNIX sockets.

Linux has a notion of abstract AF_UNIX sockets. This should be supported both for the control and socks port, as they are convenient and useful, as long as they are used correctly.

Benefits:

  • Easier to bundle. sun_path length limitations are dumb, being able to use an abstract identifier is simpler.
  • No need to mess around with creating a directory, arguing over what permissions the directory and the socket file has.
  • The socket goes away when the last reference to the socekt is closed, removing the need to unlink it.

Downsides:

  • There is no access control, at all. Primarily relevant for the ControlPort, but that has separate mechanisms for restricting access.
  • Not wildly useful for sandboxes, since most sandboxing approaches will unshare/create a new IPC namespace.
  • Non-portable.

(0.2.0.3-alpha was the first time we supported AF_UNIX at all)

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information