We can't get rid of qrap quite yet, but at least we should start telling users it's not going to be needed anymore starting from qemu 7.2. Signed-off-by: Stefano Brivio <sbrivio(a)redhat.com> --- README.md | 10 ++++------ passt.1 | 8 ++------ qrap.1 | 13 +++++-------- qrap.c | 5 +++-- tap.c | 10 ++++------ 5 files changed, 18 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index e1df972..0e2ca78 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/passt.1 b/passt.1 index 2c93907..e34a3e0 100644 --- a/passt.1 +++ b/passt.1 @@ -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 diff --git a/qrap.1 b/qrap.1 index cc73f1e..5246e1b 100644 --- a/qrap.1 +++ b/qrap.1 @@ -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 diff --git a/qrap.c b/qrap.c index 3c6f5b8..287198e 100644 --- a/qrap.c +++ b/qrap.c @@ -7,8 +7,9 @@ * Copyright (c) 2020-2021 Red Hat GmbH * Author: Stefano Brivio <sbrivio(a)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> diff --git a/tap.c b/tap.c index 84e93c2..ceb6e1d 100644 --- a/tap.c +++ b/tap.c @@ -943,13 +943,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"); } /** -- 2.35.1