mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2025-02-03 06:20:57 +00:00
* net_dgrm.c: changed the types of banAddr and banMask to struct in_addr.
changed the type of testAddr in _Datagram_CheckNewConnections() to in_addr_t. a little formatting tidy-up. git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@208 af15c1b1-3010-417e-b628-4374ebc0bcbd
This commit is contained in:
parent
ca7aa6c733
commit
5475d36f5f
1 changed files with 75 additions and 36 deletions
|
@ -98,8 +98,9 @@ char *StrAddr (struct qsockaddr *addr)
|
||||||
|
|
||||||
|
|
||||||
#ifdef BAN_TEST
|
#ifdef BAN_TEST
|
||||||
unsigned long banAddr = 0x00000000;
|
|
||||||
unsigned long banMask = 0xffffffff;
|
static struct in_addr banAddr;
|
||||||
|
static struct in_addr banMask;
|
||||||
|
|
||||||
void NET_Ban_f (void)
|
void NET_Ban_f (void)
|
||||||
{
|
{
|
||||||
|
@ -126,10 +127,10 @@ void NET_Ban_f (void)
|
||||||
switch (Cmd_Argc ())
|
switch (Cmd_Argc ())
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
if (((struct in_addr *)&banAddr)->s_addr)
|
if (banAddr.s_addr != INADDR_ANY)
|
||||||
{
|
{
|
||||||
Q_strcpy(addrStr, inet_ntoa(*(struct in_addr *)&banAddr));
|
Q_strcpy(addrStr, inet_ntoa(banAddr));
|
||||||
Q_strcpy(maskStr, inet_ntoa(*(struct in_addr *)&banMask));
|
Q_strcpy(maskStr, inet_ntoa(banMask));
|
||||||
print_fn("Banning %s [%s]\n", addrStr, maskStr);
|
print_fn("Banning %s [%s]\n", addrStr, maskStr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -138,15 +139,15 @@ void NET_Ban_f (void)
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if (Q_strcasecmp(Cmd_Argv(1), "off") == 0)
|
if (Q_strcasecmp(Cmd_Argv(1), "off") == 0)
|
||||||
banAddr = 0x00000000;
|
banAddr.s_addr = INADDR_ANY;
|
||||||
else
|
else
|
||||||
banAddr = inet_addr(Cmd_Argv(1));
|
banAddr.s_addr = inet_addr(Cmd_Argv(1));
|
||||||
banMask = 0xffffffff;
|
banMask.s_addr = INADDR_NONE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
banAddr = inet_addr(Cmd_Argv(1));
|
banAddr.s_addr = inet_addr(Cmd_Argv(1));
|
||||||
banMask = inet_addr(Cmd_Argv(2));
|
banMask.s_addr = inet_addr(Cmd_Argv(2));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -343,9 +344,9 @@ int Datagram_GetMessage (qsocket_t *sock)
|
||||||
if (sfunc.AddrCompare(&readaddr, &sock->addr) != 0)
|
if (sfunc.AddrCompare(&readaddr, &sock->addr) != 0)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
Con_DPrintf("Forged packet received\n");
|
Con_Printf("Forged packet received\n");
|
||||||
Con_DPrintf("Expected: %s\n", StrAddr (&sock->addr));
|
Con_Printf("Expected: %s\n", StrAddr (&sock->addr));
|
||||||
Con_DPrintf("Received: %s\n", StrAddr (&readaddr));
|
Con_Printf("Received: %s\n", StrAddr (&readaddr));
|
||||||
#endif
|
#endif
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -497,14 +498,23 @@ void NET_Stats_f (void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (s = net_activeSockets; s; s = s->next)
|
for (s = net_activeSockets; s; s = s->next)
|
||||||
|
{
|
||||||
if (Q_strcasecmp(Cmd_Argv(1), s->address) == 0)
|
if (Q_strcasecmp(Cmd_Argv(1), s->address) == 0)
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
|
{
|
||||||
for (s = net_freeSockets; s; s = s->next)
|
for (s = net_freeSockets; s; s = s->next)
|
||||||
|
{
|
||||||
if (Q_strcasecmp(Cmd_Argv(1), s->address) == 0)
|
if (Q_strcasecmp(Cmd_Argv(1), s->address) == 0)
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
PrintStats(s);
|
PrintStats(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -613,6 +623,7 @@ static void Net_Test_f (void)
|
||||||
if (host && hostCacheCount)
|
if (host && hostCacheCount)
|
||||||
{
|
{
|
||||||
for (n = 0; n < hostCacheCount; n++)
|
for (n = 0; n < hostCacheCount; n++)
|
||||||
|
{
|
||||||
if (Q_strcasecmp (host, hostcache[n].name) == 0)
|
if (Q_strcasecmp (host, hostcache[n].name) == 0)
|
||||||
{
|
{
|
||||||
if (hostcache[n].driver != myDriverLevel)
|
if (hostcache[n].driver != myDriverLevel)
|
||||||
|
@ -622,6 +633,7 @@ static void Net_Test_f (void)
|
||||||
Q_memcpy(&sendaddr, &hostcache[n].addr, sizeof(struct qsockaddr));
|
Q_memcpy(&sendaddr, &hostcache[n].addr, sizeof(struct qsockaddr));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (n < hostCacheCount)
|
if (n < hostCacheCount)
|
||||||
goto JustDoIt;
|
goto JustDoIt;
|
||||||
}
|
}
|
||||||
|
@ -744,6 +756,7 @@ static void Test2_f (void)
|
||||||
if (host && hostCacheCount)
|
if (host && hostCacheCount)
|
||||||
{
|
{
|
||||||
for (n = 0; n < hostCacheCount; n++)
|
for (n = 0; n < hostCacheCount; n++)
|
||||||
|
{
|
||||||
if (Q_strcasecmp (host, hostcache[n].name) == 0)
|
if (Q_strcasecmp (host, hostcache[n].name) == 0)
|
||||||
{
|
{
|
||||||
if (hostcache[n].driver != myDriverLevel)
|
if (hostcache[n].driver != myDriverLevel)
|
||||||
|
@ -752,6 +765,8 @@ static void Test2_f (void)
|
||||||
Q_memcpy(&sendaddr, &hostcache[n].addr, sizeof(struct qsockaddr));
|
Q_memcpy(&sendaddr, &hostcache[n].addr, sizeof(struct qsockaddr));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (n < hostCacheCount)
|
if (n < hostCacheCount)
|
||||||
goto JustDoIt;
|
goto JustDoIt;
|
||||||
}
|
}
|
||||||
|
@ -765,6 +780,7 @@ static void Test2_f (void)
|
||||||
if (dfunc.GetAddrFromName(host, &sendaddr) != -1)
|
if (dfunc.GetAddrFromName(host, &sendaddr) != -1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (net_landriverlevel == net_numlandrivers)
|
if (net_landriverlevel == net_numlandrivers)
|
||||||
{
|
{
|
||||||
Con_Printf("Could not resolve %s\n", host);
|
Con_Printf("Could not resolve %s\n", host);
|
||||||
|
@ -795,6 +811,10 @@ int Datagram_Init (void)
|
||||||
{
|
{
|
||||||
int i, csock, num_inited;
|
int i, csock, num_inited;
|
||||||
|
|
||||||
|
#ifdef BAN_TEST
|
||||||
|
banAddr.s_addr = INADDR_ANY;
|
||||||
|
banMask.s_addr = INADDR_NONE;
|
||||||
|
#endif
|
||||||
myDriverLevel = net_driverlevel;
|
myDriverLevel = net_driverlevel;
|
||||||
Cmd_AddCommand ("net_stats", NET_Stats_f);
|
Cmd_AddCommand ("net_stats", NET_Stats_f);
|
||||||
|
|
||||||
|
@ -848,9 +868,11 @@ void Datagram_Listen (qboolean state)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < net_numlandrivers; i++)
|
for (i = 0; i < net_numlandrivers; i++)
|
||||||
|
{
|
||||||
if (net_landrivers[i].initialized)
|
if (net_landrivers[i].initialized)
|
||||||
net_landrivers[i].Listen (state);
|
net_landrivers[i].Listen (state);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static qsocket_t *_Datagram_CheckNewConnections (void)
|
static qsocket_t *_Datagram_CheckNewConnections (void)
|
||||||
|
@ -919,6 +941,7 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
|
||||||
|
|
||||||
playerNumber = MSG_ReadByte();
|
playerNumber = MSG_ReadByte();
|
||||||
activeNumber = -1;
|
activeNumber = -1;
|
||||||
|
|
||||||
for (clientNumber = 0, client = svs.clients; clientNumber < svs.maxclients; clientNumber++, client++)
|
for (clientNumber = 0, client = svs.clients; clientNumber < svs.maxclients; clientNumber++, client++)
|
||||||
{
|
{
|
||||||
if (client->active)
|
if (client->active)
|
||||||
|
@ -928,6 +951,7 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (clientNumber == svs.maxclients)
|
if (clientNumber == svs.maxclients)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -1014,9 +1038,9 @@ static qsocket_t *_Datagram_CheckNewConnections (void)
|
||||||
// check for a ban
|
// check for a ban
|
||||||
if (clientaddr.qsa_family == AF_INET)
|
if (clientaddr.qsa_family == AF_INET)
|
||||||
{
|
{
|
||||||
unsigned long testAddr;
|
in_addr_t testAddr;
|
||||||
testAddr = ((struct sockaddr_in *)&clientaddr)->sin_addr.s_addr;
|
testAddr = ((struct sockaddr_in *)&clientaddr)->sin_addr.s_addr;
|
||||||
if ((testAddr & banMask) == banAddr)
|
if ((testAddr & banMask.s_addr) == banAddr.s_addr)
|
||||||
{
|
{
|
||||||
SZ_Clear(&net_message);
|
SZ_Clear(&net_message);
|
||||||
// save space for the header, filled in later
|
// save space for the header, filled in later
|
||||||
|
@ -1119,9 +1143,13 @@ qsocket_t *Datagram_CheckNewConnections (void)
|
||||||
qsocket_t *ret = NULL;
|
qsocket_t *ret = NULL;
|
||||||
|
|
||||||
for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++)
|
for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++)
|
||||||
|
{
|
||||||
if (net_landrivers[net_landriverlevel].initialized)
|
if (net_landrivers[net_landriverlevel].initialized)
|
||||||
|
{
|
||||||
if ((ret = _Datagram_CheckNewConnections ()) != NULL)
|
if ((ret = _Datagram_CheckNewConnections ()) != NULL)
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1179,8 +1207,10 @@ static void _Datagram_SearchForHosts (qboolean xmit)
|
||||||
dfunc.GetAddrFromName(MSG_ReadString(), &readaddr);
|
dfunc.GetAddrFromName(MSG_ReadString(), &readaddr);
|
||||||
// search the cache for this server
|
// search the cache for this server
|
||||||
for (n = 0; n < hostCacheCount; n++)
|
for (n = 0; n < hostCacheCount; n++)
|
||||||
|
{
|
||||||
if (dfunc.AddrCompare(&readaddr, &hostcache[n].addr) == 0)
|
if (dfunc.AddrCompare(&readaddr, &hostcache[n].addr) == 0)
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
// is it already there?
|
// is it already there?
|
||||||
if (n < hostCacheCount)
|
if (n < hostCacheCount)
|
||||||
|
@ -1219,6 +1249,7 @@ static void _Datagram_SearchForHosts (qboolean xmit)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
hostcache[n].name[i-1]++;
|
hostcache[n].name[i-1]++;
|
||||||
|
|
||||||
i = -1;
|
i = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1333,9 +1364,12 @@ static qsocket_t *_Datagram_Connect (char *host)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (ret == 0 && (SetNetTime() - start_time) < 2.5);
|
while (ret == 0 && (SetNetTime() - start_time) < 2.5);
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
break;
|
break;
|
||||||
Con_Printf("still trying...\n"); SCR_UpdateScreen ();
|
|
||||||
|
Con_Printf("still trying...\n");
|
||||||
|
SCR_UpdateScreen ();
|
||||||
start_time = SetNetTime();
|
start_time = SetNetTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1414,8 +1448,13 @@ qsocket_t *Datagram_Connect (char *host)
|
||||||
|
|
||||||
host = Strip_Port (host);
|
host = Strip_Port (host);
|
||||||
for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++)
|
for (net_landriverlevel = 0; net_landriverlevel < net_numlandrivers; net_landriverlevel++)
|
||||||
|
{
|
||||||
if (net_landrivers[net_landriverlevel].initialized)
|
if (net_landrivers[net_landriverlevel].initialized)
|
||||||
|
{
|
||||||
if ((ret = _Datagram_Connect (host)) != NULL)
|
if ((ret = _Datagram_Connect (host)) != NULL)
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue