mirror of
https://github.com/TecharoHQ/anubis.git
synced 2026-04-11 11:08:48 +00:00
34 lines
622 B
Go
34 lines
622 B
Go
package internal
|
|
|
|
import "net/netip"
|
|
|
|
func ClampIP(addr netip.Addr) (netip.Prefix, bool) {
|
|
switch {
|
|
case addr.Is4():
|
|
result, err := addr.Prefix(24)
|
|
if err != nil {
|
|
return netip.Prefix{}, false
|
|
}
|
|
return result, true
|
|
|
|
case addr.Is4In6():
|
|
// Extract the IPv4 address from IPv4-mapped IPv6 and clamp it
|
|
ipv4 := addr.Unmap()
|
|
result, err := ipv4.Prefix(24)
|
|
if err != nil {
|
|
return netip.Prefix{}, false
|
|
}
|
|
return result, true
|
|
|
|
case addr.Is6():
|
|
result, err := addr.Prefix(48)
|
|
if err != nil {
|
|
return netip.Prefix{}, false
|
|
}
|
|
return result, true
|
|
|
|
default:
|
|
return netip.Prefix{}, false
|
|
}
|
|
}
|