Class: Net::Address::IPv4

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/net/address/ipv4.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(address, mask = nil) ⇒ IPv4

Returns a new instance of IPv4.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/net/address/ipv4.rb', line 17

def initialize(address, mask=nil)
  if address.is_a?(String)
    address = begin
                JSON.parse address
              rescue JSON::ParserError
                address
              end
  end
  parse_address(address)
  if @mask.nil?
    @mask = Net::Address::Mask.new(mask.nil? ? 32 : mask)
  else
    raise ArgumentError, 'To many parameters' unless mask.nil?
  end
end

Instance Attribute Details

#maskObject (readonly)

Returns the value of attribute mask.



15
16
17
# File 'lib/net/address/ipv4.rb', line 15

def mask
  @mask
end

Instance Method Details

#<=>(other) ⇒ Object



61
62
63
# File 'lib/net/address/ipv4.rb', line 61

def <=>(other)
  self.to_i <=> (other.is_a?(self.class) ? other.to_i : self.class.new(other).to_i)
end

#broadcastObject



74
75
76
# File 'lib/net/address/ipv4.rb', line 74

def broadcast
  self.class.new(range.last, mask)
end

#eachObject



88
89
90
91
92
# File 'lib/net/address/ipv4.rb', line 88

def each
  (net.to_i..broadcast.to_i).each do |address|
    yield self.class.new(address, mask)
  end
end

#include?(address) ⇒ Boolean

Returns:

  • (Boolean)


65
66
67
68
# File 'lib/net/address/ipv4.rb', line 65

def include?(address)
  address = address.is_a?(self.class) ? address : self.class.new(address)
  address.to_i >= net.to_i and address <= broadcast.to_i
end

#netObject



70
71
72
# File 'lib/net/address/ipv4.rb', line 70

def net
  self.class.new(range.first, mask)
end

#nextObject



83
84
85
86
# File 'lib/net/address/ipv4.rb', line 83

def next
  next_address = to_i + 1
  broadcast >= next_address ? self.class.new(next_address) : nil
end

#previousObject



78
79
80
81
# File 'lib/net/address/ipv4.rb', line 78

def previous
  previous = to_i - 1
  net <= previous ? self.class.new(previous) : nil
end

#to_hObject



47
48
49
50
51
52
53
54
55
# File 'lib/net/address/ipv4.rb', line 47

def to_h
  {
    address: self.to_s,
    mask: self.mask.to_s,
    net: self.net.to_s,
    broadcast: self.broadcast.to_s,
    cidr: self.to_cidr
  }
end

#to_iObject



43
44
45
# File 'lib/net/address/ipv4.rb', line 43

def to_i
  @address
end

#to_json(*params) ⇒ Object



57
58
59
# File 'lib/net/address/ipv4.rb', line 57

def to_json(*params)
  to_h.to_json
end

#to_sObject



33
34
35
# File 'lib/net/address/ipv4.rb', line 33

def to_s
  [@address].pack('N*').unpack('C*').join('.')
end

#to_strObject Also known as: to_cidr



37
38
39
# File 'lib/net/address/ipv4.rb', line 37

def to_str
  "#{to_s}/#{mask.to_cidr}"
end