Skip to content

Commit

Permalink
macOS: Assume that net/if_utun.h is always present
Browse files Browse the repository at this point in the history
Has been present in all releases since 10.7,
i.e. about 13 years ago. At this point the check
just makes the code uglier for no actual benefit.

Change-Id: I41eeae35ab23d9fb2512f33086f20f54c2d4f6df
Signed-off-by: Frank Lichtenheld <[email protected]>
Acked-by: Arne Schwabe <[email protected]>
Message-Id: <[email protected]>
URL: https://www.mail-archive.com/[email protected]/msg29963.html
Signed-off-by: Gert Doering <[email protected]>
  • Loading branch information
flichtenheld authored and cron2 committed Nov 28, 2024
1 parent f626b66 commit cb87888
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 25 deletions.
2 changes: 0 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,6 @@ elseif (WIN32)
set(ENABLE_DCO YES)
elseif (APPLE)
set(TARGET_DARWIN YES)
set(HAVE_NET_IF_UTUN_H YES)
else()
message(FATAL_ERROR "Unknown system name: \"${CMAKE_SYSTEM_NAME}\"")
endif ()
Expand Down Expand Up @@ -223,7 +222,6 @@ check_include_files(libgen.h HAVE_LIBGEN_H)
check_include_files(net/if.h HAVE_NET_IF_H)
check_include_files("${NETEXTRA};netinet/ip.h" HAVE_NETINET_IP_H)
check_include_files(arpa/inet.h HAVE_ARPA_INET_H)
check_include_files(net/if_utun.h HAVE_NET_UTUN_H)
check_include_files(sys/ioctl.h HAVE_SYS_IOCTL_H)
check_include_files(sys/inotify.h HAVE_SYS_INOTIFY_H)
check_include_files("${NETEXTRA};sys/uio.h" HAVE_SYS_UIO_H)
Expand Down
3 changes: 0 additions & 3 deletions config.h.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -202,9 +202,6 @@ don't. */
/* Define to 1 if you have the <net/if_tun.h> header file. */
#cmakedefine HAVE_NET_IF_TUN_H

/* Define to 1 if you have the <net/if_utun.h> header file. */
#cmakedefine01 HAVE_NET_IF_UTUN_H

/* Define to 1 if you have the <net/tun/if_tun.h> header file. */
#cmakedefine HAVE_NET_TUN_IF_TUN_H

Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@ SOCKET_INCLUDES="
"

AC_CHECK_HEADERS(
[net/if.h netinet/ip.h resolv.h sys/un.h net/if_utun.h sys/kern_control.h],
[net/if.h netinet/ip.h resolv.h sys/un.h sys/kern_control.h],
,
,
[[${SOCKET_INCLUDES}]]
Expand Down
32 changes: 13 additions & 19 deletions src/openvpn/tun.c
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ static void solaris_error_close(struct tuntap *tt, const struct env_set *es, con
#include <stropts.h>
#endif

#if defined(TARGET_DARWIN) && HAVE_NET_IF_UTUN_H
#if defined(TARGET_DARWIN)
#include <sys/kern_control.h>
#include <net/if_utun.h>
#include <sys/sys_domain.h>
Expand Down Expand Up @@ -1782,7 +1782,7 @@ clear_tuntap(struct tuntap *tuntap)
#endif
}

#if defined (TARGET_OPENBSD) || (defined(TARGET_DARWIN) && HAVE_NET_IF_UTUN_H)
#if defined(TARGET_OPENBSD) || defined(TARGET_DARWIN)

/*
* OpenBSD and Mac OS X when using utun
Expand Down Expand Up @@ -1871,7 +1871,7 @@ read_tun_header(struct tuntap *tt, uint8_t *buf, int len)
return read(tt->fd, buf, len);
}
}
#endif /* if defined (TARGET_OPENBSD) || (defined(TARGET_DARWIN) && HAVE_NET_IF_UTUN_H) */
#endif /* if defined (TARGET_OPENBSD) || defined(TARGET_DARWIN) */

bool
tun_name_is_fixed(const char *dev)
Expand Down Expand Up @@ -3215,14 +3215,12 @@ read_tun(struct tuntap *tt, uint8_t *buf, int len)
* (http://newosxbook.com/src.jl?tree=listings&file=17-15-utun.c)
*/

#ifdef HAVE_NET_IF_UTUN_H

/* Helper functions that tries to open utun device
* return -2 on early initialization failures (utun not supported
* at all (old OS X) and -1 on initlization failure of utun
* device (utun works but utunX is already used */
static
int
* at all) and -1 on initlization failure of utun
* device (utun works but utunX is already used)
*/
static int
utun_open_helper(struct ctl_info ctlInfo, int utunnum)
{
struct sockaddr_ctl sc;
Expand Down Expand Up @@ -3346,13 +3344,10 @@ open_darwin_utun(const char *dev, const char *dev_type, const char *dev_node, st
tt->backend_driver = DRIVER_UTUN;
}

#endif /* ifdef HAVE_NET_IF_UTUN_H */

void
open_tun(const char *dev, const char *dev_type, const char *dev_node, struct tuntap *tt,
openvpn_net_ctx_t *ctx)
{
#ifdef HAVE_NET_IF_UTUN_H
/* If dev_node does not start start with utun assume regular tun/tap */
if ((!dev_node && tt->type==DEV_TYPE_TUN)
|| (dev_node && !strncmp(dev_node, "utun", 4)))
Expand Down Expand Up @@ -3387,7 +3382,6 @@ open_tun(const char *dev, const char *dev_type, const char *dev_node, struct tun
}
}
else
#endif /* ifdef HAVE_NET_IF_UTUN_H */
{

/* Use plain dev-node tun to select /dev/tun style
Expand Down Expand Up @@ -3431,27 +3425,27 @@ close_tun(struct tuntap *tt, openvpn_net_ctx_t *ctx)
int
write_tun(struct tuntap *tt, uint8_t *buf, int len)
{
#ifdef HAVE_NET_IF_UTUN_H
if (tt->backend_driver == DRIVER_UTUN)
{
return write_tun_header(tt, buf, len);
}
else
#endif
return write(tt->fd, buf, len);
{
return write(tt->fd, buf, len);
}
}

int
read_tun(struct tuntap *tt, uint8_t *buf, int len)
{
#ifdef HAVE_NET_IF_UTUN_H
if (tt->backend_driver == DRIVER_UTUN)
{
return read_tun_header(tt, buf, len);
}
else
#endif
return read(tt->fd, buf, len);
{
return read(tt->fd, buf, len);
}
}

#elif defined(TARGET_AIX)
Expand Down

0 comments on commit cb87888

Please sign in to comment.