FTEQW
Documentation of the FTE engine source tree.
net.h File Reference

Go to the source code of this file.

Classes

struct  netadr_s
 
struct  sockaddr_qstorage
 
struct  netchan_t
 

Typedefs

typedef struct netadr_s netadr_t
 
typedef struct huffman_s huffman_t
 

Enumerations

enum  netadrtype_t {
  NA_INVALID , NA_LOOPBACK , NA_IP , NA_IPV6 ,
  NA_IPX , NA_UNIX , NA_IRC , NA_WEBSOCKET ,
  NA_ICE
}
 
enum  netproto_t {
  NP_DGRAM , NP_DTLS , NP_STREAM , NP_TLS ,
  NP_WS , NP_WSS , NP_NATPMP , NP_RTC_TCP ,
  NP_RTC_TLS , NP_INVALID
}
 
enum  netsrc_t { NS_CLIENT , NS_SERVER }
 
enum  neterr_t {
  NETERR_SENT = 0 , NETERR_NOROUTE = 1 , NETERR_DISCONNECTED = 2 , NETERR_MTU = 3 ,
  NETERR_CLOGGED = 4
}
 
enum  addressscope_e {
  ASCOPE_PROCESS =0 , ASCOPE_HOST =1 , ASCOPE_LINK =2 , ASCOPE_LAN =3 ,
  ASCOPE_NET =4
}
 
enum  certprops_e { QCERT_ISENCRYPTED , QCERT_PEERSUBJECT , QCERT_PEERCERTIFICATE , QCERT_LOCALCERTIFICATE }
 
enum  nqnc_packettype_e { NQNC_IGNORED , NQNC_ACK , NQNC_RELIABLE , NQNC_UNRELIABLE }
 

Functions

 FTE_ALIGN (4) qbyte net_message_buffer[MAX_OVERALLMSGLEN]
 
int TCP_OpenStream (netadr_t *remoteaddr, const char *remotename)
 
void NET_Init (void)
 
void NET_Tick (void)
 
void SVNET_RegisterCvars (void)
 
void NET_InitClient (qboolean loopbackonly)
 
void NET_CloseClient (void)
 
void NET_InitServer (void)
 
qboolean NET_WasSpecialPacket (struct ftenet_connections_s *col)
 
void NET_CloseServer (void)
 
void UDP_CloseSocket (int socket)
 
void NET_Shutdown (void)
 
qboolean NET_GetRates (struct ftenet_connections_s *collection, float *pi, float *po, float *bi, float *bo)
 
qboolean NET_UpdateRates (struct ftenet_connections_s *collection, qboolean inbound, size_t size)
 
void NET_ReadPackets (struct ftenet_connections_s *collection)
 
neterr_t NET_SendPacket (struct ftenet_connections_s *col, int length, const void *data, netadr_t *to)
 
int NET_LocalAddressForRemote (struct ftenet_connections_s *collection, netadr_t *remote, netadr_t *local, int idx)
 
void NET_PrintAddresses (struct ftenet_connections_s *collection)
 
qboolean NET_AddressSmellsFunny (netadr_t *a)
 
qboolean NET_EnsureRoute (struct ftenet_connections_s *collection, char *routename, const struct dtlspeercred_s *peerinfo, netadr_t *adr, qboolean outgoing)
 
void NET_TerminateRoute (struct ftenet_connections_s *collection, netadr_t *adr)
 
void NET_PrintConnectionsStatus (struct ftenet_connections_s *collection)
 
enum addressscope_e NET_ClassifyAddress (netadr_t *adr, const char **outdesc)
 
qboolean NET_AddrIsReliable (netadr_t *adr)
 
qboolean NET_IsEncrypted (netadr_t *adr)
 
qboolean NET_CompareAdr (netadr_t *a, netadr_t *b)
 
qboolean NET_CompareBaseAdr (netadr_t *a, netadr_t *b)
 
void NET_AdrToStringResolve (netadr_t *adr, void(*resolved)(void *ctx, void *data, size_t a, size_t b), void *ctx, size_t a, size_t b)
 
char * NET_AdrToString (char *s, int len, netadr_t *a)
 
char * NET_SockadrToString (char *s, int len, struct sockaddr_qstorage *a, size_t sizeofa)
 
char * NET_BaseAdrToString (char *s, int len, netadr_t *a)
 
size_t NET_StringToSockaddr2 (const char *s, int defaultport, netadrtype_t afhint, struct sockaddr_qstorage *sadr, int *addrfamily, int *addrsize, size_t addrcount)
 
qboolean NET_StringToAdr_NoDNS (const char *address, int port, netadr_t *out)
 
size_t NET_StringToAdr2 (const char *s, int defaultport, netadr_t *a, size_t addrcount, const char **pathstart)
 
qboolean NET_PortToAdr (netadrtype_t adrfamily, netproto_t adrprot, const char *s, netadr_t *a)
 
qboolean NET_IsClientLegal (netadr_t *adr)
 
qboolean NET_IsLoopBackAddress (netadr_t *adr)
 
qboolean NET_StringToAdrMasked (const char *s, qboolean allowdns, netadr_t *a, netadr_t *amask)
 
char * NET_AdrToStringMasked (char *s, int len, netadr_t *a, netadr_t *amask)
 
void NET_IntegerToMask (netadr_t *a, netadr_t *amask, int bits)
 
qboolean NET_CompareAdrMasked (netadr_t *a, netadr_t *b, netadr_t *mask)
 
qboolean FTENET_AddToCollection (struct ftenet_connections_s *col, const char *name, const char *address, netadrtype_t addrtype, netproto_t addrprot)
 
int NET_GetConnectionCertificate (struct ftenet_connections_s *col, netadr_t *a, enum certprops_e prop, char *out, size_t outsize)
 
qboolean NET_DTLS_Create (struct ftenet_connections_s *col, netadr_t *to, const struct dtlscred_s *cred, qboolean outgoing)
 
qboolean NET_DTLS_Decode (struct ftenet_connections_s *col)
 
qboolean NET_DTLS_Disconnect (struct ftenet_connections_s *col, netadr_t *to)
 
neterr_t ICE_SendPacket (size_t length, const void *data, netadr_t *to)
 
void ICE_Terminate (netadr_t *to)
 
int ICE_GetPeerCertificate (netadr_t *to, enum certprops_e prop, char *out, size_t outsize)
 
void ICE_Init (void)
 
qboolean NET_RegisterCrypto (void *module, struct ftecrypto_s *driver)
 
void Net_Master_Init (void)
 
void Netchan_Init (void)
 
int Netchan_Transmit (netchan_t *chan, int length, qbyte *data, int rate)
 
void Netchan_OutOfBand (netsrc_t sock, netadr_t *adr, int length, const qbyte *data)
 
void VARGS Netchan_OutOfBandPrint (netsrc_t sock, netadr_t *adr, char *format,...) LIKEPRINTF(3)
 
void VARGS Netchan_OutOfBandTPrintf (netsrc_t sock, netadr_t *adr, int language, translation_t text,...)
 
qboolean Netchan_Process (netchan_t *chan)
 
void Netchan_Setup (netsrc_t sock, netchan_t *chan, netadr_t *adr, int qport)
 
unsigned int Net_PextMask (unsigned int protover, qboolean fornq)
 
qboolean Netchan_CanPacket (netchan_t *chan, int rate)
 
void Netchan_Block (netchan_t *chan, int bytes, int rate)
 
qboolean Netchan_CanReliable (netchan_t *chan, int rate)
 
enum nqnc_packettype_e NQNetChan_Process (netchan_t *chan)
 
int Huff_PreferedCompressionCRC (void)
 
void Huff_EncryptPacket (sizebuf_t *msg, int offset)
 
void Huff_DecryptPacket (sizebuf_t *msg, int offset)
 
huffman_tHuff_CompressionCRC (int crc)
 
void Huff_CompressPacket (huffman_t *huff, sizebuf_t *msg, int offset)
 
void Huff_DecompressPacket (huffman_t *huff, sizebuf_t *msg, int offset)
 
int Huff_GetByte (qbyte *buffer, int *count)
 
void Huff_EmitByte (int ch, qbyte *buffer, int *count)
 
int UDP_OpenSocket (int port)
 
int UDP6_OpenSocket (int port)
 
int IPX_OpenSocket (int port)
 
int NetadrToSockadr (netadr_t *a, struct sockaddr_qstorage *s)
 
void SockadrToNetadr (struct sockaddr_qstorage *s, int sizeofsockaddr, netadr_t *a)
 
qboolean NET_Sleep (float seconds, qboolean stdinissocket)
 

Variables

netadr_t net_local_cl_ipadr
 
netadr_t net_from
 
struct ftenet_generic_connection_snet_from_connection
 
sizebuf_t net_message
 
cvar_t hostname
 
cvar_t dtls_psk_hint
 
cvar_t dtls_psk_user
 
cvar_t dtls_psk_key
 
cvar_t net_enable_dtls
 
cvar_t timeout
 
cvar_t tls_ignorecertificateerrors
 
int net_drop
 
cvar_t net_mtu = CVARD("net_mtu", "1440", "Specifies a maximum udp payload size, above which packets will be fragmented. If routers all worked properly this could be some massive value, and some massive value may work really nicely for lans. Use smaller values than the default if you're connecting through nested tunnels through routers that fail with IP fragmentation.")
 

Typedef Documentation

◆ huffman_t

typedef struct huffman_s huffman_t

◆ netadr_t

typedef struct netadr_s netadr_t

Enumeration Type Documentation

◆ addressscope_e

Enumerator
ASCOPE_PROCESS 
ASCOPE_HOST 
ASCOPE_LINK 
ASCOPE_LAN 
ASCOPE_NET 

◆ certprops_e

Enumerator
QCERT_ISENCRYPTED 
QCERT_PEERSUBJECT 
QCERT_PEERCERTIFICATE 
QCERT_LOCALCERTIFICATE 

◆ netadrtype_t

Enumerator
NA_INVALID 
NA_LOOPBACK 
NA_IP 
NA_IPV6 
NA_IPX 
NA_UNIX 
NA_IRC 
NA_WEBSOCKET 
NA_ICE 

◆ neterr_t

enum neterr_t
Enumerator
NETERR_SENT 
NETERR_NOROUTE 
NETERR_DISCONNECTED 
NETERR_MTU 
NETERR_CLOGGED 

◆ netproto_t

enum netproto_t
Enumerator
NP_DGRAM 
NP_DTLS 
NP_STREAM 
NP_TLS 
NP_WS 
NP_WSS 
NP_NATPMP 
NP_RTC_TCP 
NP_RTC_TLS 
NP_INVALID 

◆ netsrc_t

enum netsrc_t
Enumerator
NS_CLIENT 
NS_SERVER 

◆ nqnc_packettype_e

Enumerator
NQNC_IGNORED 
NQNC_ACK 
NQNC_RELIABLE 
NQNC_UNRELIABLE 

Function Documentation

◆ FTE_ALIGN()

FTE_ALIGN ( )

◆ FTENET_AddToCollection()

qboolean FTENET_AddToCollection ( struct ftenet_connections_s col,
const char *  name,
const char *  address,
netadrtype_t  addrtype,
netproto_t  addrprot 
)

◆ Huff_CompressionCRC()

huffman_t * Huff_CompressionCRC ( int  crc)

◆ Huff_CompressPacket()

void Huff_CompressPacket ( huffman_t huff,
sizebuf_t msg,
int  offset 
)

◆ Huff_DecompressPacket()

void Huff_DecompressPacket ( huffman_t huff,
sizebuf_t msg,
int  offset 
)

◆ Huff_DecryptPacket()

void Huff_DecryptPacket ( sizebuf_t msg,
int  offset 
)

◆ Huff_EmitByte()

void Huff_EmitByte ( int  ch,
qbyte buffer,
int count 
)

◆ Huff_EncryptPacket()

void Huff_EncryptPacket ( sizebuf_t msg,
int  offset 
)

◆ Huff_GetByte()

int Huff_GetByte ( qbyte buffer,
int count 
)

◆ Huff_PreferedCompressionCRC()

int Huff_PreferedCompressionCRC ( void  )

◆ ICE_GetPeerCertificate()

int ICE_GetPeerCertificate ( netadr_t to,
enum certprops_e  prop,
char *  out,
size_t  outsize 
)

◆ ICE_Init()

void ICE_Init ( void  )

◆ ICE_SendPacket()

neterr_t ICE_SendPacket ( size_t  length,
const void data,
netadr_t to 
)

◆ ICE_Terminate()

void ICE_Terminate ( netadr_t to)

◆ IPX_OpenSocket()

int IPX_OpenSocket ( int  port)

◆ NET_AddressSmellsFunny()

qboolean NET_AddressSmellsFunny ( netadr_t a)

◆ NET_AddrIsReliable()

qboolean NET_AddrIsReliable ( netadr_t adr)

◆ NET_AdrToString()

char * NET_AdrToString ( char *  s,
int  len,
netadr_t a 
)

◆ NET_AdrToStringMasked()

char * NET_AdrToStringMasked ( char *  s,
int  len,
netadr_t a,
netadr_t amask 
)

◆ NET_AdrToStringResolve()

void NET_AdrToStringResolve ( netadr_t adr,
void(*)(void *ctx, void *data, size_t a, size_t b resolved,
void ctx,
size_t  a,
size_t  b 
)

◆ NET_BaseAdrToString()

char * NET_BaseAdrToString ( char *  s,
int  len,
netadr_t a 
)

◆ NET_ClassifyAddress()

enum addressscope_e NET_ClassifyAddress ( netadr_t adr,
const char **  outdesc 
)

◆ NET_CloseClient()

void NET_CloseClient ( void  )

◆ NET_CloseServer()

void NET_CloseServer ( void  )

◆ NET_CompareAdr()

qboolean NET_CompareAdr ( netadr_t a,
netadr_t b 
)

◆ NET_CompareAdrMasked()

qboolean NET_CompareAdrMasked ( netadr_t a,
netadr_t b,
netadr_t mask 
)

◆ NET_CompareBaseAdr()

qboolean NET_CompareBaseAdr ( netadr_t a,
netadr_t b 
)

◆ NET_DTLS_Create()

qboolean NET_DTLS_Create ( struct ftenet_connections_s col,
netadr_t to,
const struct dtlscred_s cred,
qboolean  outgoing 
)

◆ NET_DTLS_Decode()

qboolean NET_DTLS_Decode ( struct ftenet_connections_s col)

◆ NET_DTLS_Disconnect()

qboolean NET_DTLS_Disconnect ( struct ftenet_connections_s col,
netadr_t to 
)

◆ NET_EnsureRoute()

qboolean NET_EnsureRoute ( struct ftenet_connections_s collection,
char *  routename,
const struct dtlspeercred_s *  peerinfo,
netadr_t adr,
qboolean  outgoing 
)

◆ NET_GetConnectionCertificate()

int NET_GetConnectionCertificate ( struct ftenet_connections_s col,
netadr_t a,
enum certprops_e  prop,
char *  out,
size_t  outsize 
)

◆ NET_GetRates()

qboolean NET_GetRates ( struct ftenet_connections_s collection,
float *  pi,
float *  po,
float *  bi,
float *  bo 
)

◆ NET_Init()

void NET_Init ( void  )

◆ NET_InitClient()

void NET_InitClient ( qboolean  loopbackonly)

◆ NET_InitServer()

void NET_InitServer ( void  )

◆ NET_IntegerToMask()

void NET_IntegerToMask ( netadr_t a,
netadr_t amask,
int  bits 
)

◆ NET_IsClientLegal()

qboolean NET_IsClientLegal ( netadr_t adr)

◆ NET_IsEncrypted()

qboolean NET_IsEncrypted ( netadr_t adr)

◆ NET_IsLoopBackAddress()

qboolean NET_IsLoopBackAddress ( netadr_t adr)

◆ NET_LocalAddressForRemote()

int NET_LocalAddressForRemote ( struct ftenet_connections_s collection,
netadr_t remote,
netadr_t local,
int  idx 
)

◆ Net_Master_Init()

void Net_Master_Init ( void  )

◆ Net_PextMask()

unsigned int Net_PextMask ( unsigned int  protover,
qboolean  fornq 
)

◆ NET_PortToAdr()

qboolean NET_PortToAdr ( netadrtype_t  adrfamily,
netproto_t  adrprot,
const char *  s,
netadr_t a 
)

◆ NET_PrintAddresses()

void NET_PrintAddresses ( struct ftenet_connections_s collection)

◆ NET_PrintConnectionsStatus()

void NET_PrintConnectionsStatus ( struct ftenet_connections_s collection)

◆ NET_ReadPackets()

void NET_ReadPackets ( struct ftenet_connections_s collection)

◆ NET_RegisterCrypto()

qboolean NET_RegisterCrypto ( void module,
struct ftecrypto_s driver 
)

◆ NET_SendPacket()

neterr_t NET_SendPacket ( struct ftenet_connections_s col,
int  length,
const void data,
netadr_t to 
)

◆ NET_Shutdown()

void NET_Shutdown ( void  )

◆ NET_Sleep()

qboolean NET_Sleep ( float  seconds,
qboolean  stdinissocket 
)

◆ NET_SockadrToString()

char * NET_SockadrToString ( char *  s,
int  len,
struct sockaddr_qstorage a,
size_t  sizeofa 
)

◆ NET_StringToAdr2()

size_t NET_StringToAdr2 ( const char *  s,
int  defaultport,
netadr_t a,
size_t  addrcount,
const char **  pathstart 
)

◆ NET_StringToAdr_NoDNS()

qboolean NET_StringToAdr_NoDNS ( const char *  address,
int  port,
netadr_t out 
)

◆ NET_StringToAdrMasked()

qboolean NET_StringToAdrMasked ( const char *  s,
qboolean  allowdns,
netadr_t a,
netadr_t amask 
)

◆ NET_StringToSockaddr2()

size_t NET_StringToSockaddr2 ( const char *  s,
int  defaultport,
netadrtype_t  afhint,
struct sockaddr_qstorage sadr,
int addrfamily,
int addrsize,
size_t  addrcount 
)

◆ NET_TerminateRoute()

void NET_TerminateRoute ( struct ftenet_connections_s collection,
netadr_t adr 
)

◆ NET_Tick()

void NET_Tick ( void  )

◆ NET_UpdateRates()

qboolean NET_UpdateRates ( struct ftenet_connections_s collection,
qboolean  inbound,
size_t  size 
)

◆ NET_WasSpecialPacket()

qboolean NET_WasSpecialPacket ( struct ftenet_connections_s col)

◆ NetadrToSockadr()

int NetadrToSockadr ( netadr_t a,
struct sockaddr_qstorage s 
)

◆ Netchan_Block()

void Netchan_Block ( netchan_t chan,
int  bytes,
int  rate 
)

◆ Netchan_CanPacket()

qboolean Netchan_CanPacket ( netchan_t chan,
int  rate 
)

◆ Netchan_CanReliable()

qboolean Netchan_CanReliable ( netchan_t chan,
int  rate 
)

◆ Netchan_Init()

void Netchan_Init ( void  )

◆ Netchan_OutOfBand()

void Netchan_OutOfBand ( netsrc_t  sock,
netadr_t adr,
int  length,
const qbyte data 
)

◆ Netchan_OutOfBandPrint()

void VARGS Netchan_OutOfBandPrint ( netsrc_t  sock,
netadr_t adr,
char *  format,
  ... 
)

◆ Netchan_OutOfBandTPrintf()

void VARGS Netchan_OutOfBandTPrintf ( netsrc_t  sock,
netadr_t adr,
int  language,
translation_t  text,
  ... 
)

◆ Netchan_Process()

qboolean Netchan_Process ( netchan_t chan)

◆ Netchan_Setup()

void Netchan_Setup ( netsrc_t  sock,
netchan_t chan,
netadr_t adr,
int  qport 
)

◆ Netchan_Transmit()

int Netchan_Transmit ( netchan_t chan,
int  length,
qbyte data,
int  rate 
)

◆ NQNetChan_Process()

enum nqnc_packettype_e NQNetChan_Process ( netchan_t chan)

◆ SockadrToNetadr()

void SockadrToNetadr ( struct sockaddr_qstorage s,
int  sizeofsockaddr,
netadr_t a 
)

◆ SVNET_RegisterCvars()

void SVNET_RegisterCvars ( void  )

◆ TCP_OpenStream()

int TCP_OpenStream ( netadr_t remoteaddr,
const char *  remotename 
)

◆ UDP6_OpenSocket()

int UDP6_OpenSocket ( int  port)

Con_TPrintf("Binding to IP Interface Address of %s\n",

◆ UDP_CloseSocket()

void UDP_CloseSocket ( int  socket)

◆ UDP_OpenSocket()

int UDP_OpenSocket ( int  port)

Variable Documentation

◆ dtls_psk_hint

cvar_t dtls_psk_hint
extern

◆ dtls_psk_key

cvar_t dtls_psk_key

◆ dtls_psk_user

cvar_t dtls_psk_user

◆ hostname

cvar_t hostname
extern

◆ net_drop

int net_drop
extern

◆ net_enable_dtls

cvar_t net_enable_dtls
extern

◆ net_from

netadr_t net_from
extern

◆ net_from_connection

struct ftenet_generic_connection_s* net_from_connection
extern

◆ net_local_cl_ipadr

netadr_t net_local_cl_ipadr
extern

◆ net_message

sizebuf_t net_message
extern

◆ net_mtu

cvar_t net_mtu = CVARD("net_mtu", "1440", "Specifies a maximum udp payload size, above which packets will be fragmented. If routers all worked properly this could be some massive value, and some massive value may work really nicely for lans. Use smaller values than the default if you're connecting through nested tunnels through routers that fail with IP fragmentation.")
extern

◆ timeout

cvar_t timeout
extern

◆ tls_ignorecertificateerrors

cvar_t tls_ignorecertificateerrors
extern