From b1f7d98c0e5829bd53dd63806eb02d371eba7741 Mon Sep 17 00:00:00 2001 From: divverent Date: Mon, 3 Aug 2015 16:25:36 +0000 Subject: [PATCH] Compile with IPv6 support by default Invert logic of SUPPORTIPV6 define by changing to NOSUPPORTIPV6. Include commented-out entry in makefile to allow for disabling IPv6 support should the user be burdened by their operating system. From: Jeremy Visser git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@12217 d7cf8633-e32d-0410-b094-e92efae38249 ::stable-branch::merge=a061e592f5be6deb9bd609a060f006836ce07b72 --- BSDmakefile | 3 +++ lhnet.c | 32 ++++++++++++++++---------------- makefile | 4 ++++ makefile.inc | 2 +- netconn.c | 6 +++--- 5 files changed, 27 insertions(+), 20 deletions(-) diff --git a/BSDmakefile b/BSDmakefile index eb135cef..d13013b5 100644 --- a/BSDmakefile +++ b/BSDmakefile @@ -171,6 +171,9 @@ LDFLAGS_SDL+=$(LDFLAGS_UNIXSDL_PRELOAD) CFLAGS_PRELOAD=$(CFLAGS_UNIX_PRELOAD) .endif +CFLAGS_NET= +# Systems without IPv6 support should uncomment this: +#CFLAGS_NET+=-DNOSUPPORTIPV6 ##### BSD Make specific definitions ##### diff --git a/lhnet.c b/lhnet.c index e2ded868..20781f82 100644 --- a/lhnet.c +++ b/lhnet.c @@ -5,7 +5,7 @@ #ifdef _MSC_VER #pragma comment(lib, "ws2_32.lib") #endif -# ifdef SUPPORTIPV6 +# ifndef NOSUPPORTIPV6 // Windows XP or higher is required for getaddrinfo, but the inclusion of wspiapi provides fallbacks for older versions # define _WIN32_WINNT 0x0501 # endif @@ -33,7 +33,7 @@ #include #include #include -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 #include #endif #endif @@ -97,7 +97,7 @@ typedef struct lhnetaddressnative_s { struct sockaddr sock; struct sockaddr_in in; -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 struct sockaddr_in6 in6; #endif } @@ -139,7 +139,7 @@ int LHNETADDRESS_FromPort(lhnetaddress_t *vaddress, lhnetaddresstype_t addressty address->addr.in.sin_family = AF_INET; address->addr.in.sin_port = htons((unsigned short)port); return 1; -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 case LHNETADDRESSTYPE_INET6: // [0:0:0:0:0:0:0:0]:port (IN6ADDR_ANY, binds to all interfaces) memset(address, 0, sizeof(*address)); @@ -153,7 +153,7 @@ int LHNETADDRESS_FromPort(lhnetaddress_t *vaddress, lhnetaddresstype_t addressty return 0; } -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 static int LHNETADDRESS_Resolve(lhnetaddressnative_t *address, const char *name, int port) { char port_buff [16]; @@ -453,7 +453,7 @@ int LHNETADDRESS_FromString(lhnetaddress_t *vaddress, const char *string, int de address->port = port; if (address->addresstype == LHNETADDRESSTYPE_INET6) { -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 address->addr.in6.sin6_port = htons((unsigned short)port); return 1; #endif @@ -471,7 +471,7 @@ int LHNETADDRESS_FromString(lhnetaddress_t *vaddress, const char *string, int de { if (hostentry->h_addrtype == AF_INET6) { -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 // great it worked address->addresstype = LHNETADDRESSTYPE_INET6; address->port = port; @@ -579,7 +579,7 @@ int LHNETADDRESS_ToString(const lhnetaddress_t *vaddress, char *string, int stri } } break; -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 case LHNETADDRESSTYPE_INET6: a = (const unsigned char *)(&address->addr.in6.sin6_addr); if (includeport) @@ -614,7 +614,7 @@ int LHNETADDRESS_GetAddressType(const lhnetaddress_t *address) const char *LHNETADDRESS_GetInterfaceName(const lhnetaddress_t *vaddress, char *ifname, size_t ifnamelength) { -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 lhnetaddressnative_t *address = (lhnetaddressnative_t *)vaddress; if (address && address->addresstype == LHNETADDRESSTYPE_INET6) @@ -659,7 +659,7 @@ int LHNETADDRESS_SetPort(lhnetaddress_t *vaddress, int port) case LHNETADDRESSTYPE_INET4: address->addr.in.sin_port = htons((unsigned short)port); return 1; -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 case LHNETADDRESSTYPE_INET6: address->addr.in6.sin6_port = htons((unsigned short)port); return 1; @@ -691,7 +691,7 @@ int LHNETADDRESS_Compare(const lhnetaddress_t *vaddress1, const lhnetaddress_t * if (address1->port != address2->port) return -1; return 0; -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 case LHNETADDRESSTYPE_INET6: if (address1->addr.in6.sin6_family != address2->addr.in6.sin6_family) return 1; @@ -912,14 +912,14 @@ lhnetsocket_t *LHNET_OpenSocket_Connectionless(lhnetaddress_t *address) } break; case LHNETADDRESSTYPE_INET4: -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 case LHNETADDRESSTYPE_INET6: #endif #ifdef WIN32 if (lhnet_didWSAStartup) { #endif -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 if ((lhnetsocket->inetsocket = socket(address->addresstype == LHNETADDRESSTYPE_INET6 ? PF_INET6 : PF_INET, SOCK_DGRAM, IPPROTO_UDP)) != -1) #else if ((lhnetsocket->inetsocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) != -1) @@ -972,7 +972,7 @@ lhnetsocket_t *LHNET_OpenSocket_Connectionless(lhnetaddress_t *address) } #endif -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 if (address->addresstype == LHNETADDRESSTYPE_INET6) { namelen = sizeof(localaddress->addr.in6); @@ -1155,7 +1155,7 @@ int LHNET_Read(lhnetsocket_t *lhnetsocket, void *content, int maxcontentlength, Con_DPrintf("LHNET_Read: recvfrom returned error: %s\n", LHNETPRIVATE_StrError()); } } -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 else if (lhnetsocket->address.addresstype == LHNETADDRESSTYPE_INET6) { SOCKLEN_T inetaddresslength; @@ -1223,7 +1223,7 @@ int LHNET_Write(lhnetsocket_t *lhnetsocket, const void *content, int contentleng Con_DPrintf("LHNET_Write: sendto returned error: %s\n", LHNETPRIVATE_StrError()); } } -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 else if (lhnetsocket->address.addresstype == LHNETADDRESSTYPE_INET6) { value = sendto(lhnetsocket->inetsocket, (char *)content, contentlength, 0, (struct sockaddr *)&address->addr.in6, sizeof(struct sockaddr_in6)); diff --git a/makefile b/makefile index bbd0a76d..970064c5 100644 --- a/makefile +++ b/makefile @@ -402,6 +402,10 @@ ifdef DP_PRELOAD_DEPENDENCIES endif endif +CFLAGS_NET= +# Systems without IPv6 support should uncomment this: +#CFLAGS_NET+=-DNOSUPPORTIPV6 + ##### GNU Make specific definitions ##### DO_LD=$(CC) -o ../../../$@ $^ $(LDFLAGS) diff --git a/makefile.inc b/makefile.inc index c7e98d22..a0afbf23 100644 --- a/makefile.inc +++ b/makefile.inc @@ -172,7 +172,7 @@ OBJ_SDL= builddate.c sys_sdl.o vid_sdl.o thread_sdl.o $(OBJ_MENU) $(OBJ_SND_COMM # Compilation -CFLAGS_COMMON=$(CFLAGS_MAKEDEP) $(CFLAGS_PRELOAD) $(CFLAGS_FS) $(CFLAGS_WARNINGS) $(CFLAGS_LIBZ) $(CFLAGS_LIBJPEG) $(CFLAGS_D3D) -D_FILE_OFFSET_BITS=64 -D__KERNEL_STRICT_NAMES -I../../../ +CFLAGS_COMMON=$(CFLAGS_MAKEDEP) $(CFLAGS_PRELOAD) $(CFLAGS_FS) $(CFLAGS_WARNINGS) $(CFLAGS_LIBZ) $(CFLAGS_LIBJPEG) $(CFLAGS_D3D) $(CFLAGS_NET) -D_FILE_OFFSET_BITS=64 -D__KERNEL_STRICT_NAMES -I../../../ CFLAGS_CLIENT=-DCONFIG_MENU -DCONFIG_CD $(CFLAGS_VIDEO_CAPTURE) CFLAGS_SERVER= CFLAGS_DEBUG=-ggdb diff --git a/netconn.c b/netconn.c index 9b53ed3f..0d5c5a9d 100755 --- a/netconn.c +++ b/netconn.c @@ -47,7 +47,7 @@ static cvar_t sv_masters [] = {0, "sv_masterextra1", "69.59.212.88", "ghdigital.com - default master server 1 (admin: LordHavoc)"}, // admin: LordHavoc {0, "sv_masterextra2", "107.161.23.68", "dpmaster.deathmask.net - default master server 2 (admin: Willis)"}, // admin: Willis {0, "sv_masterextra3", "92.62.40.73", "dpmaster.tchr.no - default master server 3 (admin: tChr)"}, // admin: tChr -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 {0, "sv_masterextra4", "[2a03:4000:2:225::51:334d]:27950", "dpmaster.sudo.rm-f.org - default master server 4 (admin: divVerent)"}, // admin: divVerent {0, "sv_masterextra5", "[2604:180::4ac:98c1]:27950", "dpmaster.deathmask.net - default master server 5 ipv6 address of dpmaster.deathmask.net (admin: Willis)"}, // admin: Willis #endif @@ -1000,7 +1000,7 @@ void NetConn_OpenClientPorts(void) Con_Printf("Client using port %i\n", port); NetConn_OpenClientPort(NULL, LHNETADDRESSTYPE_LOOP, 2); NetConn_OpenClientPort(net_address.string, LHNETADDRESSTYPE_INET4, port); -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 NetConn_OpenClientPort(net_address_ipv6.string, LHNETADDRESSTYPE_INET6, port); #endif } @@ -1072,7 +1072,7 @@ void NetConn_OpenServerPorts(int opennetports) NetConn_OpenServerPort(NULL, LHNETADDRESSTYPE_LOOP, 1, 1); if (opennetports) { -#ifdef SUPPORTIPV6 +#ifndef NOSUPPORTIPV6 qboolean ip4success = NetConn_OpenServerPort(net_address.string, LHNETADDRESSTYPE_INET4, port, 100); NetConn_OpenServerPort(net_address_ipv6.string, LHNETADDRESSTYPE_INET6, port, ip4success ? 1 : 100); #else -- 2.39.2