Timur Davydov has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/libosmocore/+/41878?usp=email )


Change subject: build: move netns/tun conditionals to configure.ac Move 
Linux-/embedded-specific conditional compilation out of the sources and into 
configure.ac.
......................................................................

build: move netns/tun conditionals to configure.ac
Move Linux-/embedded-specific conditional compilation out of the
sources and into configure.ac.

- Define USE_NETNS based on host_os and disable it for --enable-embedded.
- Detect struct in6_addr.s6_addr32 via AC_CHECK_MEMBER and use
  HAVE_IN6_ADDR_S6_ADDR32 instead of __linux__.
- Do not build tun.c for embedded targets (previously it was compiled
  but effectively empty due to #if (!EMBEDDED)).

No functional changes intended, this is a preparatory refactor to keep
follow-up patches focused and easier to review.

Change-Id: I2322eb2936bea35596f1fd6b6a713ea5f997b1ea
---
M configure.ac
M include/osmocom/core/netns.h
M src/core/Makefile.am
M src/core/socket.c
M src/core/tun.c
5 files changed, 23 insertions(+), 12 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/78/41878/1

diff --git a/configure.ac b/configure.ac
index 64690f9..bc060b6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -25,6 +25,13 @@
 AC_PROG_INSTALL
 LT_INIT([pic-only disable-static])

+dnl Define USE_NETNS when building for Linux
+case "${host_os}" in
+*linux*)
+       AC_DEFINE([USE_NETNS], [1], [Define to 1 if network namespace support 
is available])
+       ;;
+esac
+
 AC_CONFIG_MACRO_DIR([m4])

 dnl patching ${archive_cmds} to affect generation of file "libtool" to fix 
linking with clang
@@ -86,6 +93,13 @@
 AC_CHECK_LIB(execinfo, backtrace, BACKTRACE_LIB=-lexecinfo, BACKTRACE_LIB=)
 AC_SUBST(BACKTRACE_LIB)

+# check for struct in6_addr has s6_addr32 field
+AC_CHECK_MEMBER([struct in6_addr.s6_addr32],
+               [AC_DEFINE([HAVE_IN6_ADDR_S6_ADDR32], [1],
+                               [Define if struct in6_addr has s6_addr32 
field])],
+               [],
+               [[#include <netinet/in.h>]])
+
 # check for pthread (PTHREAD_CFLAGS, PTHREAD_LIBS)
 AX_PTHREAD

@@ -225,6 +239,7 @@
        [embedded=$enableval], [embedded=$ENABLE_EMBEDDED_DEFAULT])
 AM_CONDITIONAL(EMBEDDED, test x"$embedded" = x"yes")
 AM_CONDITIONAL(ENABLE_SERCOM_STUB, test x"$embedded" = x"yes")
+AM_CONDITIONAL(ENABLE_TUN, test "x$embedded" != "xyes")

 if test x"$embedded" = x"yes"
 then
@@ -246,6 +261,7 @@
        ENABLE_SYSLOG_LOGGING_DEFAULT="no"
        ENABLE_PANIC_INFLOOP_DEFAULT="yes"
        ENABLE_GNUTLS_DEFAULT="no"
+       AC_DEFINE([USE_NETNS],[0])
 fi

 AC_ARG_ENABLE([uring], [AS_HELP_STRING([--disable-uring], [Build without 
io_uring support])],
diff --git a/include/osmocom/core/netns.h b/include/osmocom/core/netns.h
index 5bbf224..45ae614 100644
--- a/include/osmocom/core/netns.h
+++ b/include/osmocom/core/netns.h
@@ -2,9 +2,7 @@
  *  Network namespace convenience functions. */

 #pragma once
-#if (!EMBEDDED)
-
-#if defined(__linux__)
+#if (USE_NETNS)

 #include <signal.h>

@@ -18,7 +16,5 @@
 int osmo_netns_switch_exit(struct osmo_netns_switch_state *state);


-#endif /* defined(__linux__) */
-
-#endif /* (!EMBEDDED) */
+#endif /* (USE_NETNS) */
 /*! @} */
diff --git a/src/core/Makefile.am b/src/core/Makefile.am
index f2cf138..6fdf893 100644
--- a/src/core/Makefile.am
+++ b/src/core/Makefile.am
@@ -74,13 +74,16 @@
        timer.c \
        timer_gettimeofday.c \
        timer_clockgettime.c \
-       tun.c \
        use_count.c \
        utils.c \
        write_queue.c \
        probes.d \
        $(NULL)

+if ENABLE_TUN
+libosmocore_la_SOURCES += tun.c
+endif
+
 if HAVE_SSSE3
 libosmocore_la_SOURCES += conv_acc_sse.c
 if HAVE_SSE4_1
diff --git a/src/core/socket.c b/src/core/socket.c
index bb32185..2de4bb3 100644
--- a/src/core/socket.c
+++ b/src/core/socket.c
@@ -1695,7 +1695,7 @@

 static unsigned int in6_addr_netmask_to_prefixlen(const struct in6_addr 
*netmask)
 {
-       #if defined(__linux__)
+       #if (HAVE_IN6_ADDR_S6_ADDR32)
                #define ADDRFIELD(i) s6_addr32[i]
        #else
                #define ADDRFIELD(i) __u6_addr.__u6_addr32[i]
diff --git a/src/core/tun.c b/src/core/tun.c
index 09a3f81..8234e4b 100644
--- a/src/core/tun.c
+++ b/src/core/tun.c
@@ -67,8 +67,6 @@
  *     osmo_tundev_free(tundev);
  */

-#if (!EMBEDDED)
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdio.h>
@@ -584,6 +582,4 @@
 }


-#endif /* (!EMBEDDED) */
-
 /*! @} */

--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/41878?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I2322eb2936bea35596f1fd6b6a713ea5f997b1ea
Gerrit-Change-Number: 41878
Gerrit-PatchSet: 1
Gerrit-Owner: Timur Davydov <[email protected]>

Reply via email to