netaddr 1.5.1 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of netaddr might be problematic. Click here for more details.

@@ -0,0 +1,146 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require_relative "../lib/netaddr.rb"
4
+ require 'test/unit'
5
+
6
+ class TestIPv6Net < Test::Unit::TestCase
7
+ def test_new
8
+ ip = NetAddr::IPv6.parse("1::")
9
+ m128 = NetAddr::Mask128.new(24)
10
+ net = NetAddr::IPv6Net.new(ip,m128)
11
+ assert_equal("1::/24", net.to_s)
12
+
13
+ assert_equal("1::/64", NetAddr::IPv6Net.new(ip,nil).to_s)
14
+
15
+ ip = NetAddr::IPv6.parse("::")
16
+ assert_equal("::/128", NetAddr::IPv6Net.new(ip,nil).to_s)
17
+ end
18
+
19
+ def test_parse
20
+ assert_equal("1::/24", NetAddr::IPv6Net.parse("1::1/24").to_s)
21
+ assert_equal("::/128", NetAddr::IPv6Net.parse("::").to_s) # default /128
22
+ assert_equal("1::/64", NetAddr::IPv6Net.parse("1::1").to_s) # default /64
23
+ end
24
+
25
+ def test_cmp
26
+ net1 = NetAddr::IPv6Net.parse("1:1::/32")
27
+ net2 = NetAddr::IPv6Net.parse("1::/32")
28
+ net3 =NetAddr::IPv6Net.parse("1:2::/32")
29
+ net4 = NetAddr::IPv6Net.parse("1:1::/33")
30
+ net5 = NetAddr::IPv6Net.parse("1:1::/32")
31
+
32
+ assert_equal(1, net1.cmp(net2)) # ip less
33
+ assert_equal(-1, net1.cmp(net3))# ip greater
34
+ assert_equal(-1, net4.cmp(net1)) # ip eq, mask less
35
+ assert_equal(1, net1.cmp(net4)) # ip eq, mask greater
36
+ assert_equal(0, net1.cmp(net5)) # eq
37
+ end
38
+
39
+ def test_fill
40
+ parent = NetAddr::IPv6Net.parse("ff00::/8")
41
+ nets = []
42
+ ["ff08::/14", "fe00::/7", "ff20::/11", "ff20::/12"].each do |net|
43
+ nets.push(NetAddr::IPv6Net.parse(net))
44
+ end
45
+ expect = ["ff00::/13", "ff08::/14", "ff0c::/14", "ff10::/12", "ff20::/11", "ff40::/10", "ff80::/9"]
46
+ i = 0
47
+ parent.fill(nets).each do |net|
48
+ assert_equal(expect[i],net.to_s)
49
+ i += 1
50
+ end
51
+
52
+ parent = NetAddr::IPv6Net.parse("ff00::/121")
53
+ nets = []
54
+ ["ff00::/126", "ff00::/120"].each do |net|
55
+ nets.push(NetAddr::IPv6Net.parse(net))
56
+ end
57
+ expect = ["ff00::/126", "ff00::4/126", "ff00::8/125", "ff00::10/124", "ff00::20/123", "ff00::40/122"]
58
+ i = 0
59
+ parent.fill(nets).each do |net|
60
+ assert_equal(expect[i],net.to_s)
61
+ i += 1
62
+ end
63
+ end
64
+
65
+ def test_next
66
+ assert_equal("::2/127", NetAddr::IPv6Net.parse("::/127").next.to_s)
67
+ assert_equal("::8/125", NetAddr::IPv6Net.parse("::4/126").next.to_s)
68
+ assert_equal("0:0:0:2::/63", NetAddr::IPv6Net.parse("::1:8000:0:0:0/65").next.to_s)
69
+ assert_equal("0:0:0:3::/64", NetAddr::IPv6Net.parse("::2:8000:0:0:0/65").next.to_s)
70
+ assert_nil(NetAddr::IPv6Net.parse("ffff::/16").next)
71
+ end
72
+
73
+ def test_next_sib
74
+ assert_equal("0:0:0:2::/65", NetAddr::IPv6Net.parse("::1:8000:0:0:0/65",).next_sib.to_s)
75
+ assert_equal("0:0:0:2::/64", NetAddr::IPv6Net.parse("0:0:0:1::/64",).next_sib.to_s)
76
+ assert_equal("2::/16", NetAddr::IPv6Net.parse("1::/16").next_sib.to_s)
77
+ assert_nil(NetAddr::IPv6Net.parse("ffff::/16").next_sib)
78
+ end
79
+
80
+ def test_nth
81
+ assert_equal("1::", NetAddr::IPv6Net.parse("1::0/64").nth(0).to_s)
82
+ assert_equal("::", NetAddr::IPv6Net.parse("::/127").nth(0).to_s)
83
+ assert_equal("::1", NetAddr::IPv6Net.parse("::/127").nth(1).to_s)
84
+ assert_nil(NetAddr::IPv6Net.parse("::/127").nth(2))
85
+ end
86
+
87
+ def test_nth_subnet
88
+ assert_equal("1::/30", NetAddr::IPv6Net.parse("1::/24").nth_subnet(30,0).to_s)
89
+ assert_nil(NetAddr::IPv6Net.parse("1::").nth_subnet(26,4))
90
+ end
91
+
92
+ def test_prev
93
+ assert_equal("1::/125", NetAddr::IPv6Net.parse("1::8/126").prev.to_s)
94
+ assert_equal("f::/63", NetAddr::IPv6Net.parse("f:0:0:2::/63").prev.to_s)
95
+ assert_equal("e::/16", NetAddr::IPv6Net.parse("f::/63").prev.to_s)
96
+ assert_nil(NetAddr::IPv6Net.parse("::").prev)
97
+ end
98
+
99
+ def test_prev_sib
100
+ assert_equal("0:0:0:1::/64", NetAddr::IPv6Net.parse("0:0:0:2::/64").prev_sib.to_s)
101
+ assert_equal("1::/16", NetAddr::IPv6Net.parse("2::/16").prev_sib.to_s)
102
+ assert_nil(NetAddr::IPv6Net.parse("::/64").prev_sib)
103
+ end
104
+
105
+ def test_rel
106
+ net1 = NetAddr::IPv6Net.parse("1::/63")
107
+ net2 = NetAddr::IPv6Net.parse("1::/64")
108
+ net3 = NetAddr::IPv6Net.parse("1::/60")
109
+ net4 = NetAddr::IPv6Net.parse("1:0:0:1::/64")
110
+ net5 = NetAddr::IPv6Net.parse("2::/64")
111
+ assert_equal(1, net1.rel(net2)) # net eq, supernet
112
+ assert_equal(-1, net2.rel(net1)) # net eq, subnet
113
+ assert_equal(0, net2.rel(net2)) # eq
114
+ assert_equal(1, net3.rel(net4)) # net ne, supernet
115
+ assert_equal(-1, net4.rel(net3)) # net ne, subnet
116
+ assert_nil(net2.rel(net5)) # unrelated
117
+ end
118
+
119
+ def test_resize
120
+ assert_equal("1::/64", NetAddr::IPv6Net.parse("1::/63").resize(64).to_s)
121
+ end
122
+
123
+ def test_subnet_count
124
+ assert_equal(2, NetAddr::IPv6Net.parse("ff::/8").subnet_count(9))
125
+ assert_equal(4, NetAddr::IPv6Net.parse("ff::/8").subnet_count(10))
126
+ assert_equal(0, NetAddr::IPv6Net.parse("ff::/8").subnet_count(8))
127
+ assert_equal(0, NetAddr::IPv6Net.parse("::/0").subnet_count(128))
128
+ end
129
+
130
+ def test_summ
131
+ net1 = NetAddr::IPv6Net.parse("1::/128")
132
+ net2 = NetAddr::IPv6Net.parse("1::1/128")
133
+ net3 = NetAddr::IPv6Net.parse("1::0/128")
134
+ net4 = NetAddr::IPv6Net.parse("1::/16")
135
+ net5 = NetAddr::IPv6Net.parse("2::/16")
136
+ net6 = NetAddr::IPv6Net.parse("10::/12")
137
+ net7 = NetAddr::IPv6Net.parse("20::/12")
138
+ net8 = NetAddr::IPv6Net.parse("8::/17")
139
+ assert_equal("1::/127", net1.summ(net2).to_s) # lesser to greater
140
+ assert_equal("1::/127", net2.summ(net3).to_s) # greater to lesser
141
+ assert_nil(net4.summ(net5)) # different nets
142
+ assert_nil(net6.summ(net7)) # consecutive but not within bit boundary
143
+ assert_nil(net4.summ(net8)) # within bit boundary, but not same size
144
+ end
145
+
146
+ end
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require_relative "../lib/netaddr.rb"
4
+ require 'test/unit'
5
+
6
+ class TestMask128 < Test::Unit::TestCase
7
+ def test_new
8
+ m128 = NetAddr::Mask128.new(24)
9
+ assert_equal("/24", m128.to_s)
10
+ assert_equal(0xffffff00000000000000000000000000, m128.mask)
11
+
12
+ assert_raise(NetAddr::ValidationError){ NetAddr::Mask128.new(-1) }
13
+ assert_raise(NetAddr::ValidationError){ NetAddr::Mask128.new(129) }
14
+ assert_raise(NetAddr::ValidationError){ NetAddr::Mask128.new("/24") }
15
+ end
16
+
17
+ def test_parse
18
+ m128 = NetAddr::Mask128.parse("/24")
19
+ assert_equal("/24", m128.to_s)
20
+
21
+ m128 = NetAddr::Mask128.parse("24")
22
+ assert_equal("/24", m128.to_s)
23
+
24
+ assert_raise(NetAddr::ValidationError){ NetAddr::Mask128.parse("/129") }
25
+ end
26
+
27
+ def test_cmp
28
+ m = NetAddr::Mask128.new(24)
29
+ m2 = NetAddr::Mask128.new(25)
30
+ m3 = NetAddr::Mask128.new(23)
31
+ m4 = NetAddr::Mask128.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::Mask128.new(65)
39
+ assert_equal(2**(128-65), m.len())
40
+
41
+ m = NetAddr::Mask128.new(64)
42
+ assert_equal(0, m.len())
43
+ end
44
+
45
+ end
@@ -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
@@ -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,42 +1,47 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netaddr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.1
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: 2016-01-25 00:00:00.000000000 Z
11
+ date: 2018-01-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
15
15
  executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files:
18
- - README
19
- - Errors
20
- - changelog
21
- - license
18
+ - README.md
19
+ - LICENSE
22
20
  files:
23
- - Errors
24
- - README
25
- - changelog
26
- - lib/cidr.rb
27
- - lib/cidr_shortcuts.rb
28
- - lib/eui.rb
29
- - lib/ip_math.rb
30
- - lib/methods.rb
21
+ - LICENSE
22
+ - README.md
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/tree.rb
33
- - lib/validation_shortcuts.rb
34
- - license
35
- - test/cidr_test.rb
36
- - test/eui_test.rb
37
- - test/methods_test.rb
38
- - test/tree_test.rb
39
- homepage:
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: {}
@@ -56,8 +61,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
61
  version: '0'
57
62
  requirements: []
58
63
  rubyforge_project:
59
- rubygems_version: 2.2.2
64
+ rubygems_version: 2.5.1
60
65
  signing_key:
61
66
  specification_version: 4
62
- summary: A package for manipulating network addresses.
67
+ summary: A Ruby library for performing calculations on IPv4 and IPv6 subnets.
63
68
  test_files: []