Class

IPAddr

Inheritance
< Object
Included Modules
Comparable

IPAddr provides a set of methods to manipulate an IP address. Both IPv4 and IPv6 are supported.

Example

  require 'ipaddr'

  ipaddr1 = IPAddr.new "3ffe:505:2::1"

  p ipaddr1                   #=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0001/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>

  p ipaddr1.to_s              #=> "3ffe:505:2::1"

  ipaddr2 = ipaddr1.mask(48)  #=> #<IPAddr: IPv6:3ffe:0505:0002:0000:0000:0000:0000:0000/ffff:ffff:ffff:0000:0000:0000:0000:0000>

  p ipaddr2.to_s              #=> "3ffe:505:2::"

  ipaddr3 = IPAddr.new "192.168.2.0/24"

  p ipaddr3                   #=> #<IPAddr: IPv4:192.168.2.0/255.255.255.0>

Constants

Name   Description
IN4MASK = 0xffffffff
IN6FORMAT = (["%.4x"] * 8).join(':')
IN6MASK = 0xffffffffffffffffffffffffffffffff

Attributes

Name Visibility R/W Description
family public R Returns the address family of this IP address.

Methods

Class

Visibility Signature
public new (addr = '::', family = Socket::AF_UNSPEC)
public new_ntoh (addr)
public ntop (addr)

Instance

Visibility Signature
public & (other)
public << (num)
public <=> (other)
public == (other)
public === (other)
public >> (num)
public hton ()
public include? (other)
public inspect ()
public ip6_arpa ()
public ip6_int ()
public ipv4? ()
public ipv4_compat ()
public ipv4_compat? ()
public ipv4_mapped ()
public ipv4_mapped? ()
public ipv6? ()
public mask (prefixlen)
public native ()
public reverse ()
public succ ()
public to_i ()
public to_range ()
public to_s ()
public to_string ()
public | (other)
public ~ ()
protected mask! (mask)
protected set (addr, *family)

Class Method Detail

new(addr = '::', family = Socket::AF_UNSPEC)

Creates a new ipaddr object either from a human readable IP address representation in string, or from a packed in_addr value followed by an address family.

In the former case, the following are the valid formats that will be recognized: "address", "address/prefixlen" and "address/mask", where IPv6 address may be enclosed in square brackets (`[’ and `]’). If a prefixlen or a mask is specified, it returns a masked IP address. Although the address family is determined automatically from a specified string, you can specify one explicitly by the optional second argument.

Otherwise an IP addess is generated from a packed in_addr value and an address family.

The IPAddr class defines many methods and operators, and some of those, such as &, |, include? and ==, accept a string, or a packed in_addr value instead of an IPAddr object.

new_ntoh(addr)

Creates a new ipaddr containing the given network byte ordered string form of an IP address.

ntop(addr)

Convert a network byte ordered string form of an IP address into human readable form.

Instance Method Detail

&(other)

Returns a new ipaddr built by bitwise AND.

<<(num)

Returns a new ipaddr built by bitwise left shift.

<=>(other)

Compares the ipaddr with another.

==(other)

Returns true if two ipaddrs are equal.

===(other)

Alias for include?

>>(num)

Returns a new ipaddr built by bitwise right-shift.

hton()

Returns a network byte ordered string form of the IP address.

include?(other)

Returns true if the given ipaddr is in the range.

e.g.:

  require 'ipaddr'
  net1 = IPAddr.new("192.168.2.0/24")
  net2 = IPAddr.new("192.168.2.100")
  net3 = IPAddr.new("192.168.3.0")
  p net1.include?(net2)     #=> true
  p net1.include?(net3)     #=> false

inspect()

Returns a string containing a human-readable representation of the ipaddr. ("#<IPAddr: family:address/mask>")

ip6_arpa()

Returns a string for DNS reverse lookup compatible with RFC3172.

ip6_int()

Returns a string for DNS reverse lookup compatible with RFC1886.

ipv4?()

Returns true if the ipaddr is an IPv4 address.

ipv4_compat()

Returns a new ipaddr built by converting the native IPv4 address into an IPv4-compatible IPv6 address.

ipv4_compat?()

Returns true if the ipaddr is an IPv4-compatible IPv6 address.

ipv4_mapped()

Returns a new ipaddr built by converting the native IPv4 address into an IPv4-mapped IPv6 address.

ipv4_mapped?()

Returns true if the ipaddr is an IPv4-mapped IPv6 address.

ipv6?()

Returns true if the ipaddr is an IPv6 address.

mask(prefixlen)

Returns a new ipaddr built by masking IP address with the given prefixlen/netmask. (e.g. 8, 64, "255.255.255.0", etc.)

native()

Returns a new ipaddr built by converting the IPv6 address into a native IPv4 address. If the IP address is not an IPv4-mapped or IPv4-compatible IPv6 address, returns self.

reverse()

Returns a string for DNS reverse lookup. It returns a string in RFC3172 form for an IPv6 address.

succ()

Returns the successor to the ipaddr.

to_i()

Returns the integer representation of the ipaddr.

to_range()

Creates a Range object for the network address.

to_s()

Returns a string containing the IP address representation.

to_string()

Returns a string containing the IP address representation in canonical form.

|(other)

Returns a new ipaddr built by bitwise OR.

~()

Returns a new ipaddr built by bitwise negation.

mask!(mask)

set(addr, *family)