[Openvpn-devel,S] Change in openvpn[master]: Minimal Solaris/OpenIndiana support to Cmake and clean up -Werror

Message ID d7f8728b18f2d0f617b7b703e4b419545aba36e0-HTML@gerrit.openvpn.net
State Superseded
Headers show
Series [Openvpn-devel,S] Change in openvpn[master]: Minimal Solaris/OpenIndiana support to Cmake and clean up -Werror | expand

Commit Message

flichtenheld (Code Review) Nov. 22, 2023, 1:09 p.m. UTC
Attention is currently required from: flichtenheld.

Hello flichtenheld,

I'd like you to do a code review.
Please visit

    http://gerrit.openvpn.net/c/openvpn/+/458?usp=email

to review the following change.


Change subject: Minimal Solaris/OpenIndiana support to Cmake and clean up -Werror
......................................................................

Minimal Solaris/OpenIndiana support to Cmake and clean up -Werror

Change-Id: I66e3dd7b7166459526824fe5ae81a449b375b8db
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
---
M CMakeLists.txt
M config.h.cmake.in
M src/openvpn/route.c
M src/openvpn/tun.c
4 files changed, 18 insertions(+), 12 deletions(-)



  git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/58/458/1

Patch

diff --git a/CMakeLists.txt b/CMakeLists.txt
index d21c9bd..c3a55ab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -121,11 +121,17 @@ 
     set(TARGET_FREEBSD YES)
     set(ENABLE_DCO YES)
     link_libraries(-lnv)
+elseif (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
+    set(TARGET_SOLARIS YES)
+    set(HAVE_SYS_SOCKIO_H 1)
+    link_libraries(-lnsl -lsocket -lresolv)
 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 ()
 
 if (UNIX)
diff --git a/config.h.cmake.in b/config.h.cmake.in
index 19b79bc..5b93fc5 100644
--- a/config.h.cmake.in
+++ b/config.h.cmake.in
@@ -336,7 +336,7 @@ 
 #cmakedefine HAVE_SYS_SOCKET_H
 
 /* Define to 1 if you have the <sys/sockio.h> header file. */
-#undef HAVE_SYS_SOCKIO_H
+#cmakedefine HAVE_SYS_SOCKIO_H
 
 /* Define to 1 if you have the <sys/stat.h> header file. */
 #define HAVE_SYS_STAT_H 1
@@ -443,6 +443,9 @@ 
 /* Are we running on Linux? */
 #cmakedefine TARGET_LINUX
 
+/* Are we running on Solaris/OpenIndiana? */
+#cmakedefine TARGET_SOLARIS
+
 /* Are we running WIN32? */
 #cmakedefine TARGET_WIN32
 
diff --git a/src/openvpn/route.c b/src/openvpn/route.c
index ff64938..6cc112c 100644
--- a/src/openvpn/route.c
+++ b/src/openvpn/route.c
@@ -2342,12 +2342,11 @@ 
         return;
     }
 
-#ifndef _WIN32
+#if !defined(_WIN32)
 #if !defined(TARGET_LINUX)
     const char *gateway;
-#else
-    int metric;
 #endif
+#if !defined(TARGET_SOLARIS)
     bool gateway_needed = false;
     const char *device = tt->actual_name;
     if (r6->iface != NULL)              /* vpn server special route */
@@ -2365,6 +2364,7 @@ 
         gateway_needed = true;
     }
 #endif
+#endif
 
     struct gc_arena gc = gc_new();
     struct argv argv = argv_new();
@@ -2395,7 +2395,7 @@ 
     msg( M_INFO, "delete_route_ipv6(%s/%d)", network, r6->netbits );
 
 #if defined(TARGET_LINUX)
-    metric = -1;
+    int metric = -1;
     if ((r6->flags & RT_METRIC_DEFINED) && (r6->metric > 0))
     {
         metric = r6->metric;
diff --git a/src/openvpn/tun.c b/src/openvpn/tun.c
index 82ab6c0..f1b8699 100644
--- a/src/openvpn/tun.c
+++ b/src/openvpn/tun.c
@@ -1900,7 +1900,7 @@ 
 #endif
 
 
-#if !(defined(_WIN32) || defined(TARGET_LINUX))
+#if !(defined(_WIN32) || defined(TARGET_LINUX) || defined(TARGET_SOLARIS))
 static void
 open_tun_generic(const char *dev, const char *dev_type, const char *dev_node,
                  struct tuntap *tt)
@@ -2061,7 +2061,7 @@ 
 }
 #endif /* TARGET_LINUX || TARGET_FREEBSD*/
 
-#if !defined(_WIN32)
+#if !(defined(_WIN32) || defined(TARGET_SOLARIS))
 static void
 close_tun_generic(struct tuntap *tt)
 {
@@ -2398,13 +2398,12 @@ 
 open_tun(const char *dev, const char *dev_type, const char *dev_node, struct tuntap *tt,
          openvpn_net_ctx_t *ctx)
 {
-    int if_fd, ip_muxid, arp_muxid, arp_fd, ppa = -1;
+    int if_fd = -1, ip_muxid = -1, arp_muxid = -1, arp_fd = -1, ppa = -1;
     struct lifreq ifr;
     const char *ptr;
-    const char *ip_node, *arp_node;
+    const char *ip_node = NULL, *arp_node = NULL;
     const char *dev_tuntap_type;
     int link_type;
-    bool is_tun;
     struct strioctl strioc_if, strioc_ppa;
 
     /* improved generic TUN/TAP driver from
@@ -2428,7 +2427,6 @@ 
         }
         dev_tuntap_type = "tun";
         link_type = I_PLINK;
-        is_tun = true;
     }
     else if (tt->type == DEV_TYPE_TAP)
     {
@@ -2440,7 +2438,6 @@ 
         arp_node = dev_node;
         dev_tuntap_type = "tap";
         link_type = I_PLINK; /* was: I_LINK */
-        is_tun = false;
     }
     else
     {