Author: cazfi Date: Wed Oct 14 17:31:10 2015 New Revision: 30074 URL: http://svn.gna.org/viewcvs/freeciv?rev=30074&view=rev Log: Use ip_mreqn structure as option for IP_ADD_MEMBERSIP setsockopt() if available.
See patch #6409 Modified: trunk/client/servers.c trunk/configure.ac trunk/server/sernet.c Modified: trunk/client/servers.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/client/servers.c?rev=30074&r1=30073&r2=30074&view=diff ============================================================================== --- trunk/client/servers.c (original) +++ trunk/client/servers.c Wed Oct 14 17:31:10 2015 @@ -352,7 +352,11 @@ #else /* HAVE_WINSOCK */ char buffer[MAX_LEN_PACKET]; #endif /* HAVE_WINSOCK */ +#ifdef HAVE_IP_MREQN + struct ip_mreqn mreq4; +#else struct ip_mreq mreq4; +#endif const char *group; size_t size; int family; @@ -452,7 +456,12 @@ #endif /* IPv6 support */ { fc_inet_aton(group, &mreq4.imr_multiaddr, FALSE); - mreq4.imr_interface.s_addr = htonl(INADDR_ANY); +#ifdef HAVE_IP_MREQN + mreq4.imr_address.s_addr = htonl(INADDR_ANY); + mreq4.imr_ifindex = 0; +#else + mreq4.imr_interface.s_addr = htonl(INADDR_ANY); +#endif if (setsockopt(scan->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char*)&mreq4, sizeof(mreq4)) < 0) { Modified: trunk/configure.ac URL: http://svn.gna.org/viewcvs/freeciv/trunk/configure.ac?rev=30074&r1=30073&r2=30074&view=diff ============================================================================== --- trunk/configure.ac (original) +++ trunk/configure.ac Wed Oct 14 17:31:10 2015 @@ -1168,6 +1168,10 @@ AC_MSG_CHECKING(for working gettimeofday) FC_CHECK_GETTIMEOFDAY_RUNTIME(,AC_DEFINE([HAVE_GETTIMEOFDAY], [1], [Define if the gettimeofday function works and is sane.]),) + +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <netinet/in.h>]], +[[struct ip_mreqn req; req.imr_ifindex = 0;]])], +[AC_DEFINE([HAVE_IP_MREQN], [1], [struct ip_mreqn available])]) dnl Check for extra socket libraries. dnl If the AC_CHECK_FUNCS check finds the function, we don't look any Modified: trunk/server/sernet.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/sernet.c?rev=30074&r1=30073&r2=30074&view=diff ============================================================================== --- trunk/server/sernet.c (original) +++ trunk/server/sernet.c Wed Oct 14 17:31:10 2015 @@ -1084,7 +1084,11 @@ { /* setup socket address */ union fc_sockaddr addr; +#ifdef HAVE_IP_MREQN + struct ip_mreqn mreq4; +#else struct ip_mreq mreq4; +#endif const char *cause, *group; int j, on, s; int lan_family; @@ -1269,7 +1273,12 @@ #endif /* IPV6 Support */ if (addr.saddr.sa_family == AF_INET) { fc_inet_aton(group, &mreq4.imr_multiaddr, FALSE); - mreq4.imr_interface.s_addr = htonl(INADDR_ANY); +#ifdef HAVE_IP_MREQN + mreq4.imr_address.s_addr = htonl(INADDR_ANY); + mreq4.imr_ifindex = 0; +#else + mreq4.imr_interface.s_addr = htonl(INADDR_ANY); +#endif if (setsockopt(socklan, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char*)&mreq4, sizeof(mreq4)) < 0) { _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits