From: w00t Date: Sat, 12 Jul 2008 14:11:57 +0000 (+0000) Subject: Scary.. CIDR range clone checking for tags. X-Git-Tag: v2.0.23~2958 X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=d19f03dc3a7bc0e6146039ef09297c3f5ec39d63;p=user%2Fhenk%2Fcode%2Finspircd.git Scary.. CIDR range clone checking for tags. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9981 e03df62e-2008-0410-955e-edbf42e46eb7 --- diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 73096d4a8..9ac668131 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -204,25 +204,78 @@ void UserManager::QuitUser(User *user, const std::string &quitreason, const char void UserManager::AddLocalClone(User *user) { - clonemap::iterator x = local_clones.find(user->GetIPString()); + int range = 32; + clonemap::iterator x; + 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; + } + + x = local_clones.find(user->GetCIDRMask(range)); if (x != local_clones.end()) x->second++; else - local_clones[user->GetIPString()] = 1; + local_clones[user->GetCIDRMask(range)] = 1; } void UserManager::AddGlobalClone(User *user) { - clonemap::iterator y = global_clones.find(user->GetIPString()); - if (y != global_clones.end()) - y->second++; + int range = 32; + clonemap::iterator x; + 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; + } + + x = global_clones.find(user->GetCIDRMask(range)); + if (x != global_clones.end()) + x->second++; else - global_clones[user->GetIPString()] = 1; + global_clones[user->GetCIDRMask(range)] = 1; } void UserManager::RemoveCloneCounts(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()) { x->second--; @@ -232,7 +285,7 @@ void UserManager::RemoveCloneCounts(User *user) } } - clonemap::iterator y = global_clones.find(user->GetIPString()); + clonemap::iterator y = global_clones.find(user->GetCIDRMask(range)); if (y != global_clones.end()) { y->second--;