From 01254406d881440edf53c7d88c33ba8be2cbb7d5 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Sun, 31 May 2026 00:53:19 +0300 Subject: [PATCH] fix tun_platform_write return value on FreeBSD: subtract 4-byte AF_INET header from writev result --- src/tun_freebsd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/tun_freebsd.c b/src/tun_freebsd.c index 7eec168c..61babfe2 100644 --- a/src/tun_freebsd.c +++ b/src/tun_freebsd.c @@ -356,7 +356,8 @@ ssize_t tun_platform_write(struct tun_if* tun, const uint8_t* buf, size_t len) { iv[0].iov_len = sizeof(family); iv[1].iov_base = (void*)buf; iv[1].iov_len = len; - return writev(tun->fd, iv, 2); + ssize_t wr = writev(tun->fd, iv, 2); + return wr > 0 ? wr - 4 : wr; // вычесть 4-байтовый AF_INET заголовок } // Get poll fd for uasync int tun_platform_get_poll_fd(struct tun_if* tun) {