This component provides the ability to connect to VMADDR_CID_LOCAL (ie CID == 1) as well also serve sockets using that CID. It is used in conjunction with vsock_service with will redirect connections to it is enabled. In hermetic tests, or scenarios where fuchsia is not running as a guest VM with a vsock device provided to it, vsock-loopback will also implement a loopback for VMADDR_CID_HOST (ie CID == 2).
vsock-loopback provides similar functionality to a loopback netdevice implementation, such as netemul, used in conjunction with netstack for AF_INET sockets, or simply using an AF_UNIX socket over a differnt address space of ports.
To add this component to your build, append --with src/paravirtualization/vsock-loopback
to the fx set
invocation.
Use ffx component run
to launch this component into a restricted realm for development purposes:
$ ffx component run /core/ffx-laboratory:vsock-loopback fuchsia-pkg://fuchsia.com/vsock-loopback#meta/vsock-loopback.cm
Note that it's already included by default in all emulator based configurations, so it can alternatively be started via the following command after launching an emulator:
$ ffx component start vsock-loopback
Unit tests for vsock-loopback are available in the vsock-loopback-tests
package.
$ fx test vsock-loopback-tests