3#ifndef ENGINE_SHARED_NETWORK_H
4#define ENGINE_SHARED_NETWORK_H
515 int Send(
int ClientId,
const char *
pLine);
bool m_LineEndingDetected
Definition network.h:360
EState m_State
Definition network.h:350
int m_BufferOffset
Definition network.h:356
int Send(const char *pLine)
Definition network_console_conn.cpp:156
char m_aBuffer[NET_MAX_PACKETSIZE]
Definition network.h:355
EState
Definition network.h:343
char m_aErrorString[256]
Definition network.h:358
void Reset()
Definition network_console_conn.cpp:6
const NETADDR * PeerAddress() const
Definition network.h:368
NETSOCKET m_Socket
Definition network.h:353
void Disconnect(const char *pReason)
Definition network_console_conn.cpp:43
char m_aLineEnding[3]
Definition network.h:361
int Init(NETSOCKET Socket, const NETADDR *pAddr)
Definition network_console_conn.cpp:28
const char * ErrorString() const
Definition network.h:369
int Recv(char *pLine, int MaxLength)
Definition network_console_conn.cpp:93
EState State() const
Definition network.h:367
int Update()
Definition network_console_conn.cpp:56
NETADDR m_PeerAddr
Definition network.h:352
static void SendControlMsgWithToken7(NETSOCKET Socket, NETADDR *pAddr, TOKEN Token, int Ack, int ControlMsg, TOKEN MyToken, bool Extended)
Definition network.cpp:382
static int Decompress(const void *pData, int DataSize, void *pOutput, int OutputSize)
Definition network.cpp:486
static void SendPacketConnlessWithToken7(NETSOCKET Socket, NETADDR *pAddr, const void *pData, int DataSize, SECURITY_TOKEN Token, SECURITY_TOKEN ResponseToken)
Definition network.cpp:152
static void Init()
Definition network.cpp:491
static void SendPacketConnless(NETSOCKET Socket, NETADDR *pAddr, const void *pData, int DataSize, bool Extended, unsigned char aExtra[NET_CONNLESS_EXTRA_SIZE])
Definition network.cpp:132
static int UnpackPacket(unsigned char *pBuffer, int Size, CNetPacketConstruct *pPacket, bool &Sixup, SECURITY_TOKEN *pSecurityToken=nullptr, SECURITY_TOKEN *pResponseToken=nullptr)
Definition network.cpp:255
static bool IsValidConnectionOrientedPacket(const CNetPacketConstruct *pPacket)
Definition network.cpp:107
static void SendPacket(NETSOCKET Socket, NETADDR *pAddr, CNetPacketConstruct *pPacket, SECURITY_TOKEN SecurityToken, bool Sixup=false)
Definition network.cpp:166
static std::optional< int > UnpackPacketFlags(unsigned char *pBuffer, int Size)
Definition network.cpp:245
static void SendControlMsg(NETSOCKET Socket, NETADDR *pAddr, int Ack, int ControlMsg, const void *pExtra, int ExtraSize, SECURITY_TOKEN SecurityToken, bool Sixup=false)
Definition network.cpp:368
static IOHANDLE ms_DataLogSent
Definition network.h:608
static bool IsSeqInBackroom(int Seq, int Ack)
Definition network.cpp:422
static int Compress(const void *pData, int DataSize, void *pOutput, int OutputSize)
Definition network.cpp:481
static void CloseLog()
Definition network.cpp:464
static IOHANDLE ms_DataLogRecv
Definition network.h:609
static CHuffman ms_Huffman
Definition network.h:610
static void OpenLog(IOHANDLE DataLogSent, IOHANDLE DataLogRecv)
Definition network.cpp:445
int m_Flags
Definition network.h:155
int64_t m_FirstSendTime
Definition network.h:161
int m_Sequence
Definition network.h:159
unsigned char * m_pData
Definition network.h:157
int64_t m_LastSendTime
Definition network.h:160
int m_DataSize
Definition network.h:156
int State()
Definition network_client.cpp:174
const char * ErrorString() const
Definition network_client.cpp:193
NETSOCKET m_Socket
Definition network.h:571
void Connect7(const NETADDR *pAddr, int NumAddrs)
Definition network_client.cpp:62
void Connect(const NETADDR *pAddr, int NumAddrs)
Definition network_client.cpp:57
void Disconnect(const char *pReason)
Definition network_client.cpp:43
CStun * m_pStun
Definition network.h:568
int Flush()
Definition network_client.cpp:183
void RefreshStun()
Definition network_client.cpp:203
CONNECTIVITY GetConnectivity(int NetType, NETADDR *pGlobalAddr)
Definition network_client.cpp:208
CNetRecvUnpacker m_RecvUnpacker
Definition network.h:565
void ResetErrorString()
Definition network_client.cpp:67
int Send(CNetChunk *pChunk)
Definition network_client.cpp:137
CNetConnection m_Connection
Definition network.h:564
void FeedStunServer(NETADDR StunServer)
Definition network_client.cpp:198
const NETADDR * ServerAddress() const
Definition network.h:594
void Update()
Definition network_client.cpp:48
int Recv(CNetChunk *pChunk, SECURITY_TOKEN *pResponseToken, bool Sixup)
Definition network_client.cpp:72
CNetTokenCache m_TokenCache
Definition network.h:566
void Close()
Definition network_client.cpp:28
bool Open(NETADDR BindAddr)
Definition network_client.cpp:8
void ConnectAddresses(const NETADDR **ppAddrs, int *pNumAddrs) const
Definition network.h:595
int NetType() const
Definition network.h:592
bool GotProblems(int64_t MaxLatency) const
Definition network_client.cpp:188
void SendControl(int ControlMsg, const void *pExtra, int ExtraSize)
Definition network_conn.cpp:193
const NETADDR * PeerAddress() const
Definition network.h:305
void SetError(const char *pString)
Definition network_conn.cpp:65
void SetToken7(TOKEN Token)
Definition network_conn.cpp:261
void Disconnect(const char *pReason)
Definition network_conn.cpp:276
bool m_UnknownSeq
Definition network.h:245
void SendConnect()
Definition network_conn.cpp:183
int Connect7(const NETADDR *pAddr, int NumAddrs)
Definition network_conn.cpp:239
void DirectInit(const NETADDR &Addr, SECURITY_TOKEN SecurityToken, SECURITY_TOKEN Token, bool Sixup)
Definition network_conn.cpp:302
bool IsSixup() const
Definition network.h:268
void SignalResend()
Definition network_conn.cpp:95
EState m_State
Definition network.h:242
const char * ErrorString() const
Definition network.h:317
void Resend()
Definition network_conn.cpp:206
void ResendChunk(CNetChunkResend *pResend)
Definition network_conn.cpp:200
void ConnectAddresses(const NETADDR **ppAddrs, int *pNumAddrs) const
Definition network.h:310
NETADDR m_PeerAddr
Definition network.h:259
const std::array< char, NETADDR_MAXSTRSIZE > & PeerAddressString(bool IncludePort) const
Definition network.h:306
NETADDR m_aConnectAddrs[16]
Definition network.h:257
int Feed(CNetPacketConstruct *pPacket, NETADDR *pAddr, SECURITY_TOKEN SecurityToken=NET_SECURITY_TOKEN_UNSUPPORTED, SECURITY_TOKEN ResponseToken=NET_SECURITY_TOKEN_UNSUPPORTED)
Definition network_conn.cpp:321
void AckChunks(int Ack)
Definition network_conn.cpp:80
void ResetStats()
Definition network_conn.cpp:23
int64_t m_LastRecvTime
Definition network.h:250
int Flush()
Definition network_conn.cpp:100
char m_aErrorString[256]
Definition network.h:253
int QueueChunkEx(int Flags, int DataSize, const void *pData, int Sequence)
Definition network_conn.cpp:122
unsigned short m_Ack
Definition network.h:240
NETSTATS m_Stats
Definition network.h:261
CStaticRingBuffer< CNetChunkResend, NET_CONN_BUFFERSIZE > * ResendBuffer()
Definition network.h:326
void SetTimedOut(const NETADDR *pAddr, int Sequence, int Ack, SECURITY_TOKEN SecurityToken, CStaticRingBuffer< CNetChunkResend, NET_CONN_BUFFERSIZE > *pResendBuffer, bool Sixup)
Definition network_conn.cpp:590
int64_t m_LastSendTime
Definition network.h:251
void ClearPeerAddr()
Definition network_conn.cpp:16
void SendControlWithToken7(int ControlMsg, SECURITY_TOKEN ResponseToken)
Definition network_conn.cpp:232
unsigned short m_Sequence
Definition network.h:239
void Reset(bool Rejoin=false)
Definition network_conn.cpp:30
SECURITY_TOKEN m_Token
Definition network.h:336
EState State() const
Definition network.h:304
int m_NumConnectAddrs
Definition network.h:258
void ResetErrorString()
Definition network.h:316
int Update()
Definition network_conn.cpp:516
std::array< char, NETADDR_MAXSTRSIZE > m_aPeerAddrStrNoPort
Definition network.h:264
EState
Definition network.h:227
int SecurityToken() const
Definition network.h:325
NETSOCKET m_Socket
Definition network.h:260
int AckSequence() const
Definition network.h:323
int64_t m_LastUpdateTime
Definition network.h:249
std::array< char, NETADDR_MAXSTRSIZE > m_aPeerAddrStr
Definition network.h:263
void SetSequence(int Sequence)
Definition network.h:333
bool m_BlockCloseMsg
Definition network.h:244
bool m_TimeoutSituation
Definition network.h:286
int64_t ConnectTime() const
Definition network.h:321
unsigned short m_PeerAck
Definition network.h:241
CStaticRingBuffer< CNetChunkResend, NET_CONN_BUFFERSIZE > m_Buffer
Definition network.h:247
class CNetBase * m_pNetBase
Definition network.h:267
int Connect(const NETADDR *pAddr, int NumAddrs)
Definition network_conn.cpp:212
void SetPeerAddr(const NETADDR *pAddr)
Definition network_conn.cpp:9
const char * ErrorString()
Definition network_conn.cpp:60
int SeqSequence() const
Definition network.h:324
int64_t LastRecvTime() const
Definition network.h:320
static TOKEN GenerateToken7(const NETADDR *pPeerAddr)
Definition network_conn.cpp:269
bool m_Sixup
Definition network.h:335
SECURITY_TOKEN m_SecurityToken
Definition network.h:236
CNetPacketConstruct m_Construct
Definition network.h:255
int m_RemoteClosed
Definition network.h:243
void Init(NETSOCKET Socket, bool BlockCloseMsg)
Definition network_conn.cpp:70
void SetUnknownSeq()
Definition network.h:332
int QueueChunk(int Flags, int DataSize, const void *pData)
Definition network_conn.cpp:176
bool m_TimeoutProtected
Definition network.h:285
CNetBan * m_pNetBan
Definition network.h:497
CNetBan * NetBan() const
Definition network.h:524
void SetCallbacks(NETFUNC_NEWCLIENT_CON pfnNewClient, NETFUNC_DELCLIENT pfnDelClient, void *pUser)
Definition network_console.cpp:35
CNetRecvUnpacker m_RecvUnpacker
Definition network.h:504
int Send(int ClientId, const char *pLine)
Definition network_console.cpp:148
void Drop(int ClientId, const char *pReason)
Definition network_console.cpp:56
void Close()
Definition network_console.cpp:42
NETSOCKET m_Socket
Definition network.h:496
int AcceptClient(NETSOCKET Socket, const NETADDR *pAddr)
Definition network_console.cpp:64
void Update()
Definition network_console.cpp:116
NETFUNC_DELCLIENT m_pfnDelClient
Definition network.h:501
NETFUNC_NEWCLIENT_CON m_pfnNewClient
Definition network.h:500
int Recv(char *pLine, int MaxLength, int *pClientId=nullptr)
Definition network_console.cpp:134
void * m_pUser
Definition network.h:502
CSlot m_aSlots[NET_MAX_CONSOLE_CLIENTS]
Definition network.h:498
bool Open(NETADDR BindAddr, CNetBan *pNetBan)
Definition network_console.cpp:8
const NETADDR * ClientAddr(int ClientId) const
Definition network.h:523
unsigned char m_aExtraData[NET_CONNLESS_EXTRA_SIZE]
Definition network.h:172
int m_Ack
Definition network.h:168
int m_DataSize
Definition network.h:170
int m_NumChunks
Definition network.h:169
unsigned char m_aChunkData[NET_MAX_PAYLOAD]
Definition network.h:171
int m_Flags
Definition network.h:167
bool m_Valid
Definition network.h:380
void Start(const NETADDR *pAddr, CNetConnection *pConnection, int ClientId)
Definition network.cpp:29
int FetchChunk(CNetChunk *pChunk)
Definition network.cpp:39
int m_ClientId
Definition network.h:385
void Clear()
Definition network.cpp:24
NETADDR m_Addr
Definition network.h:382
CNetRecvUnpacker()
Definition network.h:389
int m_CurrentChunk
Definition network.h:384
unsigned char m_aBuffer[NET_MAX_PACKETSIZE]
Definition network.h:387
CNetPacketConstruct m_Data
Definition network.h:386
CNetConnection * m_pConnection
Definition network.h:383
int TryAcceptClient(NETADDR &Addr, SECURITY_TOKEN SecurityToken, bool VanillaAuth=false, bool Sixup=false, SECURITY_TOKEN Token=0)
Definition network_server.cpp:203
NETFUNC_NEWCLIENT m_pfnNewClient
Definition network.h:418
CNetBan * NetBan() const
Definition network.h:469
int m_MaxClients
Definition network.h:415
void SendMsgs(NETADDR &Addr, const CPacker **ppMsgs, int Num)
Definition network_server.cpp:271
bool Connlimit(NETADDR Addr)
Definition network_server.cpp:170
int GetClientSlot(const NETADDR &Addr)
Definition network_server.cpp:549
void Close()
Definition network_server.cpp:86
NETFUNC_CLIENTREJOIN m_pfnClientRejoin
Definition network.h:421
int MaxClients() const
Definition network.h:471
int64_t m_VConnFirst
Definition network.h:427
unsigned char m_aSecurityTokenSeed[16]
Definition network.h:424
CSlot m_aSlots[NET_MAX_CLIENTS]
Definition network.h:414
CNetBan * m_pNetBan
Definition network.h:413
void Update()
Definition network_server.cpp:106
const std::array< char, NETADDR_MAXSTRSIZE > & ClientAddrString(int ClientId, bool IncludePort) const
Definition network.h:465
int SetCallbacks(NETFUNC_NEWCLIENT pfnNewClient, NETFUNC_DELCLIENT pfnDelClient, void *pUser)
Definition network_server.cpp:68
int NumClientsWithAddr(NETADDR Addr)
Definition network_server.cpp:152
void SetMaxClientsPerIp(int Max)
Definition network_server.cpp:727
void ResetErrorString(int ClientId)
Definition network_server.cpp:747
int NetType() const
Definition network.h:470
CSpamConn m_aSpamConns[NET_CONNLIMIT_IPS]
Definition network.h:430
NETFUNC_NEWCLIENT_NOAUTH m_pfnNewClientNoAuth
Definition network.h:419
bool Open(NETADDR BindAddr, CNetBan *pNetBan, int MaxClients, int MaxClientsPerIp)
Definition network_server.cpp:40
int OnSixupCtrlMsg(NETADDR &Addr, CNetChunk *pChunk, int ControlMsg, const CNetPacketConstruct &Packet, SECURITY_TOKEN &ResponseToken, SECURITY_TOKEN Token)
Definition network_server.cpp:513
int Send(CNetChunk *pChunk)
Definition network_server.cpp:681
int Recv(CNetChunk *pChunk, SECURITY_TOKEN *pResponseToken)
Definition network_server.cpp:585
NETSOCKET m_Socket
Definition network.h:412
NETADDR m_Address
Definition network.h:411
void OnTokenCtrlMsg(NETADDR &Addr, int ControlMsg, const CNetPacketConstruct &Packet)
Definition network_server.cpp:482
int m_VConnNum
Definition network.h:428
bool HasSecurityToken(int ClientId) const
Definition network.h:466
void * m_pUser
Definition network.h:422
NETADDR Address() const
Definition network.h:467
bool ClientExists(const NETADDR &Addr)
Definition network.h:438
SECURITY_TOKEN GetGlobalToken()
Definition network_server.cpp:120
void SetTimeoutProtected(int ClientId)
Definition network_server.cpp:742
const char * ErrorString(int ClientId)
Definition network_server.cpp:752
NETSOCKET Socket() const
Definition network.h:468
void OnConnCtrlMsg(NETADDR &Addr, int ClientId, int ControlMsg, const CNetPacketConstruct &Packet)
Definition network_server.cpp:445
const NETADDR * ClientAddr(int ClientId) const
Definition network.h:464
void SendControl(NETADDR &Addr, int ControlMsg, const void *pExtra, int ExtraSize, SECURITY_TOKEN SecurityToken)
Definition network_server.cpp:147
NETFUNC_DELCLIENT m_pfnDelClient
Definition network.h:420
bool SetTimedOut(int ClientId, int OrigId)
Definition network_server.cpp:732
SECURITY_TOKEN GetVanillaToken(const NETADDR &Addr)
Definition network_server.cpp:141
void Drop(int ClientId, const char *pReason)
Definition network_server.cpp:96
void OnPreConnMsg(NETADDR &Addr, CNetPacketConstruct &Packet)
Definition network_server.cpp:297
SECURITY_TOKEN GetToken(const NETADDR &Addr)
Definition network_server.cpp:125
void SendTokenSixup(NETADDR &Addr, SECURITY_TOKEN Token)
Definition network_server.cpp:719
int m_MaxClientsPerIp
Definition network.h:416
CNetRecvUnpacker m_RecvUnpacker
Definition network.h:432
int64_t m_Expiry
Definition network.h:553
NETADDR m_Addr
Definition network.h:551
TOKEN m_Token
Definition network.h:552
int64_t m_Expiry
Definition network.h:545
NETADDR m_Addr
Definition network.h:542
unsigned char m_aData[NET_MAX_PAYLOAD]
Definition network.h:544
int m_DataSize
Definition network.h:543
NETSOCKET m_Socket
Definition network.h:556
std::vector< CConnlessPacketInfo > m_ConnlessPackets
Definition network.h:558
void SendPacketConnless(CNetChunk *pChunk)
Definition network.cpp:501
std::vector< CAddressInfo > m_TokenCache
Definition network.h:557
void Init(NETSOCKET Socket)
Definition network.cpp:496
TOKEN GetToken(const NETADDR *pAddr)
Definition network.cpp:571
void FetchToken(NETADDR *pAddr)
Definition network.cpp:535
void Update()
Definition network.cpp:591
TOKEN GenerateToken()
Definition network.cpp:584
void AddToken(const NETADDR *pAddr, TOKEN Token)
Definition network.cpp:540
int m_Index
Definition network.h:188
bool m_HaveStunServer
Definition network.h:191
void FeedStunServer(NETADDR StunServer)
Definition network_stun.cpp:48
void Refresh()
Definition network_stun.cpp:60
NETADDR m_StunServer
Definition network.h:192
int64_t m_LastResponse
Definition network.h:195
CONNECTIVITY GetConnectivity(NETADDR *pGlobalAddr)
Definition network_stun.cpp:113
NETADDR m_Addr
Definition network.h:194
bool OnPacket(NETADDR Addr, unsigned char *pData, int DataSize)
Definition network_stun.cpp:83
NETSOCKET m_Socket
Definition network.h:189
int m_NumUnsuccessfulTries
Definition network.h:197
int64_t m_NextTry
Definition network.h:196
bool m_HaveAddr
Definition network.h:193
CStunData m_Stun
Definition network.h:190
void Update()
Definition network_stun.cpp:65
CProtocol m_aProtocols[2]
Definition network.h:207
void Update()
Definition network_stun.cpp:164
bool OnPacket(NETADDR Addr, unsigned char *pData, int DataSize)
Definition network_stun.cpp:172
void Refresh()
Definition network_stun.cpp:156
CONNECTIVITY GetConnectivity(int NetType, NETADDR *pGlobalAddr)
Definition network_stun.cpp:182
void FeedStunServer(NETADDR StunServer)
Definition network_stun.cpp:146
int net_socket_type(NETSOCKET sock)
Definition system.cpp:1667
void * IOHANDLE
Definition logger.h:12
int(* NETFUNC_NEWCLIENT_CON)(int ClientId, void *pUser)
Definition network.h:123
@ NET_TOKEN_NONE
Definition network.h:102
@ NET_TOKEN_MAX
Definition network.h:101
@ NET_TOKENREQUEST_DATASIZE
Definition network.h:105
@ NET_TOKEN_MASK
Definition network.h:103
void WriteSecurityToken(unsigned char *pData, SECURITY_TOKEN Token)
Definition network.cpp:19
@ NET_SECURITY_TOKEN_UNKNOWN
Definition network.h:118
@ NET_SECURITY_TOKEN_UNSUPPORTED
Definition network.h:119
@ NETSTATE_CONNECTING
Definition network.h:58
@ NETSENDFLAG_EXTENDED
Definition network.h:55
@ NETSENDFLAG_VITAL
Definition network.h:52
@ NETSTATE_OFFLINE
Definition network.h:57
@ NETSENDFLAG_CONNLESS
Definition network.h:53
@ NETSTATE_ONLINE
Definition network.h:59
@ NETSENDFLAG_FLUSH
Definition network.h:54
int(* NETFUNC_DELCLIENT)(int ClientId, const char *pReason, void *pUser)
Definition network.h:122
int(* NETFUNC_NEWCLIENT)(int ClientId, void *pUser, bool Sixup)
Definition network.h:124
int SECURITY_TOKEN
Definition network.h:108
const unsigned char SECURITY_TOKEN_MAGIC[4]
Definition network.cpp:12
unsigned int TOKEN
Definition network.h:109
CONNECTIVITY
Definition network.h:176
int(* NETFUNC_CLIENTREJOIN)(int ClientId, void *pUser)
Definition network.h:126
SECURITY_TOKEN ToSecurityToken(const unsigned char *pData)
Definition network.cpp:14
int(* NETFUNC_NEWCLIENT_NOAUTH)(int ClientId, void *pUser)
Definition network.h:125
@ NET_CTRLMSG_KEEPALIVE
Definition network.h:86
@ NET_CONNLESS_EXTRA_SIZE
Definition network.h:68
@ NET_CONNLIMIT_IPS
Definition network.h:94
@ NET_CHUNKFLAG_RESEND
Definition network.h:84
@ NET_PACKETFLAG_COMPRESSION
Definition network.h:79
@ NET_TOKENCACHE_PACKETEXPIRY
Definition network.h:97
@ NET_MAX_CONSOLE_CLIENTS
Definition network.h:70
@ NET_PACKETFLAG_CONNLESS
Definition network.h:77
@ NET_MAX_PACKET_CHUNKS
Definition network.h:72
@ NET_TOKENCACHE_ADDRESSEXPIRY
Definition network.h:96
@ NET_CTRLMSG_CLOSE
Definition network.h:90
@ NET_MAX_CLIENTS
Definition network.h:69
@ NET_MAX_PACKETSIZE
Definition network.h:64
@ NET_PACKETFLAG_RESEND
Definition network.h:78
@ NET_CHUNKFLAG_VITAL
Definition network.h:83
@ NET_MAX_PAYLOAD
Definition network.h:65
@ NET_CTRLMSG_CONNECT
Definition network.h:87
@ NET_PACKETFLAG_CONTROL
Definition network.h:76
@ NET_CTRLMSG_CONNECTACCEPT
Definition network.h:88
@ NET_PACKETFLAG_UNUSED
Definition network.h:74
@ NET_MAX_SEQUENCE
Definition network.h:71
@ NET_PACKETFLAG_TOKEN
Definition network.h:75
@ NET_CTRLMSG_ACCEPT
Definition network.h:89
@ NET_PACKETHEADERSIZE
Definition network.h:67
@ NET_PACKETFLAG_EXTENDED
Definition network.h:81
@ NET_CONN_BUFFERSIZE
Definition network.h:92
@ NET_MAX_CHUNKHEADERSIZE
Definition network.h:66
int m_DataSize
Definition network.h:135
unsigned char m_aExtraData[NET_CONNLESS_EXTRA_SIZE]
Definition network.h:138
const void * m_pData
Definition network.h:136
NETADDR m_Address
Definition network.h:133
int m_Flags
Definition network.h:134
int m_ClientId
Definition network.h:132
CConsoleNetConnection m_Connection
Definition network.h:493
CNetConnection m_Connection
Definition network.h:401
NETADDR m_Addr
Definition network.h:406
int m_Conns
Definition network.h:408
int64_t m_Time
Definition network.h:407
Definition system.cpp:115