1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2024-09-13 07:13:00 +03:00

Merge pull request #14 from el1n/adminipcidr

adminip.txt CIDR Support
This commit is contained in:
Daiyuu Nobori 2014-02-06 01:35:38 +09:00
commit ef054055b0

View File

@ -13212,6 +13212,9 @@ bool CheckAdminSourceAddress(SOCK *sock, char *hubname)
UINT i;
TOKEN_LIST *t;
IP ip;
IP mask;
IP ip1;
IP ip2;
s = CfgReadNextLine(b);
if (s == NULL)
@ -13242,7 +13245,30 @@ bool CheckAdminSourceAddress(SOCK *sock, char *hubname)
{
if (t->NumTokens == 1 || StrCmpi(hubname, t->Token[1]) == 0)
{
if (StrToIP(&ip, t->Token[0]))
if (ParseIpAndMask46(t->Token[0], &ip, &mask))
{
if (IsIP4(&sock->RemoteIP) && IsIP4(&ip))
{
IPAnd4(&ip1, &sock->RemoteIP, &mask);
IPAnd4(&ip2, &ip, &mask);
if (CmpIpAddr(&ip1, &ip2) == 0)
{
ok = true;
}
}
else if (IsIP6(&sock->RemoteIP) && IsIP6(&ip))
{
IPAnd6(&ip1, &sock->RemoteIP, &mask);
IPAnd6(&ip2, &ip, &mask);
if (CmpIpAddr(&ip1, &ip2) == 0)
{
ok = true;
}
}
}
else if (StrToIP(&ip, t->Token[0]))
{
if (CmpIpAddr(&sock->RemoteIP, &ip) == 0)
{