﻿diff -ruN ircd-ircu-2.10.12.10.dfsg1.old/ircd/IPcheck.c ircd-ircu-2.10.12.10.dfsg1/ircd/IPcheck.c
--- ircd-ircu-2.10.12.10.dfsg1.old/ircd/IPcheck.c	2005-08-15 23:22:50.000000000 +0000
+++ ircd-ircu-2.10.12.10.dfsg1/ircd/IPcheck.c	2016-12-01 09:42:42.220786271 +0000
@@ -108,8 +108,8 @@
 }

 /** Find an IP registry entry if one exists for the IP address.
- * If \a ip looks like an IPv6 address, only consider the first 64 bits
- * of the address. Otherwise, only consider the final 32 bits.
+ * We consider the full 128 bits of any address since there might
+ * potentially be many people on a LAN behind a 6to4 gateway.
  * @param[in] ip IP address to search for.
  * @return Matching registry entry, or NULL if none exists.
  */
@@ -120,8 +120,7 @@
   ip_registry_canonicalize(&canon, ip);
   entry = hashTable[ip_registry_hash(&canon)];
   for ( ; entry; entry = entry->next) {
-    int bits = (canon.in6_16[0] == htons(0x2002)) ? 48 : 64;
-    if (ipmask_check(&canon, &entry->addr, bits))
+    if (ipmask_check(&canon, &entry->addr, 128))
       break;
   }
   return entry;
