Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
instance method
IPAddr#private?
() -> bool
private?
lib/ipaddr.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.1.0-preview1/lib/ipaddr.rb, line 314
def private?
case @family
when Socket::AF_INET
(@addr & 0xff000000 == 0x0a000000) && prefix >= 8 || # 10.0.0.0/8
(@addr & 0xfff00000 == 0xac100000) && prefix >= 12 || # 172.16.0.0/12
(@addr & 0xffff0000 == 0xc0a80000) && prefix >= 16 # 192.168.0.0/16
when Socket::AF_INET6
(@addr & 0xfe00_0000_0000_0000_0000_0000_0000_0000 == 0xfc00_0000_0000_0000_0000_0000_0000_0000) && prefix >= 7 || # fc00::/7
(@addr >> 32 == 0xffff && (
(@addr & 0xff000000 == 0x0a000000) && prefix >= 104 || # ::ffff:10.0.0.0/104 (10.0.0.0/8)
(@addr & 0xfff00000 == 0xac100000) && prefix >= 108 || # ::ffff:172.16.0.0/108 (172.16.0.0/12)
(@addr & 0xffff0000 == 0xc0a80000) && prefix >= 112 # ::ffff:192.168.0.0/112 (192.168.0.0/16)
))
else
raise AddressFamilyError, "unsupported address family"
end
end
Returns true if the ipaddr is a private address. IPv4 addresses in 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16 as defined in RFC 1918 and IPv6 Unique Local Addresses in fc00::/7 as defined in RFC 4193 are considered private. Private IPv4 addresses in the IPv4-mapped IPv6 address range are also considered private.