From e476442cf0e84c65565ace545f5b73602b5f0ffc Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 22 May 2011 12:25:57 +0200 Subject: [PATCH] GSMTAP/socket code: Check for sys/socket.h and conditionally compile --- configure.in | 2 +- include/osmocom/core/socket.h | 5 +++-- src/gsmtap_util.c | 14 ++++++++------ src/socket.c | 6 +++++- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/configure.in b/configure.in index ead18f071..2e22bb244 100644 --- a/configure.in +++ b/configure.in @@ -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" diff --git a/include/osmocom/core/socket.h b/include/osmocom/core/socket.h index 3ede524b3..a3baa9d51 100644 --- a/include/osmocom/core/socket.h +++ b/include/osmocom/core/socket.h @@ -2,7 +2,8 @@ #define _OSMOCORE_SOCKET_H #include -#include + +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 */ diff --git a/src/gsmtap_util.c b/src/gsmtap_util.c index 15426358d..5c68b6a0c 100644 --- a/src/gsmtap_util.c +++ b/src/gsmtap_util.c @@ -32,10 +32,9 @@ #include #include -#include -#include #include -#include + +#include #include #include @@ -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 +#include + /* 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 */ diff --git a/src/socket.c b/src/socket.c index bd4914fd3..e053c24d1 100644 --- a/src/socket.c +++ b/src/socket.c @@ -1,5 +1,7 @@ #include "../config.h" +#ifdef HAVE_SYS_SOCKET_H + #include #include #include @@ -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 */