* Fix to MinGW build following IPv6 changes

This commit is contained in:
Tim Angus 2008-04-05 16:01:58 +00:00
parent fcbf0bdd84
commit 85bee47f52
2 changed files with 15 additions and 6 deletions

View File

@ -381,6 +381,9 @@ endif
BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \ BASE_CFLAGS = -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes \
-DUSE_ICON -DUSE_ICON
# Require Windows XP or later
BASE_CFLAGS += -DWINVER=0x501
ifeq ($(USE_LOCAL_HEADERS),1) ifeq ($(USE_LOCAL_HEADERS),1)
BASE_CFLAGS += -I$(SDLHDIR)/include BASE_CFLAGS += -I$(SDLHDIR)/include
endif endif
@ -412,7 +415,7 @@ endif
BINEXT=.exe BINEXT=.exe
LDFLAGS= -lwsock32 -lwinmm LDFLAGS= -lws2_32 -lwinmm
CLIENT_LDFLAGS = -mwindows -lgdi32 -lole32 -lopengl32 CLIENT_LDFLAGS = -mwindows -lgdi32 -lole32 -lopengl32
ifeq ($(USE_CURL),1) ifeq ($(USE_CURL),1)

View File

@ -24,12 +24,16 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "../qcommon/qcommon.h" #include "../qcommon/qcommon.h"
#ifdef _WIN32 #ifdef _WIN32
#include <Winsock2.h> #include <winsock2.h>
#include <Ws2tcpip.h> #include <ws2tcpip.h>
#include <Wspiapi.h> #if WINVER < 0x501
#include <wspiapi.h>
#else
#include <ws2spi.h>
#endif
typedef int socklen_t; typedef int socklen_t;
#define sa_family_t ADDRESS_FAMILY typedef unsigned short sa_family_t;
#define EAGAIN WSAEWOULDBLOCK #define EAGAIN WSAEWOULDBLOCK
#define EADDRNOTAVAIL WSAEADDRNOTAVAIL #define EADDRNOTAVAIL WSAEADDRNOTAVAIL
#define EAFNOSUPPORT WSAEAFNOSUPPORT #define EAFNOSUPPORT WSAEAFNOSUPPORT
@ -524,7 +528,7 @@ Sys_SendPacket
================== ==================
*/ */
void Sys_SendPacket( int length, const void *data, netadr_t to ) { void Sys_SendPacket( int length, const void *data, netadr_t to ) {
int ret; int ret = SOCKET_ERROR;
struct sockaddr_storage addr; struct sockaddr_storage addr;
if( to.type != NA_BROADCAST && to.type != NA_IP && to.type != NA_IP6 ) { if( to.type != NA_BROADCAST && to.type != NA_IP && to.type != NA_IP6 ) {
@ -790,12 +794,14 @@ int NET_IP6Socket( char *net_interface, int port, int *err ) {
return INVALID_SOCKET; return INVALID_SOCKET;
} }
#ifdef IPV6_V6ONLY
// ipv4 addresses should not be allowed to connect via this socket. // ipv4 addresses should not be allowed to connect via this socket.
if(setsockopt(newsocket, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &i, sizeof(i)) == SOCKET_ERROR) if(setsockopt(newsocket, IPPROTO_IPV6, IPV6_V6ONLY, (char *) &i, sizeof(i)) == SOCKET_ERROR)
{ {
// win32 systems don't seem to support this anyways. // win32 systems don't seem to support this anyways.
Com_DPrintf("WARNING: NET_IP6Socket: setsockopt IPV6_V6ONLY: %s\n", NET_ErrorString()); Com_DPrintf("WARNING: NET_IP6Socket: setsockopt IPV6_V6ONLY: %s\n", NET_ErrorString());
} }
#endif
// make it broadcast capable // make it broadcast capable
if( setsockopt( newsocket, SOL_SOCKET, SO_BROADCAST, (char *) &i, sizeof(i) ) == SOCKET_ERROR ) { if( setsockopt( newsocket, SOL_SOCKET, SO_BROADCAST, (char *) &i, sizeof(i) ) == SOCKET_ERROR ) {