1
0
mirror of https://github.com/anope/anope.git synced 2026-07-05 08:33:12 +02:00

Moved m_dns's reverse ip method to sockaddrs::reverse().

Updated m_dnsbl to support ipv6.
This commit is contained in:
Alexander Maassen
2017-05-26 18:17:13 +02:00
committed by Adam
parent 087f1cb359
commit bfcfd0b727
4 changed files with 53 additions and 34 deletions
+9 -25
View File
@@ -296,32 +296,16 @@ class Packet : public Query
if (!ip.valid())
throw SocketException("Invalid IP");
if (q.name.find(':') != Anope::string::npos)
switch (ip.family())
{
const char *const hex = "0123456789abcdef";
char reverse_ip[128];
unsigned reverse_ip_count = 0;
for (int j = 15; j >= 0; --j)
{
reverse_ip[reverse_ip_count++] = hex[ip.sa6.sin6_addr.s6_addr[j] & 0xF];
reverse_ip[reverse_ip_count++] = '.';
reverse_ip[reverse_ip_count++] = hex[ip.sa6.sin6_addr.s6_addr[j] >> 4];
reverse_ip[reverse_ip_count++] = '.';
}
reverse_ip[reverse_ip_count++] = 0;
q.name = reverse_ip;
q.name += "ip6.arpa";
}
else
{
unsigned long forward = ip.sa4.sin_addr.s_addr;
in_addr reverse;
reverse.s_addr = forward << 24 | (forward & 0xFF00) << 8 | (forward & 0xFF0000) >> 8 | forward >> 24;
ip.ntop(AF_INET, &reverse);
q.name = ip.addr() + ".in-addr.arpa";
case AF_INET6:
q.name = ip.reverse() + ".ip6.arpa";
break;
case AF_INET:
q.name = ip.reverse() + ".in-addr.arpa";
break;
default:
throw SocketException("Unsupported IP Family");
}
}