diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2025-12-22 19:12:34 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2026-06-25 15:34:06 +0000 |
| commit | 777f67d8a9c3ad8f3b90c378cb5c1754a7d4c554 (patch) | |
| tree | 5594c8b5e41a3d2cde79769b4902fbe771f4eb60 | |
| parent | eeff383ba634e2496f67949254a2a8432c8f0582 (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
(cherry picked from commit daef625cf884dea33d50ad7a0e2da0879a442495)
| -rw-r--r-- | usr.sbin/bhyve/slirp/slirp-helper.c | 2 |
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 ec0f8a3486e0..36192c590eb1 100644 --- a/usr.sbin/bhyve/slirp/slirp-helper.c +++ b/usr.sbin/bhyve/slirp/slirp-helper.c @@ -502,6 +502,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"); |
