summaryrefslogtreecommitdiff
path: root/src/usermanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/usermanager.cpp')
-rw-r--r--src/usermanager.cpp36
1 files changed, 34 insertions, 2 deletions
diff --git a/src/usermanager.cpp b/src/usermanager.cpp
index 1cb269bdf..e526238ed 100644
--- a/src/usermanager.cpp
+++ b/src/usermanager.cpp
@@ -282,7 +282,23 @@ void UserManager::RemoveCloneCounts(User *user)
unsigned long UserManager::GlobalCloneCount(User *user)
{
- clonemap::iterator x = global_clones.find(user->GetIPString());
+ int range = 32;
+ switch (user->GetProtocolFamily())
+ {
+#ifdef SUPPORT_IP6LINKS
+ case AF_INET6:
+ {
+ range = ServerInstance->Config->c_ipv6_range;
+ }
+ break;
+#endif
+ case AF_INET:
+ {
+ range = ServerInstance->Config->c_ipv4_range;
+ }
+ break;
+ }
+ clonemap::iterator x = global_clones.find(user->GetCIDRMask(range));
if (x != global_clones.end())
return x->second;
else
@@ -291,7 +307,23 @@ unsigned long UserManager::GlobalCloneCount(User *user)
unsigned long UserManager::LocalCloneCount(User *user)
{
- clonemap::iterator x = local_clones.find(user->GetIPString());
+ int range = 32;
+ switch (user->GetProtocolFamily())
+ {
+#ifdef SUPPORT_IP6LINKS
+ case AF_INET6:
+ {
+ range = ServerInstance->Config->c_ipv6_range;
+ }
+ break;
+#endif
+ case AF_INET:
+ {
+ range = ServerInstance->Config->c_ipv4_range;
+ }
+ break;
+ }
+ clonemap::iterator x = local_clones.find(user->GetCIDRMask(range));
if (x != local_clones.end())
return x->second;
else