| 123456789101112131415161718192021222324252627282930313233 |
- 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
- }
- }
|