GSMTAP/socket code: Check for sys/socket.h and conditionally compile
authorHarald Welte <laforge@gnumonks.org>
Sun, 22 May 2011 10:25:57 +0000 (12:25 +0200)
committerHarald Welte <laforge@gnumonks.org>
Sun, 22 May 2011 10:25:57 +0000 (12:25 +0200)
configure.in
include/osmocom/core/socket.h
src/gsmtap_util.c
src/socket.c

index ead18f0..2e22bb2 100644 (file)
@@ -18,7 +18,7 @@ AC_CONFIG_MACRO_DIR([m4])
 
 dnl checks for header files
 AC_HEADER_STDC
-AC_CHECK_HEADERS(execinfo.h sys/select.h syslog.h ctype.h)
+AC_CHECK_HEADERS(execinfo.h sys/select.h sys/socket.h syslog.h ctype.h)
 
 # The following test is taken from WebKit's webkit.m4
 saved_CFLAGS="$CFLAGS"
index 3ede524..a3baa9d 100644 (file)
@@ -2,7 +2,8 @@
 #define _OSMOCORE_SOCKET_H
 
 #include <stdint.h>
-#include <sys/socket.h>
+
+struct sockaddr;
 
 int osmo_sock_init(uint16_t family, uint16_t type, uint8_t proto,
                   const char *host, uint16_t port, int connect0_bind1);
@@ -11,6 +12,6 @@ int osmo_sock_init_sa(struct sockaddr *ss, uint16_t type,
                      uint8_t proto, int connect0_bind1);
 
 /* determine if the given address is a local address */
-int osmo_sockaddr_is_local(struct sockaddr *addr, socklen_t addrlen);
+int osmo_sockaddr_is_local(struct sockaddr *addr, unsigned int addrlen);
 
 #endif /* _OSMOCORE_SOCKET_H */
index 1542635..5c68b6a 100644 (file)
 #include <osmocom/gsm/protocol/gsm_04_08.h>
 #include <osmocom/gsm/rsl.h>
 
-#include <arpa/inet.h>
-#include <sys/socket.h>
 #include <sys/types.h>
-#include <netinet/in.h>
+
+#include <arpa/inet.h>
 
 #include <stdio.h>
 #include <unistd.h>
@@ -111,6 +110,11 @@ struct msgb *gsmtap_makemsg(uint16_t arfcn, uint8_t ts, uint8_t chan_type,
        return msg;
 }
 
+#ifdef HAVE_SYS_SOCKET_H
+
+#include <sys/socket.h>
+#include <netinet/in.h>
+
 /* Open a GSMTAP source (sending) socket, conncet it to host/port and
  * return resulting fd */
 int gsmtap_source_init_fd(const char *host, uint16_t port)
@@ -142,8 +146,6 @@ int gsmtap_source_add_sink_fd(int gsmtap_fd)
        return -ENODEV;
 }
 
-#ifdef HAVE_SYS_SELECT_H
-
 int gsmtap_sendmsg(struct gsmtap_inst *gti, struct msgb *msg)
 {
        if (gti->ofd_wq_mode)
@@ -270,4 +272,4 @@ struct gsmtap_inst *gsmtap_source_init(const char *host, uint16_t port,
        return gti;
 }
 
-#endif /* HAVE_SYS_SELECT_H */
+#endif /* HAVE_SYS_SOCKET_H */
index bd4914f..e053c24 100644 (file)
@@ -1,5 +1,7 @@
 #include "../config.h"
 
+#ifdef HAVE_SYS_SOCKET_H
+
 #include <osmocom/core/logging.h>
 #include <osmocom/core/select.h>
 #include <osmocom/core/socket.h>
@@ -97,7 +99,7 @@ int osmo_sock_init_sa(struct sockaddr *ss, uint16_t type,
 }
 
 static int sockaddr_equal(const struct sockaddr *a,
-                         const struct sockaddr *b, socklen_t len)
+                         const struct sockaddr *b, unsigned int len)
 {
        struct sockaddr_in *sin_a, *sin_b;
        struct sockaddr_in6 *sin6_a, *sin6_b;
@@ -141,3 +143,5 @@ int osmo_sockaddr_is_local(struct sockaddr *addr, socklen_t addrlen)
 
        return 0;
 }
+
+#endif /* HAVE_SYS_SOCKET_H */