Sha256: 73f94db2f2fee4039a208740e323c4f51c75cd18ffe7302b07a08ede08a16ed0
Contents?: true
Size: 788 Bytes
Versions: 3
Compression:
Stored size: 788 Bytes
Contents
# frozen_string_literal: true require 'ipaddr' # monkey-patch IPAddr class to provide some cidr-related accessors class IPAddr def cidr? full_mask = case @family when Socket::AF_INET then IN4MASK when Socket::AF_INET6 then IN6MASK end raise AddressFamilyError, 'unsupported address family' unless full_mask @mask_addr != full_mask end def mask_bits @mask_addr.to_s(2).sub(/0+$/, '').length end def canonical to_s + (cidr? ? "/#{mask_bits}" : '') end PRIVATE_IP_RANGES = [ IPAddr.new('10.0.0.0/8'), IPAddr.new('172.16.0.0/12'), IPAddr.new('192.168.0.0/16'), IPAddr.new('fc00::/7') ].freeze def private? @private ||= PRIVATE_IP_RANGES.any? { |rng| rng.include? self } end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
svcbase-0.1.18 | lib/svcbase/ipaddr_helper.rb |
svcbase-0.1.17 | lib/svcbase/ipaddr_helper.rb |
svcbase-0.1.16 | lib/svcbase/ipaddr_helper.rb |