netaddr 1.5.3 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of netaddr might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/LICENSE +201 -0
- data/README.md +28 -8
- data/lib/eui48.rb +65 -0
- data/lib/eui64.rb +77 -0
- data/lib/ipv4.rb +77 -0
- data/lib/ipv4net.rb +245 -0
- data/lib/ipv6.rb +110 -0
- data/lib/ipv6net.rb +246 -0
- data/lib/mask128.rb +68 -0
- data/lib/mask32.rb +99 -0
- data/lib/netaddr.rb +104 -20
- data/lib/util.rb +310 -0
- data/test/eui48_test.rb +30 -0
- data/test/eui64_test.rb +32 -0
- data/test/examples.rb +137 -0
- data/test/ipv4_test.rb +54 -0
- data/test/ipv4net_test.rb +166 -0
- data/test/ipv6_test.rb +90 -0
- data/test/ipv6net_test.rb +146 -0
- data/test/mask128_test.rb +45 -0
- data/test/mask32_test.rb +51 -0
- data/test/netaddr_test.rb +127 -0
- data/test/run_all.rb +10 -0
- metadata +28 -22
- data/Errors +0 -7
- data/changelog +0 -52
- data/lib/cidr.rb +0 -2014
- data/lib/cidr_shortcuts.rb +0 -401
- data/lib/eui.rb +0 -402
- data/lib/ip_math.rb +0 -227
- data/lib/methods.rb +0 -1013
- data/lib/tree.rb +0 -816
- data/lib/validation_shortcuts.rb +0 -201
- data/license +0 -13
- data/test/cidr_test.rb +0 -545
- data/test/eui_test.rb +0 -101
- data/test/methods_test.rb +0 -331
- data/test/tree_test.rb +0 -347
    
        data/test/mask32_test.rb
    ADDED
    
    | @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            #!/usr/bin/ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative "../lib/netaddr.rb"
         | 
| 4 | 
            +
            require 'test/unit'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class TestMask32 < Test::Unit::TestCase
         | 
| 7 | 
            +
            	def test_new
         | 
| 8 | 
            +
            		m32 = NetAddr::Mask32.new(24)
         | 
| 9 | 
            +
            		assert_equal("/24", m32.to_s)
         | 
| 10 | 
            +
            		assert_equal(0xffffff00, m32.mask)
         | 
| 11 | 
            +
            		
         | 
| 12 | 
            +
            		assert_raise(NetAddr::ValidationError){ NetAddr::Mask32.new(-1) }
         | 
| 13 | 
            +
            		assert_raise(NetAddr::ValidationError){ NetAddr::Mask32.new(33) }
         | 
| 14 | 
            +
            		assert_raise(NetAddr::ValidationError){ NetAddr::Mask32.new("/24") }
         | 
| 15 | 
            +
            	end
         | 
| 16 | 
            +
            	
         | 
| 17 | 
            +
            	def test_parse
         | 
| 18 | 
            +
            		m32 = NetAddr::Mask32.parse("255.255.255.0")
         | 
| 19 | 
            +
            		assert_equal("/24", m32.to_s)
         | 
| 20 | 
            +
            		
         | 
| 21 | 
            +
            		m32 = NetAddr::Mask32.parse("/24")
         | 
| 22 | 
            +
            		assert_equal("/24", m32.to_s)
         | 
| 23 | 
            +
            		
         | 
| 24 | 
            +
            		assert_raise(NetAddr::ValidationError){ NetAddr::Mask32.parse("255.248.255.0") }
         | 
| 25 | 
            +
            	end
         | 
| 26 | 
            +
            	
         | 
| 27 | 
            +
            	def test_cmp
         | 
| 28 | 
            +
            		m = NetAddr::Mask32.new(24)
         | 
| 29 | 
            +
            		m2 = NetAddr::Mask32.new(25)
         | 
| 30 | 
            +
            		m3 = NetAddr::Mask32.new(23)
         | 
| 31 | 
            +
            		m4 = NetAddr::Mask32.new(24)
         | 
| 32 | 
            +
            		assert_equal(1, m.cmp(m2))
         | 
| 33 | 
            +
            		assert_equal(-1, m.cmp(m3))
         | 
| 34 | 
            +
            		assert_equal(0, m.cmp(m4))
         | 
| 35 | 
            +
            	end
         | 
| 36 | 
            +
            	
         | 
| 37 | 
            +
            	def test_len
         | 
| 38 | 
            +
            		m = NetAddr::Mask32.new(24)
         | 
| 39 | 
            +
            		assert_equal(256, m.len())
         | 
| 40 | 
            +
            		
         | 
| 41 | 
            +
            		m = NetAddr::Mask32.new(26)
         | 
| 42 | 
            +
            		assert_equal(64, m.len())
         | 
| 43 | 
            +
            		
         | 
| 44 | 
            +
            		m = NetAddr::Mask32.new(32)
         | 
| 45 | 
            +
            		assert_equal(1, m.len())
         | 
| 46 | 
            +
            		
         | 
| 47 | 
            +
            		m = NetAddr::Mask32.new(0)
         | 
| 48 | 
            +
            		assert_equal(0, m.len())
         | 
| 49 | 
            +
            	end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
            end
         | 
| @@ -0,0 +1,127 @@ | |
| 1 | 
            +
            #!/usr/bin/ruby
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative "../lib/netaddr.rb"
         | 
| 4 | 
            +
            require 'test/unit'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            class TestNetAddr < Test::Unit::TestCase
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            	def test_ipv4_prefix_len
         | 
| 9 | 
            +
            		assert_equal(32,NetAddr.ipv4_prefix_len(1))
         | 
| 10 | 
            +
            		assert_equal(27,NetAddr.ipv4_prefix_len(30))
         | 
| 11 | 
            +
            		assert_equal(24,NetAddr.ipv4_prefix_len(254))
         | 
| 12 | 
            +
            		assert_equal(16,NetAddr.ipv4_prefix_len(0xfffe))
         | 
| 13 | 
            +
            		assert_equal(8,NetAddr.ipv4_prefix_len(0xfffffe))
         | 
| 14 | 
            +
            		assert_equal(0,NetAddr.ipv4_prefix_len(0xffffffff))
         | 
| 15 | 
            +
            	end
         | 
| 16 | 
            +
            	
         | 
| 17 | 
            +
            	def test_sort_IPv4
         | 
| 18 | 
            +
            		ips = []
         | 
| 19 | 
            +
            		["10.0.0.0","1.1.1.1","0.0.0.0","10.1.10.1"].each do |net|
         | 
| 20 | 
            +
            			ips.push(NetAddr::IPv4.parse(net))
         | 
| 21 | 
            +
            		end
         | 
| 22 | 
            +
            		sorted = NetAddr.sort_IPv4(ips)
         | 
| 23 | 
            +
            		expect = [ips[2],ips[1],ips[0],ips[3]]
         | 
| 24 | 
            +
            		assert_equal(expect, sorted)
         | 
| 25 | 
            +
            	end
         | 
| 26 | 
            +
            	
         | 
| 27 | 
            +
            	def test_sort_IPv4Net
         | 
| 28 | 
            +
            		nets = []
         | 
| 29 | 
            +
            		["10.0.0.0/24", "1.0.0.0/24", "10.0.0.0/8", "192.168.1.0/26", "8.8.8.8/32"].each do |net|
         | 
| 30 | 
            +
            			nets.push(NetAddr::IPv4Net.parse(net))
         | 
| 31 | 
            +
            		end
         | 
| 32 | 
            +
            		sorted = NetAddr.sort_IPv4Net(nets)
         | 
| 33 | 
            +
            		expect = [nets[1],nets[4],nets[0],nets[2],nets[3]]
         | 
| 34 | 
            +
            		assert_equal(expect, sorted)
         | 
| 35 | 
            +
            	end
         | 
| 36 | 
            +
            	
         | 
| 37 | 
            +
            	def test_summ_IPv4Net
         | 
| 38 | 
            +
            		nets = []
         | 
| 39 | 
            +
            		["10.0.0.0/29", "10.0.0.8/30", "10.0.0.12/30", "10.0.0.16/28", "10.0.0.32/27", "10.0.0.64/26", "10.0.0.128/25"].each do |net|
         | 
| 40 | 
            +
            			nets.push(NetAddr::IPv4Net.parse(net))
         | 
| 41 | 
            +
            		end
         | 
| 42 | 
            +
            		expect = ["10.0.0.0/24"]
         | 
| 43 | 
            +
            		i = 0
         | 
| 44 | 
            +
            		NetAddr.summ_IPv4Net(nets).each do |net|
         | 
| 45 | 
            +
            			assert_equal(expect[i],net.to_s)
         | 
| 46 | 
            +
            			i += 1
         | 
| 47 | 
            +
            		end
         | 
| 48 | 
            +
            		
         | 
| 49 | 
            +
            		nets = []
         | 
| 50 | 
            +
            		["10.0.0.0/24", "1.0.0.0/8", "3.4.5.6/32", "3.4.5.8/31", "0.0.0.0/0"].each do |net|
         | 
| 51 | 
            +
            			nets.push(NetAddr::IPv4Net.parse(net))
         | 
| 52 | 
            +
            		end
         | 
| 53 | 
            +
            		expect = ["0.0.0.0/0"]
         | 
| 54 | 
            +
            		i = 0
         | 
| 55 | 
            +
            		NetAddr.summ_IPv4Net(nets).each do |net|
         | 
| 56 | 
            +
            			assert_equal(expect[i],net.to_s)
         | 
| 57 | 
            +
            			i += 1
         | 
| 58 | 
            +
            		end
         | 
| 59 | 
            +
            		
         | 
| 60 | 
            +
            		nets = []
         | 
| 61 | 
            +
            		["10.0.1.0/25", "10.0.1.0/26", "10.0.0.16/28", "10.0.0.32/27", "10.0.0.128/26", "10.0.0.192/26", "10.0.0.32/27"].each do |net|
         | 
| 62 | 
            +
            			nets.push(NetAddr::IPv4Net.parse(net))
         | 
| 63 | 
            +
            		end
         | 
| 64 | 
            +
            		expect = ["10.0.0.16/28", "10.0.0.32/27", "10.0.0.128/25", "10.0.1.0/25"]
         | 
| 65 | 
            +
            		i = 0
         | 
| 66 | 
            +
            		NetAddr.summ_IPv4Net(nets).each do |net|
         | 
| 67 | 
            +
            			assert_equal(expect[i],net.to_s)
         | 
| 68 | 
            +
            			i += 1
         | 
| 69 | 
            +
            		end
         | 
| 70 | 
            +
            	end
         | 
| 71 | 
            +
            	
         | 
| 72 | 
            +
            	def test_sort_IPv6
         | 
| 73 | 
            +
            		ips = []
         | 
| 74 | 
            +
            		["1::", "3::", "2::", "::", "::1"].each do |net|
         | 
| 75 | 
            +
            			ips.push(NetAddr::IPv6.parse(net))
         | 
| 76 | 
            +
            		end
         | 
| 77 | 
            +
            		sorted = NetAddr.sort_IPv6(ips)
         | 
| 78 | 
            +
            		expect = [ips[3],ips[4],ips[0],ips[2],ips[1]]
         | 
| 79 | 
            +
            		assert_equal(expect, sorted)
         | 
| 80 | 
            +
            	end
         | 
| 81 | 
            +
            	
         | 
| 82 | 
            +
            	def test_sort_IPv6Net
         | 
| 83 | 
            +
            		nets = []
         | 
| 84 | 
            +
            		["1::/64", "2::/64", "1::/16", "::", "::1"].each do |net|
         | 
| 85 | 
            +
            			nets.push(NetAddr::IPv6Net.parse(net))
         | 
| 86 | 
            +
            		end
         | 
| 87 | 
            +
            		sorted = NetAddr.sort_IPv6Net(nets)
         | 
| 88 | 
            +
            		expect = [nets[3],nets[4],nets[0],nets[2],nets[1]] # ::/128 ::1/128 1::/64 1::/16 2::/64
         | 
| 89 | 
            +
            		assert_equal(expect, sorted)
         | 
| 90 | 
            +
            	end
         | 
| 91 | 
            +
            	
         | 
| 92 | 
            +
            	def test_summ_IPv6Net
         | 
| 93 | 
            +
            		nets = []
         | 
| 94 | 
            +
            		["ff00::/13", "ff08::/14", "ff0c::/14", "ff10::/12", "ff20::/11", "ff40::/10", "ff80::/9"].each do |net|
         | 
| 95 | 
            +
            			nets.push(NetAddr::IPv6Net.parse(net))
         | 
| 96 | 
            +
            		end
         | 
| 97 | 
            +
            		expect = ["ff00::/8"]
         | 
| 98 | 
            +
            		i = 0
         | 
| 99 | 
            +
            		NetAddr.summ_IPv6Net(nets).each do |net|
         | 
| 100 | 
            +
            			assert_equal(expect[i],net.to_s)
         | 
| 101 | 
            +
            			i += 1
         | 
| 102 | 
            +
            		end
         | 
| 103 | 
            +
            		
         | 
| 104 | 
            +
            		nets = []
         | 
| 105 | 
            +
            		["2::/32", "::1", "fec0::/16", "1::/16", "::/0"].each do |net|
         | 
| 106 | 
            +
            			nets.push(NetAddr::IPv6Net.parse(net))
         | 
| 107 | 
            +
            		end
         | 
| 108 | 
            +
            		expect = ["::/0"]
         | 
| 109 | 
            +
            		i = 0
         | 
| 110 | 
            +
            		NetAddr.summ_IPv6Net(nets).each do |net|
         | 
| 111 | 
            +
            			assert_equal(expect[i],net.to_s)
         | 
| 112 | 
            +
            			i += 1
         | 
| 113 | 
            +
            		end
         | 
| 114 | 
            +
            		
         | 
| 115 | 
            +
            		nets = []
         | 
| 116 | 
            +
            		["ff80::/9", "ff10::/12", "ff80::/10", "ff20::/12", "fff0::/16", "fff1::/16", "ff80::/10"].each do |net|
         | 
| 117 | 
            +
            			nets.push(NetAddr::IPv6Net.parse(net))
         | 
| 118 | 
            +
            		end
         | 
| 119 | 
            +
            		expect = ["ff10::/12", "ff20::/12", "ff80::/9", "fff0::/15"]
         | 
| 120 | 
            +
            		i = 0
         | 
| 121 | 
            +
            		NetAddr.summ_IPv6Net(nets).each do |net|
         | 
| 122 | 
            +
            			assert_equal(expect[i],net.to_s)
         | 
| 123 | 
            +
            			i += 1
         | 
| 124 | 
            +
            		end
         | 
| 125 | 
            +
            	end
         | 
| 126 | 
            +
             | 
| 127 | 
            +
            end
         | 
    
        data/test/run_all.rb
    ADDED
    
    | @@ -0,0 +1,10 @@ | |
| 1 | 
            +
            require_relative "examples.rb"
         | 
| 2 | 
            +
            require_relative "netaddr_test.rb"
         | 
| 3 | 
            +
            require_relative "eui48_test.rb"
         | 
| 4 | 
            +
            require_relative "eui64_test.rb"
         | 
| 5 | 
            +
            require_relative "ipv4_test.rb"
         | 
| 6 | 
            +
            require_relative "ipv4net_test.rb"
         | 
| 7 | 
            +
            require_relative "ipv6_test.rb"
         | 
| 8 | 
            +
            require_relative "ipv6net_test.rb"
         | 
| 9 | 
            +
            require_relative "mask32_test.rb"
         | 
| 10 | 
            +
            require_relative "mask128_test.rb"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: netaddr
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 2.0.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dustin Spinhirne
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2018-01-22 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: 
         | 
| 14 14 | 
             
            email: 
         | 
| @@ -16,27 +16,32 @@ executables: [] | |
| 16 16 | 
             
            extensions: []
         | 
| 17 17 | 
             
            extra_rdoc_files:
         | 
| 18 18 | 
             
            - README.md
         | 
| 19 | 
            -
            -  | 
| 20 | 
            -
            - changelog
         | 
| 21 | 
            -
            - license
         | 
| 19 | 
            +
            - LICENSE
         | 
| 22 20 | 
             
            files:
         | 
| 23 | 
            -
            -  | 
| 21 | 
            +
            - LICENSE
         | 
| 24 22 | 
             
            - README.md
         | 
| 25 | 
            -
            -  | 
| 26 | 
            -
            - lib/ | 
| 27 | 
            -
            - lib/ | 
| 28 | 
            -
            - lib/ | 
| 29 | 
            -
            - lib/ | 
| 30 | 
            -
            - lib/ | 
| 23 | 
            +
            - lib/eui48.rb
         | 
| 24 | 
            +
            - lib/eui64.rb
         | 
| 25 | 
            +
            - lib/ipv4.rb
         | 
| 26 | 
            +
            - lib/ipv4net.rb
         | 
| 27 | 
            +
            - lib/ipv6.rb
         | 
| 28 | 
            +
            - lib/ipv6net.rb
         | 
| 29 | 
            +
            - lib/mask128.rb
         | 
| 30 | 
            +
            - lib/mask32.rb
         | 
| 31 31 | 
             
            - lib/netaddr.rb
         | 
| 32 | 
            -
            - lib/ | 
| 33 | 
            -
            -  | 
| 34 | 
            -
            -  | 
| 35 | 
            -
            - test/ | 
| 36 | 
            -
            - test/ | 
| 37 | 
            -
            - test/ | 
| 38 | 
            -
            - test/ | 
| 39 | 
            -
             | 
| 32 | 
            +
            - lib/util.rb
         | 
| 33 | 
            +
            - test/eui48_test.rb
         | 
| 34 | 
            +
            - test/eui64_test.rb
         | 
| 35 | 
            +
            - test/examples.rb
         | 
| 36 | 
            +
            - test/ipv4_test.rb
         | 
| 37 | 
            +
            - test/ipv4net_test.rb
         | 
| 38 | 
            +
            - test/ipv6_test.rb
         | 
| 39 | 
            +
            - test/ipv6net_test.rb
         | 
| 40 | 
            +
            - test/mask128_test.rb
         | 
| 41 | 
            +
            - test/mask32_test.rb
         | 
| 42 | 
            +
            - test/netaddr_test.rb
         | 
| 43 | 
            +
            - test/run_all.rb
         | 
| 44 | 
            +
            homepage: https://github.com/dspinhirne/netaddr-rb
         | 
| 40 45 | 
             
            licenses:
         | 
| 41 46 | 
             
            - Apache-2.0
         | 
| 42 47 | 
             
            metadata: {}
         | 
| @@ -55,8 +60,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 55 60 | 
             
                - !ruby/object:Gem::Version
         | 
| 56 61 | 
             
                  version: '0'
         | 
| 57 62 | 
             
            requirements: []
         | 
| 58 | 
            -
             | 
| 63 | 
            +
            rubyforge_project: 
         | 
| 64 | 
            +
            rubygems_version: 2.5.1
         | 
| 59 65 | 
             
            signing_key: 
         | 
| 60 66 | 
             
            specification_version: 4
         | 
| 61 | 
            -
            summary: A  | 
| 67 | 
            +
            summary: A Ruby library for performing calculations on IPv4 and IPv6 subnets.
         | 
| 62 68 | 
             
            test_files: []
         | 
    
        data/Errors
    DELETED
    
    
    
        data/changelog
    DELETED
    
    | @@ -1,52 +0,0 @@ | |
| 1 | 
            -
            Version 1.5.2
         | 
| 2 | 
            -
            Changes:
         | 
| 3 | 
            -
            * bug fixes from: https://github.com/KirillSmirnov, https://github.com/rwhitworth, https://github.com/y13i
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            Version 1.5.1
         | 
| 6 | 
            -
            Changes:
         | 
| 7 | 
            -
            * fixed bug with NetAddr#merge (credit to Daniel Boughton)
         | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
            Version 1.5.0
         | 
| 11 | 
            -
            Changes:
         | 
| 12 | 
            -
            * fixed bug with EUI48#to_eui64 (credit to Erik Kline)
         | 
| 13 | 
            -
            * fixed bug with u/l bit toggle on EUI#link_local (credit to Erik Kline)
         | 
| 14 | 
            -
            * added EUI#to_ipv6
         | 
| 15 | 
            -
            * added NetAddr#supernets
         | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
            Version 1.4.0
         | 
| 19 | 
            -
            Changes:
         | 
| 20 | 
            -
            * Added additional options to NetAddr#sort
         | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
            Version 1.3.0
         | 
| 24 | 
            -
            New Features:
         | 
| 25 | 
            -
            * added CIDR#[]
         | 
| 26 | 
            -
            * added CIDR#succ (CIDR objects may now be used as args for the standard Ruby Range class)
         | 
| 27 | 
            -
            * added CIDR#allocate_rfc3531
         | 
| 28 | 
            -
            * added CIDR#to_i
         | 
| 29 | 
            -
            * added CIDRv6.unique_local
         | 
| 30 | 
            -
            * added EUI48#to_eui64
         | 
| 31 | 
            -
            * added EUI#to_i
         | 
| 32 | 
            -
            * added EUI#to_s
         | 
| 33 | 
            -
             | 
| 34 | 
            -
            Changes:
         | 
| 35 | 
            -
            * deprecated 'packed' methods
         | 
| 36 | 
            -
             | 
| 37 | 
            -
             | 
| 38 | 
            -
            Version 1.2.0
         | 
| 39 | 
            -
            Changes:
         | 
| 40 | 
            -
            * CIDRv4#new and CIDRv6#new methods have been changed for the sake of speed improvements.
         | 
| 41 | 
            -
              Please use the CIDR#create method instead.
         | 
| 42 | 
            -
            * changes to CIDR#wildcard_mask
         | 
| 43 | 
            -
            * bug fix with validate_eui method
         | 
| 44 | 
            -
            * bug fix with validate_ip_addr
         | 
| 45 | 
            -
            * bug fix and *vast* simplification of NetAddr.merge
         | 
| 46 | 
            -
             | 
| 47 | 
            -
             | 
| 48 | 
            -
            New Features:
         | 
| 49 | 
            -
            * speed improvements
         | 
| 50 | 
            -
            * added CIDR#set_wildcard_mask
         | 
| 51 | 
            -
            * added <=>, >, <, == methods to CIDR
         | 
| 52 | 
            -
            * NetAddr.merge now reports which CIDR addresses were used to create new summary addresses
         |