aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2025-12-22 19:12:34 +0000
committerMark Johnston <markj@FreeBSD.org>2025-12-29 14:49:24 +0000
commitdaef625cf884dea33d50ad7a0e2da0879a442495 (patch)
tree6720ae9e4bdd72d4c10e1d5bc47aef36adbc2142
parent85f499be90c15a3de02d1c62ce03b99fab52f925 (diff)
bhyve: Use a blocking socket in the helper process
The send_packet callback does not handle EAGAIN, and on the recv side we already use poll() and MSG_DONTWAIT to implement a non-blocking loop. PR: 291616 Tested by: novel Fixes: 0e62ebd20172 ("bhyve: Move the slirp backend out into a separate process") Differential Revision: https://reviews.freebsd.org/D54340
-rw-r--r--usr.sbin/bhyve/slirp/slirp-helper.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/usr.sbin/bhyve/slirp/slirp-helper.c b/usr.sbin/bhyve/slirp/slirp-helper.c
index 06f393aab724..9fb9784662fe 100644
--- a/usr.sbin/bhyve/slirp/slirp-helper.c
+++ b/usr.sbin/bhyve/slirp/slirp-helper.c
@@ -503,6 +503,8 @@ main(int argc, char **argv)
memset(&priv, 0, sizeof(priv));
priv.sock = sd;
+ if (ioctl(priv.sock, FIONBIO, &(int){0}) == -1)
+ err(1, "ioctl(FIONBIO)");
if (pipe2(priv.wakeup, O_CLOEXEC | O_NONBLOCK) != 0)
err(1, "pipe2");