Class: Iface::IpAddress
- Inherits:
-
Object
- Object
- Iface::IpAddress
- Defined in:
- lib/iface/ip_address.rb
Overview
Represents an IP address including prefix length
Direct Known Subclasses
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object
- #cidr_mask ⇒ Object
- #full_cidr_mask ⇒ Object
- #full_mask ⇒ Object
-
#initialize(ip_address) ⇒ IpAddress
constructor
A new instance of IpAddress.
- #to_i ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(ip_address) ⇒ IpAddress
Returns a new instance of IpAddress.
13 14 15 16 17 18 |
# File 'lib/iface/ip_address.rb', line 13 def initialize(ip_address) @ipaddr = ip_address.is_a?(IPAddr) ? ip_address : IPAddr.new(ip_address) @mask_addr = @ipaddr.instance_eval { @mask_addr } @_bitmask = @mask_addr.to_s(2) @inverse_mask_addr = @_bitmask.tr('01', '10').to_i(2) end |
Class Method Details
.create(str) ⇒ Object
8 9 10 11 |
# File 'lib/iface/ip_address.rb', line 8 def self.create(str) ipaddr = IPAddr.new(str) (ipaddr.ipv4? ? IpV4Address : IpV6Address).new(ipaddr) end |
Instance Method Details
#==(other) ⇒ Object
47 48 49 |
# File 'lib/iface/ip_address.rb', line 47 def ==(other) self.class == other.class && __state__ == other.__state__ end |
#cidr_mask ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'lib/iface/ip_address.rb', line 20 def cidr_mask case diff = full_mask - @mask_addr when 0 full_cidr_mask when 1 full_cidr_mask - 1 else full_cidr_mask - Math.log2(diff).ceil end end |
#full_cidr_mask ⇒ Object
43 44 45 |
# File 'lib/iface/ip_address.rb', line 43 def full_cidr_mask raise NotImplementedError end |
#full_mask ⇒ Object
39 40 41 |
# File 'lib/iface/ip_address.rb', line 39 def full_mask raise NotImplementedError end |
#to_i ⇒ Object
31 32 33 |
# File 'lib/iface/ip_address.rb', line 31 def to_i @ipaddr.to_i end |
#to_s ⇒ Object
35 36 37 |
# File 'lib/iface/ip_address.rb', line 35 def to_s @ipaddr.to_s end |