Align ipv6 normalizatoin logic with the typical residental allocation of /56 instead of /64.

This commit is contained in:
Snoww 2026-04-15 00:28:07 -04:00 committed by GitHub
parent a5d859d2b1
commit 14b442eded
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1500,9 +1500,7 @@ class Garda(object):
if not self.lim: if not self.lim:
return 0, ip return 0, ip
if ":" in ip: ip = ipnorm(ip)
# assume /64 clients; drop 4 groups
ip = IPv6Address(ip).exploded[:-20]
if prev and self.uniq: if prev and self.uniq:
if self.prev.get(ip) == prev: if self.prev.get(ip) == prev:
@ -2445,8 +2443,8 @@ def odfusion(
def ipnorm(ip: str) -> str: def ipnorm(ip: str) -> str:
if ":" in ip: if ":" in ip:
# assume /64 clients; drop 4 groups # assume /56 clients; drop 4 groups
return IPv6Address(ip).exploded[:-20] return str(IPv6Network(ip + "/56", strict=False).network_address)
return ip return ip