]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Add support for comparing ipv6 for clone counting
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 1 Aug 2006 19:15:27 +0000 (19:15 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 1 Aug 2006 19:15:27 +0000 (19:15 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@4620 e03df62e-2008-0410-955e-edbf42e46eb7

src/users.cpp

index 93ffadb83a701c580c0d413995c2beddf2ad28f2..83d62ecf7ff3cc26af92307aece24e164e54081b 100644 (file)
@@ -833,7 +833,11 @@ long FindMatchingGlobal(userrec* user)
        for (user_hash::const_iterator a = clientlist.begin(); a != clientlist.end(); a++)
        {
 #ifdef IPV6
-               /* TODO: clone matching for ipv6 */
+               /* I dont think theres any faster way of matching two ipv6 addresses than memcmp
+                * Let me know if you think of one.
+                 */
+               if (!memcmp(a->second->ip4.s6_addr, user->ip4.s6_addr, sizeof(in6_addr)))
+                       x++;
 #else
                if (a->second->ip4.s_addr == user->ip4.s_addr)
                        x++;
@@ -847,10 +851,12 @@ long FindMatchingLocal(userrec* user)
        long x = 0;
        for (std::vector<userrec*>::const_iterator a = local_users.begin(); a != local_users.end(); a++)
        {
+               userrec* comp = *a;
 #ifdef IPV6
-               /* TODO clone matching for ipv6 */
+               /* I dont think theres any faster way of matching two ipv6 addresses than memcmp */
+               if (!memcmp(comp->ip4.s6_addr, user->ip4.s6_addr, sizeof(in6_addr)))
+                       x++;
 #else
-               userrec* comp = *a;
                if (comp->ip4.s_addr == user->ip4.s_addr)
                        x++;
 #endif