netaddr 1.5.3 → 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.
- 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
|