Skip to content
This repository has been archived by the owner on May 25, 2018. It is now read-only.

jimsynz/IPAddrExtensions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPAddrExtensions
================

A selection of potentially useful extensions for IPAddr.

Example
=======

    >> IPAddr.new("192.0.2.0/24").length
    => 24
    >> IPAddr.new("192.0.2.0/24").first
    => #<IPAddr: IPv4:192.0.2.0/255.255.255.255>
    >> IPAddr.new("192.0.2.0/24").last
    => #<IPAddr: IPv4:192.0.2.255/255.255.255.255>
    >> IPAddr.new("192.0.2.0/24").scope
    => "DOCUMENTATION"
    >> IPAddr.new("192.0.2.0/24").local?
    => false
    >> IPAddr.new("192.0.2.0/24").unicast?
    => false
    >> IPAddr.new("192.0.2.0/24").multicast?
    => false
    >> IPAddr.new("192.0.2.0/24").link?
    => false
    >> IPAddr.new("192.0.2.0/24").documentation?
    => true
    >> IPAddr.new("192.0.2.0/24").loopback?
    => false
    >> IPAddr.new("192.0.2.0/24").global?
    => false
    >> IPAddr.new("192.0.2.0/24").private?
    => false
    >> IPAddr.new("192.0.2.0/24").space
    => 256
    >> IPAddr.new("192.0.2.0/24").reverses
    => ["192.0.2.in-addr.arpa"]
    >> IPAddr.new("192.0.2.0/24").host?
    => false
    >> IPAddr.new("192.0.2.0/24").prefix?
    => true
    >> IPAddr.new("2001:db8::/64").eui_64('00:0D:60:0F:3C:A8')
    => #<IPAddr: IPv6:2001:0db8:0000:0000:020d:60ff:fe0f:3ca8/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
    >> IPAddr.new("2001:db8::/56").reverses
    => ["0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "1.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "2.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "3.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "4.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "5.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "6.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "7.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "8.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "9.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "a.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "b.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "c.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "d.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "e.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa", "f.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa"]
    >> "192.0.2.0/24".to_ip
    => #<IPAddr: IPv4:192.0.2.0/255.255.255.0>
    >> 12345.to_ip
    => #<IPAddr: IPv4:0.0.48.57/255.255.255.255>
    >> 12345.to_ip(Socket::AF_INET6)
    => #<IPAddr: IPv6:0000:0000:0000:0000:0000:0000:0000:3039/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
    >> ("2001:db8::/32".to_ip / 16).collect { |prefix| prefix.to_string_including_length }
    => ["2001:db8::/36", "2001:db8:1000::/36", "2001:db8:2000::/36", "2001:db8:3000::/36", "2001:db8:4000::/36", "2001:db8:5000::/36", "2001:db8:6000::/36", "2001:db8:7000::/36", "2001:db8:8000::/36", "2001:db8:9000::/36", "2001:db8:a000::/36", "2001:db8:b000::/36", "2001:db8:c000::/36", "2001:db8:d000::/36", "2001:db8:e000::/36", "2001:db8:f000::/36"]
    => IPAddr.new("2001:db8::/32").subnets(35)
    => [#<IPAddr: IPv6:2001:0db8:0000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:2000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:4000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:6000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:8000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:a000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:c000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:e000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>]


Copyright (c) 2010-2013 James Harton, Resistor Limited, released under the MIT License.

About

A selection of extensions to Ruby's IPAddr module.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages