+ unsigned char GetRange(LocalUser* user)
+ {
+ int family = user->client_sa.family();
+ switch (family)
+ {
+ case AF_INET:
+ return ipv4_cidr;
+
+ case AF_INET6:
+ return ipv6_cidr;
+
+ case AF_UNIX:
+ // Ranges for UNIX sockets are ignored entirely.
+ return 0;
+ }
+
+ // If we have reached this point then we have encountered a bug.
+ ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "BUG: ModuleConnectBan::GetRange(): socket type %d is unknown!", family);
+ return 0;
+ }
+
+ static bool IsExempt(LocalUser* user)
+ {
+ // E-lined and already banned users shouldn't be hit.
+ if (user->exempt || user->quitting)
+ return true;
+
+ // Users in an exempt class shouldn't be hit.
+ return user->GetClass() && !user->GetClass()->config->getBool("useconnectban", true);
+ }
+