summaryrefslogtreecommitdiff
path: root/modules/m_dns.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/m_dns.cpp')
-rw-r--r--modules/m_dns.cpp34
1 files changed, 9 insertions, 25 deletions
diff --git a/modules/m_dns.cpp b/modules/m_dns.cpp
index 34b7d5d2f..2e0aa3f8f 100644
--- a/modules/m_dns.cpp
+++ b/modules/m_dns.cpp
@@ -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");
}
}