summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dns.cpp7
-rw-r--r--src/users.cpp25
2 files changed, 17 insertions, 15 deletions
diff --git a/src/dns.cpp b/src/dns.cpp
index 42db21424..0a22b28d8 100644
--- a/src/dns.cpp
+++ b/src/dns.cpp
@@ -453,7 +453,7 @@ int DNS::GetNameForce(const char *ip, ForceProtocol fp)
DNSHeader h;
int id;
int length;
-
+#ifdef SUPPORT_IP6LINKS
if (fp == PROTOCOL_IPV6)
{
in6_addr i;
@@ -466,6 +466,7 @@ int DNS::GetNameForce(const char *ip, ForceProtocol fp)
return -1;
}
else
+#endif
{
in_addr i;
if (inet_aton(ip, &i))
@@ -493,6 +494,7 @@ int DNS::GetNameForce(const char *ip, ForceProtocol fp)
void DNS::MakeIP6Int(char* query, const in6_addr *ip)
{
+#ifdef SUPPORT_IP6LINKS
const char* hex = "0123456789abcdef";
for (int index = 31; index >= 0; index--) /* for() loop steps twice per byte */
{
@@ -505,6 +507,9 @@ void DNS::MakeIP6Int(char* query, const in6_addr *ip)
*query++ = '.'; /* Seperator */
}
strcpy(query,"ip6.arpa"); /* Suffix the string */
+#else
+ *query = 0;
+#endif
}
/* Return the next id which is ready, and the result attached to it */
diff --git a/src/users.cpp b/src/users.cpp
index 85d64d462..74f70b458 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -895,20 +895,11 @@ long FindMatchingGlobal(userrec* user)
long x = 0;
for (user_hash::const_iterator a = clientlist.begin(); a != clientlist.end(); a++)
{
-#ifdef IPV6
- /* I dont think theres any faster way of matching two ipv6 addresses than memcmp
- * Let me know if you think of one.
- */
- in6_addr* s1 = &(((sockaddr_in6*)&a->second->ip)->sin6_addr);
- in6_addr* s2 = &(((sockaddr_in6*)&user->ip)->sin6_addr);
- if (!memcmp(s1->s6_addr, s2->s6_addr, sizeof(in6_addr)))
- x++;
-#else
- in_addr* s1 = &((sockaddr_in*)&a->second->ip)->sin_addr;
- in_addr* s2 = &((sockaddr_in*)&user->ip)->sin_addr;
- if (s1->s_addr == s2->s_addr)
- x++;
-#endif
+ /* We have to match ip's as strings - we don't know what protocol
+ * a remote user may be using
+ */
+ if (!strcasecmp(a->second->GetIPString(), user->GetIPString()))
+ x++;
}
return x;
}
@@ -1111,6 +1102,7 @@ void userrec::SetSockAddr(int protocol_family, const char* ip, int port)
{
switch (protocol_family)
{
+#ifdef SUPPORT_IP6LINKS
case AF_INET6:
{
sockaddr_in6* sin = (sockaddr_in6*)&this->ip;
@@ -1119,6 +1111,7 @@ void userrec::SetSockAddr(int protocol_family, const char* ip, int port)
inet_pton(AF_INET6, ip, &sin->sin6_addr);
}
break;
+#endif
case AF_INET:
{
sockaddr_in* sin = (sockaddr_in*)&this->ip;
@@ -1137,12 +1130,14 @@ int userrec::GetPort()
{
switch (this->GetProtocolFamily())
{
+#ifdef SUPPORT_IP6LINKS
case AF_INET6:
{
sockaddr_in6* sin = (sockaddr_in6*)&this->ip;
return sin->sin6_port;
}
break;
+#endif
case AF_INET:
{
sockaddr_in* sin = (sockaddr_in*)&this->ip;
@@ -1168,6 +1163,7 @@ const char* userrec::GetIPString()
switch (this->GetProtocolFamily())
{
+#ifdef SUPPORT_IP6LINKS
case AF_INET6:
{
sockaddr_in6* sin = (sockaddr_in6*)&this->ip;
@@ -1175,6 +1171,7 @@ const char* userrec::GetIPString()
return buf;
}
break;
+#endif
case AF_INET:
{
sockaddr_in* sin = (sockaddr_in*)&this->ip;