aboutgitcodebugslistschat
diff options
context:
space:
mode:
-rw-r--r--README.md10
-rw-r--r--passt.18
-rw-r--r--qrap.113
-rw-r--r--qrap.c5
-rw-r--r--tap.c10
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@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 cbf58d4..f8314ef 100644
--- a/tap.c
+++ b/tap.c
@@ -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");
}
/**