netaddr 1.5.3 → 2.0.6

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.
@@ -0,0 +1,199 @@
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_contains
40
+ net = NetAddr::IPv6Net.parse("1:8::/29")
41
+ ip1 = NetAddr::IPv6.parse("1:f::")
42
+ ip2 = NetAddr::IPv6.parse("1:10::")
43
+ ip3 = NetAddr::IPv6.parse("1:7::")
44
+
45
+ assert_equal(true, net.contains(ip1))
46
+ assert_equal(false, net.contains(ip2))
47
+ assert_equal(false, net.contains(ip3))
48
+ end
49
+
50
+ def test_fill
51
+ # filter supernet. remove subnets of subnets. basic fwd fill.
52
+ parent = NetAddr::IPv6Net.parse("ff00::/8")
53
+ nets = []
54
+ ["ff00::/8", "ff00::/9", "ff08::/14", "fe00::/7", "ff20::/11", "ff20::/12"].each do |net|
55
+ nets.push(NetAddr::IPv6Net.parse(net))
56
+ end
57
+ expect = ["ff00::/9", "ff80::/9"]
58
+ i = 0
59
+ parent.fill(nets).each do |net|
60
+ assert_equal(expect[i],net.to_s)
61
+ i += 1
62
+ end
63
+
64
+ # basic backfill
65
+ parent = NetAddr::IPv6Net.parse("8000::/1")
66
+ nets = []
67
+ ["c000::/2"].each do |net|
68
+ nets.push(NetAddr::IPv6Net.parse(net))
69
+ end
70
+ expect = ["8000::/2","c000::/2"]
71
+ i = 0
72
+ parent.fill(nets).each do |net|
73
+ assert_equal(expect[i],net.to_s)
74
+ i += 1
75
+ end
76
+
77
+ # basic fwd fill with non-contiguous subnets
78
+ parent = NetAddr::IPv6Net.parse("ff00::/121")
79
+ nets = []
80
+ ["ff00::/126", "ff00::/120"].each do |net|
81
+ nets.push(NetAddr::IPv6Net.parse(net))
82
+ end
83
+ expect = ["ff00::/126", "ff00::4/126", "ff00::8/125", "ff00::10/124", "ff00::20/123", "ff00::40/122"]
84
+ i = 0
85
+ parent.fill(nets).each do |net|
86
+ assert_equal(expect[i],net.to_s)
87
+ i += 1
88
+ end
89
+
90
+ # basic backfill. complex fwd fill that uses 'shrink' of the proposed ffff:ffff:ffff:fff8::/62 subnet. designed to cross the /64 bit boundary.
91
+ parent = NetAddr::IPv6Net.parse("fff:ffff:ffff:fff0::/60")
92
+ nets = []
93
+ ["ffff:ffff:ffff:fff4::/62", "ffff:ffff:ffff:fffb::/65"].each do |net|
94
+ nets.push(NetAddr::IPv6Net.parse(net))
95
+ end
96
+ expect = ["ffff:ffff:ffff:fff0::/62", "ffff:ffff:ffff:fff4::/62", "ffff:ffff:ffff:fff8::/63", "ffff:ffff:ffff:fffa::/64", "ffff:ffff:ffff:fffb::/65",
97
+ "ffff:ffff:ffff:fffb:8000::/65", "ffff:ffff:ffff:fffc::/62"]
98
+ i = 0
99
+ parent.fill(nets).each do |net|
100
+ assert_equal(expect[i],net.to_s)
101
+ i += 1
102
+ end
103
+
104
+ # list contains the supernet
105
+ parent = NetAddr::IPv6Net.parse("ffff::/16")
106
+ nets = []
107
+ ["ffff::/16"].each do |net|
108
+ nets.push(NetAddr::IPv6Net.parse(net))
109
+ end
110
+ expect = []
111
+ i = 0
112
+ parent.fill(nets).each do |net|
113
+ assert_equal(expect[i],net.to_s)
114
+ i += 1
115
+ end
116
+ end
117
+
118
+ def test_next
119
+ assert_equal("::2/127", NetAddr::IPv6Net.parse("::/127").next.to_s)
120
+ assert_equal("::8/125", NetAddr::IPv6Net.parse("::4/126").next.to_s)
121
+ assert_equal("0:0:0:2::/63", NetAddr::IPv6Net.parse("::1:8000:0:0:0/65").next.to_s)
122
+ assert_equal("0:0:0:3::/64", NetAddr::IPv6Net.parse("::2:8000:0:0:0/65").next.to_s)
123
+ assert_nil(NetAddr::IPv6Net.parse("ffff::/16").next)
124
+ end
125
+
126
+ def test_next_sib
127
+ assert_equal("0:0:0:2::/65", NetAddr::IPv6Net.parse("::1:8000:0:0:0/65",).next_sib.to_s)
128
+ assert_equal("0:0:0:2::/64", NetAddr::IPv6Net.parse("0:0:0:1::/64",).next_sib.to_s)
129
+ assert_equal("2::/16", NetAddr::IPv6Net.parse("1::/16").next_sib.to_s)
130
+ assert_nil(NetAddr::IPv6Net.parse("ffff::/16").next_sib)
131
+ end
132
+
133
+ def test_nth
134
+ assert_equal("1::", NetAddr::IPv6Net.parse("1::0/64").nth(0).to_s)
135
+ assert_equal("::", NetAddr::IPv6Net.parse("::/127").nth(0).to_s)
136
+ assert_equal("::1", NetAddr::IPv6Net.parse("::/127").nth(1).to_s)
137
+ assert_nil(NetAddr::IPv6Net.parse("::/127").nth(2))
138
+ end
139
+
140
+ def test_nth_subnet
141
+ assert_equal("1::/30", NetAddr::IPv6Net.parse("1::/24").nth_subnet(30,0).to_s)
142
+ assert_nil(NetAddr::IPv6Net.parse("1::").nth_subnet(26,4))
143
+ end
144
+
145
+ def test_prev
146
+ assert_equal("1::/125", NetAddr::IPv6Net.parse("1::8/126").prev.to_s)
147
+ assert_equal("f::/63", NetAddr::IPv6Net.parse("f:0:0:2::/63").prev.to_s)
148
+ assert_equal("e::/16", NetAddr::IPv6Net.parse("f::/63").prev.to_s)
149
+ assert_nil(NetAddr::IPv6Net.parse("::").prev)
150
+ end
151
+
152
+ def test_prev_sib
153
+ assert_equal("0:0:0:1::/64", NetAddr::IPv6Net.parse("0:0:0:2::/64").prev_sib.to_s)
154
+ assert_equal("1::/16", NetAddr::IPv6Net.parse("2::/16").prev_sib.to_s)
155
+ assert_nil(NetAddr::IPv6Net.parse("::/64").prev_sib)
156
+ end
157
+
158
+ def test_rel
159
+ net1 = NetAddr::IPv6Net.parse("1::/63")
160
+ net2 = NetAddr::IPv6Net.parse("1::/64")
161
+ net3 = NetAddr::IPv6Net.parse("1::/60")
162
+ net4 = NetAddr::IPv6Net.parse("1:0:0:1::/64")
163
+ net5 = NetAddr::IPv6Net.parse("2::/64")
164
+ assert_equal(1, net1.rel(net2)) # net eq, supernet
165
+ assert_equal(-1, net2.rel(net1)) # net eq, subnet
166
+ assert_equal(0, net2.rel(net2)) # eq
167
+ assert_equal(1, net3.rel(net4)) # net ne, supernet
168
+ assert_equal(-1, net4.rel(net3)) # net ne, subnet
169
+ assert_nil(net2.rel(net5)) # unrelated
170
+ end
171
+
172
+ def test_resize
173
+ assert_equal("1::/64", NetAddr::IPv6Net.parse("1::/63").resize(64).to_s)
174
+ end
175
+
176
+ def test_subnet_count
177
+ assert_equal(2, NetAddr::IPv6Net.parse("ff::/8").subnet_count(9))
178
+ assert_equal(4, NetAddr::IPv6Net.parse("ff::/8").subnet_count(10))
179
+ assert_equal(0, NetAddr::IPv6Net.parse("ff::/8").subnet_count(8))
180
+ assert_equal(0, NetAddr::IPv6Net.parse("::/0").subnet_count(128))
181
+ end
182
+
183
+ def test_summ
184
+ net1 = NetAddr::IPv6Net.parse("1::/128")
185
+ net2 = NetAddr::IPv6Net.parse("1::1/128")
186
+ net3 = NetAddr::IPv6Net.parse("1::0/128")
187
+ net4 = NetAddr::IPv6Net.parse("1::/16")
188
+ net5 = NetAddr::IPv6Net.parse("2::/16")
189
+ net6 = NetAddr::IPv6Net.parse("10::/12")
190
+ net7 = NetAddr::IPv6Net.parse("20::/12")
191
+ net8 = NetAddr::IPv6Net.parse("8::/17")
192
+ assert_equal("1::/127", net1.summ(net2).to_s) # lesser to greater
193
+ assert_equal("1::/127", net2.summ(net3).to_s) # greater to lesser
194
+ assert_nil(net4.summ(net5)) # different nets
195
+ assert_nil(net6.summ(net7)) # consecutive but not within bit boundary
196
+ assert_nil(net4.summ(net8)) # within bit boundary, but not same size
197
+ end
198
+
199
+ 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,56 @@
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_extended
38
+ m32 = NetAddr::Mask32.new(24)
39
+ assert_equal("255.255.255.0", m32.extended)
40
+ end
41
+
42
+ def test_len
43
+ m = NetAddr::Mask32.new(24)
44
+ assert_equal(256, m.len())
45
+
46
+ m = NetAddr::Mask32.new(26)
47
+ assert_equal(64, m.len())
48
+
49
+ m = NetAddr::Mask32.new(32)
50
+ assert_equal(1, m.len())
51
+
52
+ m = NetAddr::Mask32.new(0)
53
+ assert_equal(0, m.len())
54
+ end
55
+
56
+ end
@@ -0,0 +1,149 @@
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_parse_ip
9
+ assert_equal("128.0.0.1", NetAddr.parse_ip("128.0.0.1").to_s)
10
+ assert_equal("1::1", NetAddr.parse_ip("1::1").to_s)
11
+ end
12
+
13
+ def test_parse_net
14
+ assert_equal("128.0.0.1/32", NetAddr.parse_net("128.0.0.1/32").to_s)
15
+ assert_equal("1::/24", NetAddr.parse_net("1::1/24").to_s)
16
+ assert_equal("::ffff:aabb:ccdd/128", NetAddr.parse_net("::ffff:170.187.204.221/128").to_s)
17
+ end
18
+
19
+ def test_ipv4_prefix_len
20
+ assert_equal(32,NetAddr.ipv4_prefix_len(1))
21
+ assert_equal(27,NetAddr.ipv4_prefix_len(30))
22
+ assert_equal(24,NetAddr.ipv4_prefix_len(254))
23
+ assert_equal(16,NetAddr.ipv4_prefix_len(0xfffe))
24
+ assert_equal(8,NetAddr.ipv4_prefix_len(0xfffffe))
25
+ assert_equal(0,NetAddr.ipv4_prefix_len(0xffffffff))
26
+ end
27
+
28
+ def test_sort_IPv4
29
+ ips = []
30
+ ["10.0.0.0","1.1.1.1","0.0.0.0","10.1.10.1"].each do |net|
31
+ ips.push(NetAddr::IPv4.parse(net))
32
+ end
33
+ sorted = NetAddr.sort_IPv4(ips)
34
+ expect = [ips[2],ips[1],ips[0],ips[3]]
35
+ assert_equal(expect, sorted)
36
+ end
37
+
38
+ def test_sort_IPv4Net
39
+ nets = []
40
+ ["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|
41
+ nets.push(NetAddr::IPv4Net.parse(net))
42
+ end
43
+ sorted = NetAddr.sort_IPv4Net(nets)
44
+ expect = [nets[1],nets[4],nets[0],nets[2],nets[3]]
45
+ assert_equal(expect, sorted)
46
+ end
47
+
48
+ def test_summ_IPv4Net
49
+ nets = []
50
+ ["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|
51
+ nets.push(NetAddr::IPv4Net.parse(net))
52
+ end
53
+ expect = ["10.0.0.0/24"]
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.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|
62
+ nets.push(NetAddr::IPv4Net.parse(net))
63
+ end
64
+ expect = ["0.0.0.0/0"]
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
+
71
+ nets = []
72
+ ["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|
73
+ nets.push(NetAddr::IPv4Net.parse(net))
74
+ end
75
+ expect = ["10.0.0.16/28", "10.0.0.32/27", "10.0.0.128/25", "10.0.1.0/25"]
76
+ i = 0
77
+ NetAddr.summ_IPv4Net(nets).each do |net|
78
+ assert_equal(expect[i],net.to_s)
79
+ i += 1
80
+ end
81
+
82
+ nets = []
83
+ ["10.0.0.0/26","10.0.0.64/26","10.0.0.0/24","10.0.0.192/26","10.0.0.128/26"].each do |net| # test out of order
84
+ nets.push(NetAddr::IPv4Net.parse(net))
85
+ end
86
+ expect = ["10.0.0.0/24"]
87
+ i = 0
88
+ NetAddr.summ_IPv4Net(nets).each do |net|
89
+ assert_equal(expect[i],net.to_s)
90
+ i += 1
91
+ end
92
+ end
93
+
94
+ def test_sort_IPv6
95
+ ips = []
96
+ ["1::", "3::", "2::", "::", "::1"].each do |net|
97
+ ips.push(NetAddr::IPv6.parse(net))
98
+ end
99
+ sorted = NetAddr.sort_IPv6(ips)
100
+ expect = [ips[3],ips[4],ips[0],ips[2],ips[1]]
101
+ assert_equal(expect, sorted)
102
+ end
103
+
104
+ def test_sort_IPv6Net
105
+ nets = []
106
+ ["1::/64", "2::/64", "1::/16", "::", "::1"].each do |net|
107
+ nets.push(NetAddr::IPv6Net.parse(net))
108
+ end
109
+ sorted = NetAddr.sort_IPv6Net(nets)
110
+ expect = [nets[3],nets[4],nets[0],nets[2],nets[1]] # ::/128 ::1/128 1::/64 1::/16 2::/64
111
+ assert_equal(expect, sorted)
112
+ end
113
+
114
+ def test_summ_IPv6Net
115
+ nets = []
116
+ ["ff00::/13", "ff08::/14", "ff0c::/14", "ff10::/12", "ff20::/11", "ff40::/10", "ff80::/9"].each do |net|
117
+ nets.push(NetAddr::IPv6Net.parse(net))
118
+ end
119
+ expect = ["ff00::/8"]
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
+
126
+ nets = []
127
+ ["2::/32", "::1", "fec0::/16", "1::/16", "::/0"].each do |net|
128
+ nets.push(NetAddr::IPv6Net.parse(net))
129
+ end
130
+ expect = ["::/0"]
131
+ i = 0
132
+ NetAddr.summ_IPv6Net(nets).each do |net|
133
+ assert_equal(expect[i],net.to_s)
134
+ i += 1
135
+ end
136
+
137
+ nets = []
138
+ ["ff80::/9", "ff10::/12", "ff80::/10", "ff20::/12", "fff0::/16", "fff1::/16", "ff80::/10"].each do |net|
139
+ nets.push(NetAddr::IPv6Net.parse(net))
140
+ end
141
+ expect = ["ff10::/12", "ff20::/12", "ff80::/9", "fff0::/15"]
142
+ i = 0
143
+ NetAddr.summ_IPv6Net(nets).each do |net|
144
+ assert_equal(expect[i],net.to_s)
145
+ i += 1
146
+ end
147
+ end
148
+
149
+ 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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netaddr
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
4
+ version: 2.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dustin Spinhirne
@@ -16,27 +16,32 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files:
18
18
  - README.md
19
- - Errors
20
- - changelog
21
- - license
19
+ - LICENSE
22
20
  files:
23
- - Errors
21
+ - LICENSE
24
22
  - README.md
25
- - changelog
26
- - lib/cidr.rb
27
- - lib/cidr_shortcuts.rb
28
- - lib/eui.rb
29
- - lib/ip_math.rb
30
- - lib/methods.rb
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: {}
@@ -58,5 +63,5 @@ requirements: []
58
63
  rubygems_version: 3.3.5
59
64
  signing_key:
60
65
  specification_version: 4
61
- summary: A package for manipulating network addresses.
66
+ summary: A Ruby library for performing calculations on IPv4 and IPv6 subnets.
62
67
  test_files: []
data/Errors DELETED
@@ -1,7 +0,0 @@
1
- =Error Classes
2
-
3
- +-Exception
4
- +-StandardError
5
- +-BoundaryError => CIDR or EUI is out of bounds for a valid address
6
- +-ValidationError => CIDR or EUI failed validation checks
7
- +-VersionError => CIDR or EUI is of improper version for requested operation
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