* 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:
Ozkan Sezer 2010-06-21 09:45:24 +00:00
parent ca7aa6c733
commit 5475d36f5f

View file

@ -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;
} }