diff options
author | Andrey Nazarov <skuller@skuller.net> | 2008-08-16 10:19:42 +0000 |
---|---|---|
committer | Andrey Nazarov <skuller@skuller.net> | 2008-08-16 10:19:42 +0000 |
commit | 1526e22e4ff29153e9c127081e8ea8d9e2f33b8c (patch) | |
tree | b361766433d4a7b4a111865afd52803e2bbf7754 /source/net_sock.h | |
parent | e826e5f176f21cd18b3bbc22887a266835ada57c (diff) |
Split some monolithic include files into smaller ones.
Use single BSP models cache for refresh and collision subsystems.
Refresh libraries may not longer be dynamically loaded.
Made gi.TagMalloc use separate tag namespace to avoid
conflicts with engine reserverd tags.
Fixed listing order of MVD channels in chooser menu.
A lot of misc changes... MSVC build is definitely broken now.
Diffstat (limited to 'source/net_sock.h')
-rw-r--r-- | source/net_sock.h | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/source/net_sock.h b/source/net_sock.h new file mode 100644 index 0000000..e959a81 --- /dev/null +++ b/source/net_sock.h @@ -0,0 +1,154 @@ +/* +Copyright (C) 1997-2001 Id Software, Inc. + +This program is free software; you can redistribute it and/or +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. + +*/ + +// net.h -- quake's interface to the networking layer + +#define PORT_ANY -1 + +#define MAX_PACKETLEN 4096 // max length of a single packet +#define PACKET_HEADER 10 // two ints and a short (worst case) +#define MAX_PACKETLEN_DEFAULT 1400 // default quake2 limit +#define MAX_PACKETLEN_WRITABLE ( MAX_PACKETLEN - PACKET_HEADER ) +#define MAX_PACKETLEN_WRITABLE_DEFAULT ( MAX_PACKETLEN_DEFAULT - PACKET_HEADER ) + +typedef enum netadrtype_e { + NA_BAD, + NA_LOOPBACK, + NA_BROADCAST, + NA_IP +} netadrtype_t; + +typedef enum netsrc_e { + NS_CLIENT, + NS_SERVER, + NS_COUNT +} netsrc_t; + +typedef enum netflag_e { + NET_NONE = 0, + NET_CLIENT = ( 1 << 0 ), + NET_SERVER = ( 1 << 1 ) +} netflag_t; + +typedef enum netstat_e { + NET_OK, + NET_AGAIN, + NET_CLOSED, + NET_ERROR, +} neterr_t; + +typedef struct netadr_s { + netadrtype_t type; + uint8_t ip[4]; + uint16_t port; +} netadr_t; + +static inline qboolean NET_IsEqualAdr( const netadr_t *a, const netadr_t *b ) { + if( a->type != b->type ) { + return qfalse; + } + + switch( a->type ) { + case NA_LOOPBACK: + return qtrue; + case NA_IP: + case NA_BROADCAST: + if( *( uint32_t * )a->ip == *( uint32_t * )b->ip && a->port == b->port ) { + return qtrue; + } + return qfalse; + default: + break; + } + + return qfalse; +} + +static inline qboolean NET_IsEqualBaseAdr( const netadr_t *a, const netadr_t *b ) { + if( a->type != b->type ) { + return qfalse; + } + + switch( a->type ) { + case NA_LOOPBACK: + return qtrue; + case NA_IP: + case NA_BROADCAST: + if( *( uint32_t * )a->ip == *( uint32_t * )b->ip ) { + return qtrue; + } + return qfalse; + default: + break; + } + + return qfalse; +} + +static inline qboolean NET_IsLanAddress( const netadr_t *adr ) { + switch( adr->type ) { + case NA_LOOPBACK: + return qtrue; + case NA_IP: + case NA_BROADCAST: + if( adr->ip[0] == 127 || adr->ip[0] == 10 ) { + return qtrue; + } + if( *( uint16_t * )adr->ip == MakeShort( 192, 168 ) || + *( uint16_t * )adr->ip == MakeShort( 172, 16 ) ) + { + return qtrue; + } + return qfalse; + default: + break; + } + + return qfalse; +} + +void NET_Init( void ); +void NET_Shutdown( void ); + +void NET_Config( netflag_t flag ); +qboolean NET_GetAddress( netsrc_t sock, netadr_t *adr ); + +neterr_t NET_GetPacket( netsrc_t sock ); +neterr_t NET_SendPacket( netsrc_t sock, const netadr_t *to, size_t length, const void *data ); +qboolean NET_GetLoopPacket( netsrc_t sock ); + +char * NET_AdrToString( const netadr_t *a ); +qboolean NET_StringToAdr( const char *s, netadr_t *a, int port ); +void NET_Sleep( int msec ); + +#if USE_CLIENT +#define NET_IsLocalAddress( adr ) ( (adr)->type == NA_LOOPBACK ) +#else +#define NET_IsLocalAddress( adr ) 0 +#endif + +const char *NET_ErrorString( void ); + +extern cvar_t *net_ip; +extern cvar_t *net_port; + +extern netadr_t net_from; + + |