mirror of
https://github.com/FWGS/xash3d-fwgs
synced 2024-11-22 09:56:22 +01:00
common: replace netadr.h with compatible definition from GPL Quake-2 sources
This commit is contained in:
parent
2ae038c01c
commit
46f30e215c
106
common/netadr.h
106
common/netadr.h
@ -1,76 +1,74 @@
|
|||||||
/***
|
/*
|
||||||
*
|
Copyright (C) 1997-2001 Id Software, Inc.
|
||||||
* Copyright (c) 1996-2002, Valve LLC. All rights reserved.
|
|
||||||
*
|
|
||||||
* This product contains software technology licensed from Id
|
|
||||||
* Software, Inc. ("Id Technology"). Id Technology (c) 1996 Id Software, Inc.
|
|
||||||
* All Rights Reserved.
|
|
||||||
*
|
|
||||||
* Use, distribution, and modification of this source code and/or resulting
|
|
||||||
* object code is restricted to non-commercial enhancements to products from
|
|
||||||
* Valve LLC. All other use, distribution, or modification is prohibited
|
|
||||||
* without written permission from Valve LLC.
|
|
||||||
*
|
|
||||||
****/
|
|
||||||
|
|
||||||
#ifndef NETADR_H
|
This program is free software; you can redistribute it and/or
|
||||||
#define NETADR_H
|
modify it under the terms of the GNU General Public License
|
||||||
|
as published by the Free Software Foundation; either version 2
|
||||||
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
See the GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef NET_ADR_H
|
||||||
|
#define NET_ADR_H
|
||||||
|
|
||||||
#include "build.h"
|
|
||||||
#include STDINT_H
|
#include STDINT_H
|
||||||
|
|
||||||
typedef enum
|
// net.h -- quake's interface to the networking layer
|
||||||
{
|
// a1ba: copied from Quake-2/qcommon/qcommon.h and modified to support IPv6
|
||||||
NA_UNUSED = 0,
|
|
||||||
NA_LOOPBACK,
|
|
||||||
NA_BROADCAST,
|
|
||||||
NA_IP,
|
|
||||||
NA_IPX,
|
|
||||||
NA_BROADCAST_IPX,
|
|
||||||
NA_IP6,
|
|
||||||
NA_MULTICAST_IP6, // all nodes multicast
|
|
||||||
} netadrtype_t;
|
|
||||||
|
|
||||||
// Original structure:
|
#define PORT_ANY -1
|
||||||
// typedef struct netadr_s
|
|
||||||
// {
|
typedef enum {NA_LOOPBACK = 1, NA_BROADCAST, NA_IP, NA_IPX, NA_BROADCAST_IPX, NA_IP6, NA_MULTICAST_IP6} netadrtype_t;
|
||||||
// netadrtype_t type;
|
|
||||||
// unsigned char ip[4];
|
/*
|
||||||
// unsigned char ipx[10];
|
Original Quake-2 structure:
|
||||||
// unsigned short port;
|
typedef struct
|
||||||
// } netadr_t;
|
{
|
||||||
|
netadrtype_t type;
|
||||||
|
|
||||||
|
byte ip[4];
|
||||||
|
byte ipx[10];
|
||||||
|
|
||||||
|
unsigned short port;
|
||||||
|
} netadr_t;
|
||||||
|
*/
|
||||||
|
|
||||||
#pragma pack( push, 1 )
|
#pragma pack( push, 1 )
|
||||||
typedef struct netadr_s
|
typedef struct netadr_s
|
||||||
{
|
{
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
|
// IPv6 struct
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint32_t type;
|
uint16_t type6;
|
||||||
|
uint8_t ip6[16];
|
||||||
|
};
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint32_t type; // must be netadrtype_t but will break with short enums
|
||||||
union
|
union
|
||||||
{
|
{
|
||||||
uint8_t ip[4];
|
uint8_t ip[4];
|
||||||
uint32_t ip4;
|
uint32_t ip4; // for easier conversions
|
||||||
};
|
};
|
||||||
uint8_t ipx[10];
|
uint8_t ipx[10];
|
||||||
};
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
#if XASH_LITTLE_ENDIAN
|
|
||||||
uint16_t type6;
|
|
||||||
uint8_t ip6[16];
|
|
||||||
#elif XASH_BIG_ENDIAN
|
|
||||||
uint8_t ip6_0[2];
|
|
||||||
uint16_t type6;
|
|
||||||
uint8_t ip6_2[14];
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
uint16_t port;
|
uint16_t port;
|
||||||
} netadr_t;
|
} netadr_t;
|
||||||
#pragma pack( pop )
|
#pragma pack( pop )
|
||||||
|
|
||||||
STATIC_ASSERT( sizeof( netadr_t ) == 20, "invalid netadr_t size" );
|
STATIC_ASSERT( sizeof( netadr_t ) == 20, "netadr_t isn't 20 bytes!" );
|
||||||
|
|
||||||
#endif//NETADR_H
|
#endif // NET_ADR_H
|
||||||
|
@ -50,7 +50,7 @@ static net_gai_state_t NET_GetMasterHostByName( master_t *m )
|
|||||||
if( res == NET_EAI_OK )
|
if( res == NET_EAI_OK )
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
m->adr.type = NA_UNUSED;
|
m->adr.type = 0;
|
||||||
if( res == NET_EAI_NONAME )
|
if( res == NET_EAI_NONAME )
|
||||||
Con_Reportf( "Can't resolve adr: %s\n", m->address );
|
Con_Reportf( "Can't resolve adr: %s\n", m->address );
|
||||||
|
|
||||||
@ -266,7 +266,7 @@ static void NET_AddMaster( const char *addr, qboolean save )
|
|||||||
master->sent = false;
|
master->sent = false;
|
||||||
master->save = save;
|
master->save = save;
|
||||||
master->next = NULL;
|
master->next = NULL;
|
||||||
master->adr.type = NA_UNUSED;
|
master->adr.type = 0;
|
||||||
|
|
||||||
// link in
|
// link in
|
||||||
if( last )
|
if( last )
|
||||||
@ -322,7 +322,7 @@ static void NET_ListMasters_f( void )
|
|||||||
for( i = 1, list = ml.list; list; i++, list = list->next )
|
for( i = 1, list = ml.list; list; i++, list = list->next )
|
||||||
{
|
{
|
||||||
Msg( "%d\t%s", i, list->address );
|
Msg( "%d\t%s", i, list->address );
|
||||||
if( list->adr.type != NA_UNUSED )
|
if( list->adr.type != 0 )
|
||||||
Msg( "\t%s\n", NET_AdrToString( list->adr ));
|
Msg( "\t%s\n", NET_AdrToString( list->adr ));
|
||||||
else Msg( "\n" );
|
else Msg( "\n" );
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,6 @@ static const struct in6_addr in6addr_any;
|
|||||||
|
|
||||||
#define NET_USE_FRAGMENTS
|
#define NET_USE_FRAGMENTS
|
||||||
|
|
||||||
#define PORT_ANY -1
|
|
||||||
#define MAX_LOOPBACK 4
|
#define MAX_LOOPBACK 4
|
||||||
#define MASK_LOOPBACK (MAX_LOOPBACK - 1)
|
#define MASK_LOOPBACK (MAX_LOOPBACK - 1)
|
||||||
|
|
||||||
@ -132,7 +131,7 @@ static CVAR_DEFINE_AUTO( net6_address, "0", FCVAR_PRIVILEGED|FCVAR_READ_ONLY, "c
|
|||||||
NET_ErrorString
|
NET_ErrorString
|
||||||
====================
|
====================
|
||||||
*/
|
*/
|
||||||
char *NET_ErrorString( void )
|
static char *NET_ErrorString( void )
|
||||||
{
|
{
|
||||||
#if XASH_WIN32
|
#if XASH_WIN32
|
||||||
int err = WSANOTINITIALISED;
|
int err = WSANOTINITIALISED;
|
||||||
@ -226,34 +225,17 @@ _inline qboolean NET_IsSocketValid( int socket )
|
|||||||
|
|
||||||
void NET_NetadrToIP6Bytes( uint8_t *ip6, const netadr_t *adr )
|
void NET_NetadrToIP6Bytes( uint8_t *ip6, const netadr_t *adr )
|
||||||
{
|
{
|
||||||
#if XASH_LITTLE_ENDIAN
|
|
||||||
memcpy( ip6, adr->ip6, sizeof( adr->ip6 ));
|
memcpy( ip6, adr->ip6, sizeof( adr->ip6 ));
|
||||||
#elif XASH_BIG_ENDIAN
|
|
||||||
memcpy( ip6, adr->ip6_0, sizeof( adr->ip6_0 ));
|
|
||||||
memcpy( ip6 + sizeof( adr->ip6_0 ), adr->ip6_2, sizeof( adr->ip6_2 ));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NET_IP6BytesToNetadr( netadr_t *adr, const uint8_t *ip6 )
|
void NET_IP6BytesToNetadr( netadr_t *adr, const uint8_t *ip6 )
|
||||||
{
|
{
|
||||||
#if XASH_LITTLE_ENDIAN
|
|
||||||
memcpy( adr->ip6, ip6, sizeof( adr->ip6 ));
|
memcpy( adr->ip6, ip6, sizeof( adr->ip6 ));
|
||||||
#elif XASH_BIG_ENDIAN
|
|
||||||
memcpy( adr->ip6_0, ip6, sizeof( adr->ip6_0 ));
|
|
||||||
memcpy( adr->ip6_2, ip6 + sizeof( adr->ip6_0 ), sizeof( adr->ip6_2 ));
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_inline int NET_NetadrIP6Compare( const netadr_t *a, const netadr_t *b )
|
static int NET_NetadrIP6Compare( const netadr_t *a, const netadr_t *b )
|
||||||
{
|
{
|
||||||
#if XASH_LITTLE_ENDIAN
|
|
||||||
return memcmp( a->ip6, b->ip6, sizeof( a->ip6 ));
|
return memcmp( a->ip6, b->ip6, sizeof( a->ip6 ));
|
||||||
#elif XASH_BIG_ENDIAN
|
|
||||||
int ret = memcmp( a->ip6_0, b->ip6_0, sizeof( a->ip6_0 ));
|
|
||||||
if( !ret )
|
|
||||||
return memcmp( a->ip6_2, b->ip6_2, sizeof( a->ip6_2 ));
|
|
||||||
return ret;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user