diff options
-rw-r--r-- | README.md | 10 | ||||
-rw-r--r-- | passt.1 | 8 | ||||
-rw-r--r-- | qrap.1 | 13 | ||||
-rw-r--r-- | qrap.c | 5 | ||||
-rw-r--r-- | tap.c | 10 |
5 files changed, 18 insertions, 28 deletions
@@ -368,13 +368,11 @@ speeding up local connections, and usually requiring NAT. _pasta_: ## Interfaces and Environment _passt_ exchanges packets with _qemu_ via UNIX domain socket, using the `socket` -back-end in qemu. Currently, qemu can only connect to a listening process via -TCP. Two temporary solutions are available: +back-end in qemu. This is supported since qemu 7.2. -* a [patch](/passt/tree/qemu) for qemu -* a wrapper, [qrap](/passt/tree/qrap.c), that connects to a - UNIX domain socket and starts qemu, which can now use the file descriptor - that's already opened +For older versions, the [qrap](/passt/tree/qrap.c) wrapper can be used to +connect to a UNIX domain socket and to start qemu, which can now use the file +descriptor that's already opened. This approach, compared to using a _tap_ device, doesn't require any security capabilities, as we don't need to create any interface. @@ -51,12 +51,8 @@ one peer's observed parameters (congestion window size, acknowledged data, etc.) to the corresponding peer. Currently, the only supported hypervisor is \fBqemu\fR(1), connecting to -\fBpasst\fR by means of a UNIX domain socket. This configuration can be obtained -via out-of-tree qemu patches, available at: - - \fIhttps://passt.top/passt/tree/contrib/qemu\fR - -or with the \fBqrap\fR(1) wrapper. +\fBpasst\fR by means of a UNIX domain socket. This is supported starting from +qemu 7.2. For older qemu versions, see the \fBqrap\fR(1) wrapper. .SS pasta @@ -5,7 +5,7 @@ .SH NAME .B qrap -\- qemu wrapper connecting UNIX domain socket to file descriptor +\- temporary qemu wrapper connecting UNIX domain socket to file descriptor .SH SYNOPSIS .B qrap @@ -47,13 +47,10 @@ $ ./qrap test.qcow2 -m 1024 -display none -nodefaults -nographic .SH NOTES -This wrapper is temporary and needed only as long as \fBqemu\fR(1) does not -directly support a UNIX domain socket as \fInetdev\fR back-end. - -Out-of-tree patches for \fBqemu\fR(1) introducing support for a UNIX domain -socket back-end are available at: - - \fIhttps://passt.top/passt/tree/contrib/qemu\fR +This wrapper is temporary: qemu commit 13c6be96618c ("net: stream: add unix +socket") introduces native AF_UNIX socket support, and it should be included in +qemu starting from the 7.2 release. It will be around for a little bit longer to +give users enough time to switch. .SH AUTHOR @@ -7,8 +7,9 @@ * Copyright (c) 2020-2021 Red Hat GmbH * Author: Stefano Brivio <sbrivio@redhat.com> * - * TODO: Implement this functionality directly in qemu: we have TCP and UDP - * socket back-ends already. + * TODO: Drop this implementation once qemu commit 13c6be96618c ("net: stream: + * add unix socket") is included in a release (7.2), and once we can reasonably + * assume existing users switched to it. */ #include <stdio.h> @@ -944,13 +944,11 @@ static void tap_sock_unix_init(struct ctx *c) ev.events = EPOLLIN | EPOLLET | EPOLLRDHUP; epoll_ctl(c->epollfd, EPOLL_CTL_ADD, c->fd_tap_listen, &ev); - info("You can now start qrap:"); - info(" ./qrap 5 kvm ... -net socket,fd=5 -net nic,model=virtio"); - info("or directly qemu, patched with:"); - info(" qemu/0001-net-Allow-also-UNIX-domain-sockets-to-be-used-as-net.patch"); - info("as follows:"); - info(" kvm ... -net socket,connect=%s -net nic,model=virtio", + info("You can now start qemu (>= 7.2, with commit 13c6be96618c):"); + info(" kvm ... -device virtio-net-pci,netdev=s -netdev stream,id=s,server=off,addr.type=unix,addr.path=%s", addr.sun_path); + info("or qrap, for earlier qemu versions:"); + info(" ./qrap 5 kvm ... -net socket,fd=5 -net nic,model=virtio"); } /** |