From af382403ec5b8752ee98e89c04739b447cb24713 Mon Sep 17 00:00:00 2001 From: evgeny Date: Mon, 14 Sep 2026 23:17:59 +0300 Subject: [PATCH] tun_freebsd: reuse existing TUN interface on SIOCIFCREATE EEXIST --- src/tun_freebsd.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/tun_freebsd.c b/src/tun_freebsd.c index 2108820e..c456eb32 100644 --- a/src/tun_freebsd.c +++ b/src/tun_freebsd.c @@ -77,9 +77,13 @@ static int create_tun_device(char *ifname, size_t ifname_len) { strncpy(ifr.ifr_name, ifname, IFNAMSIZ - 1); ifr.ifr_name[IFNAMSIZ - 1] = '\0'; if (ioctl(sock, SIOCIFCREATE, &ifr) < 0) { - DEBUG_ERROR(DEBUG_CATEGORY_TUN, "SIOCIFCREATE failed for %s: %s", ifname, strerror(errno)); - close(sock); - return -1; + if (errno == EEXIST) { + DEBUG_INFO(DEBUG_CATEGORY_TUN, "TUN interface %s already exists, reusing it", ifname); + } else { + DEBUG_ERROR(DEBUG_CATEGORY_TUN, "SIOCIFCREATE failed for %s: %s", ifname, strerror(errno)); + close(sock); + return -1; + } } close(sock);