Class: IPAddr

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/ronin/support/core_ext/ipaddr.rb

Constant Summary collapse

MASKS =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Socket families and IP address masks

{
  Socket::AF_INET  => IN4MASK,
  Socket::AF_INET6 => IN6MASK
}

Instance Method Summary collapse

Methods included from Enumerable

#map_hash

Instance Method Details

#each {|ip| ... } ⇒ Object

Iterates over each IP address that is included in the addresses netmask. Supports both IPv4 and IPv6 addresses.

Examples:

netblock = IPAddr.new('10.1.1.1/24')

netblock.each do |ip|
  puts ip
end

Yields:

  • (ip)

    The block which will be passed every IP address covered be the netmask of the IPAddr object.

Yield Parameters:

  • ip (String)

    An IP address.



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/ronin/support/core_ext/ipaddr.rb', line 53

def each
  return enum_for(__method__) unless block_given?

  family_mask = MASKS[@family]

  (0..((~@mask_addr) & family_mask)).each do |i|
    yield _to_string(@addr | i)
  end

  return self
end