From: Arne Schwabe Date: Mon, 10 Aug 2020 14:37:04 +0000 (+0200) Subject: Skip existing interfaces on opening the first available utun on macOS X-Git-Tag: v2.5_beta1~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4edcf5710d043d366d8fd52a53b259399678309a;p=thirdparty%2Fopenvpn.git Skip existing interfaces on opening the first available utun on macOS This avoids the error messages trying to open already used utuns. Signed-off-by: Arne Schwabe Acked-by: Lev Stipakov Message-Id: <20200810143707.5834-15-arne@rfc2549.org> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg20665.html Signed-off-by: Gert Doering --- diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c index cc7b65cf4..304544547 100644 --- a/src/openvpn/tun.c +++ b/src/openvpn/tun.c @@ -3021,8 +3021,15 @@ open_darwin_utun(const char *dev, const char *dev_type, const char *dev_node, st /* try to open first available utun device if no specific utun is requested */ if (utunnum == -1) { - for (utunnum = 0; utunnum<255; utunnum++) + for (utunnum = 0; utunnum < 255; utunnum++) { + char ifname[20]; + /* if the interface exists silently skip it */ + ASSERT(snprintf(ifname, sizeof(ifname), "utun%d", utunnum) > 0); + if (if_nametoindex(ifname)) + { + continue; + } fd = utun_open_helper(ctlInfo, utunnum); /* Break if the fd is valid, * or if early initialization failed (-2) */