aboutgitcodebugslistschat
diff options
context:
space:
mode:
authorStefano Brivio <sbrivio@redhat.com>2022-11-04 02:38:31 +0100
committerStefano Brivio <sbrivio@redhat.com>2022-11-04 12:04:32 +0100
commit11efaefa1edc340fc3948726893ff81630370744 (patch)
tree4c3eb91e641f1f81abd5b26132a549105e867933
parent6c1697764ccd0ae0596fcad0ad5c8434430f8b23 (diff)
downloadpasst-11efaefa1edc340fc3948726893ff81630370744.tar
passt-11efaefa1edc340fc3948726893ff81630370744.tar.gz
passt-11efaefa1edc340fc3948726893ff81630370744.tar.bz2
passt-11efaefa1edc340fc3948726893ff81630370744.tar.lz
passt-11efaefa1edc340fc3948726893ff81630370744.tar.xz
passt-11efaefa1edc340fc3948726893ff81630370744.tar.zst
passt-11efaefa1edc340fc3948726893ff81630370744.zip
passt, qrap, README: Update notes and documentation for AF_UNIX support in qemu
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@redhat.com>
-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");
}
/**