Mercurial > hg > freeDiameter
changeset 51:08d8cbeff30b
Fix for number of args to sctp_connectx
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Fri, 27 Nov 2009 17:19:45 +0900 |
parents | 204718b0fa54 |
children | 9bb1006cfa21 |
files | freeDiameter/sctp.c include/freeDiameter/CMakeLists.txt include/freeDiameter/freeDiameter-host.h.in |
diffstat | 3 files changed, 18 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/freeDiameter/sctp.c Fri Nov 27 16:45:32 2009 +0900 +++ b/freeDiameter/sctp.c Fri Nov 27 17:19:45 2009 +0900 @@ -734,7 +734,11 @@ /* Try connecting */ TRACE_DEBUG(FULL, "Attempting SCTP connection (%d addresses attempted)...", count); +#ifdef SCTP_CONNECTX_4_ARGS CHECK_SYS_DO( sctp_connectx(*sock, sar.sa, count, NULL), { ret = errno; goto fail; } ); +#else /* SCTP_CONNECTX_4_ARGS */ + CHECK_SYS_DO( sctp_connectx(*sock, sar.sa, count), { ret = errno; goto fail; } ); +#endif /* SCTP_CONNECTX_4_ARGS */ free(sar.buf); sar.buf = NULL; /* Set the remaining sockopts */
--- a/include/freeDiameter/CMakeLists.txt Fri Nov 27 16:45:32 2009 +0900 +++ b/include/freeDiameter/CMakeLists.txt Fri Nov 27 17:19:45 2009 +0900 @@ -26,6 +26,7 @@ INCLUDE (CheckFunctionExists) INCLUDE (CheckIncludeFiles) INCLUDE (CheckSymbolExists) +INCLUDE (CheckCSourceCompiles) INCLUDE (TestBigEndian) # We use dlopen and dlclose @@ -52,15 +53,24 @@ ENDIF (HAVE_CLOCK_GETTIME) SET(FD_LIBS ${FD_LIBS} ${CLOCK_GETTIME_LIBS}) -# We need the sctp_getladdrs function ( -lsctp ) +# We need the sctp_connectx function among others # We need the IPPROTO_SCTP symbol from sys/socket.h, netinet/in.h or netinet/sctp.h IF(NOT DISABLE_SCTP) - CHECK_FUNCTION_EXISTS(sctp_getladdrs HAVE_NATIVE_SCTP) + CHECK_FUNCTION_EXISTS(sctp_connectx HAVE_NATIVE_SCTP) IF(NOT HAVE_NATIVE_SCTP) FIND_PACKAGE(SCTP REQUIRED) INCLUDE_DIRECTORIES(${SCTP_INCLUDE_DIRS}) SET(FD_LIBS ${FD_LIBS} ${SCTP_LIBRARIES}) ENDIF(NOT HAVE_NATIVE_SCTP) + # Now check the number of args of this function, since it changed between Ubuntu 9.04 and 9.10 + SET(CHECK_SCTP_CONNECTX_4_ARGS_SOURCE_CODE " + #include <netinet/sctp.h>; + int main() { + return sctp_connectx(0, NULL, 0, NULL); + } + ") + SET(CMAKE_REQUIRED_LIBRARIES ${SCTP_LIBRARIES}) + CHECK_C_SOURCE_COMPILES("${CHECK_SCTP_CONNECTX_4_ARGS_SOURCE_CODE}" SCTP_CONNECTX_4_ARGS) ENDIF(NOT DISABLE_SCTP) # Check byte ordering
--- a/include/freeDiameter/freeDiameter-host.h.in Fri Nov 27 16:45:32 2009 +0900 +++ b/include/freeDiameter/freeDiameter-host.h.in Fri Nov 27 17:19:45 2009 +0900 @@ -46,6 +46,8 @@ #cmakedefine DISABLE_SCTP #cmakedefine DEBUG_SCTP #cmakedefine SCTP_USE_MAPPED_ADDRESSES +#cmakedefine SCTP_CONNECTX_4_ARGS + #cmakedefine ERRORS_ON_TODO #cmakedefine DEBUG