netaddr 1.5.0 → 2.0.4

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,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,148 @@
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
+ end
17
+
18
+ def test_ipv4_prefix_len
19
+ assert_equal(32,NetAddr.ipv4_prefix_len(1))
20
+ assert_equal(27,NetAddr.ipv4_prefix_len(30))
21
+ assert_equal(24,NetAddr.ipv4_prefix_len(254))
22
+ assert_equal(16,NetAddr.ipv4_prefix_len(0xfffe))
23
+ assert_equal(8,NetAddr.ipv4_prefix_len(0xfffffe))
24
+ assert_equal(0,NetAddr.ipv4_prefix_len(0xffffffff))
25
+ end
26
+
27
+ def test_sort_IPv4
28
+ ips = []
29
+ ["10.0.0.0","1.1.1.1","0.0.0.0","10.1.10.1"].each do |net|
30
+ ips.push(NetAddr::IPv4.parse(net))
31
+ end
32
+ sorted = NetAddr.sort_IPv4(ips)
33
+ expect = [ips[2],ips[1],ips[0],ips[3]]
34
+ assert_equal(expect, sorted)
35
+ end
36
+
37
+ def test_sort_IPv4Net
38
+ nets = []
39
+ ["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|
40
+ nets.push(NetAddr::IPv4Net.parse(net))
41
+ end
42
+ sorted = NetAddr.sort_IPv4Net(nets)
43
+ expect = [nets[1],nets[4],nets[0],nets[2],nets[3]]
44
+ assert_equal(expect, sorted)
45
+ end
46
+
47
+ def test_summ_IPv4Net
48
+ nets = []
49
+ ["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|
50
+ nets.push(NetAddr::IPv4Net.parse(net))
51
+ end
52
+ expect = ["10.0.0.0/24"]
53
+ i = 0
54
+ NetAddr.summ_IPv4Net(nets).each do |net|
55
+ assert_equal(expect[i],net.to_s)
56
+ i += 1
57
+ end
58
+
59
+ nets = []
60
+ ["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|
61
+ nets.push(NetAddr::IPv4Net.parse(net))
62
+ end
63
+ expect = ["0.0.0.0/0"]
64
+ i = 0
65
+ NetAddr.summ_IPv4Net(nets).each do |net|
66
+ assert_equal(expect[i],net.to_s)
67
+ i += 1
68
+ end
69
+
70
+ nets = []
71
+ ["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|
72
+ nets.push(NetAddr::IPv4Net.parse(net))
73
+ end
74
+ expect = ["10.0.0.16/28", "10.0.0.32/27", "10.0.0.128/25", "10.0.1.0/25"]
75
+ i = 0
76
+ NetAddr.summ_IPv4Net(nets).each do |net|
77
+ assert_equal(expect[i],net.to_s)
78
+ i += 1
79
+ end
80
+
81
+ nets = []
82
+ ["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
83
+ nets.push(NetAddr::IPv4Net.parse(net))
84
+ end
85
+ expect = ["10.0.0.0/24"]
86
+ i = 0
87
+ NetAddr.summ_IPv4Net(nets).each do |net|
88
+ assert_equal(expect[i],net.to_s)
89
+ i += 1
90
+ end
91
+ end
92
+
93
+ def test_sort_IPv6
94
+ ips = []
95
+ ["1::", "3::", "2::", "::", "::1"].each do |net|
96
+ ips.push(NetAddr::IPv6.parse(net))
97
+ end
98
+ sorted = NetAddr.sort_IPv6(ips)
99
+ expect = [ips[3],ips[4],ips[0],ips[2],ips[1]]
100
+ assert_equal(expect, sorted)
101
+ end
102
+
103
+ def test_sort_IPv6Net
104
+ nets = []
105
+ ["1::/64", "2::/64", "1::/16", "::", "::1"].each do |net|
106
+ nets.push(NetAddr::IPv6Net.parse(net))
107
+ end
108
+ sorted = NetAddr.sort_IPv6Net(nets)
109
+ expect = [nets[3],nets[4],nets[0],nets[2],nets[1]] # ::/128 ::1/128 1::/64 1::/16 2::/64
110
+ assert_equal(expect, sorted)
111
+ end
112
+
113
+ def test_summ_IPv6Net
114
+ nets = []
115
+ ["ff00::/13", "ff08::/14", "ff0c::/14", "ff10::/12", "ff20::/11", "ff40::/10", "ff80::/9"].each do |net|
116
+ nets.push(NetAddr::IPv6Net.parse(net))
117
+ end
118
+ expect = ["ff00::/8"]
119
+ i = 0
120
+ NetAddr.summ_IPv6Net(nets).each do |net|
121
+ assert_equal(expect[i],net.to_s)
122
+ i += 1
123
+ end
124
+
125
+ nets = []
126
+ ["2::/32", "::1", "fec0::/16", "1::/16", "::/0"].each do |net|
127
+ nets.push(NetAddr::IPv6Net.parse(net))
128
+ end
129
+ expect = ["::/0"]
130
+ i = 0
131
+ NetAddr.summ_IPv6Net(nets).each do |net|
132
+ assert_equal(expect[i],net.to_s)
133
+ i += 1
134
+ end
135
+
136
+ nets = []
137
+ ["ff80::/9", "ff10::/12", "ff80::/10", "ff20::/12", "fff0::/16", "fff1::/16", "ff80::/10"].each do |net|
138
+ nets.push(NetAddr::IPv6Net.parse(net))
139
+ end
140
+ expect = ["ff10::/12", "ff20::/12", "ff80::/9", "fff0::/15"]
141
+ i = 0
142
+ NetAddr.summ_IPv6Net(nets).each do |net|
143
+ assert_equal(expect[i],net.to_s)
144
+ i += 1
145
+ end
146
+ end
147
+
148
+ 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,68 +1,68 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: netaddr
3
- version: !ruby/object:Gem::Version
4
- version: 1.5.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.4
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Dustin Spinhirne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2008-11-07 00:00:00 -06:00
13
- default_executable:
11
+ date: 2019-10-03 00:00:00.000000000 Z
14
12
  dependencies: []
15
-
16
13
  description:
17
14
  email:
18
15
  executables: []
19
-
20
16
  extensions: []
21
-
22
- extra_rdoc_files:
23
- - README
24
- - Errors
25
- - changelog
26
- files:
27
- - lib/cidr_shortcuts.rb
28
- - lib/cidr.rb
29
- - lib/ip_math.rb
30
- - lib/validation_shortcuts.rb
31
- - lib/eui.rb
17
+ extra_rdoc_files:
18
+ - README.md
19
+ - LICENSE
20
+ files:
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
32
31
  - lib/netaddr.rb
33
- - lib/methods.rb
34
- - lib/tree.rb
35
- - README
36
- - Errors
37
- - changelog
38
- has_rdoc: true
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
45
+ licenses:
46
+ - Apache-2.0
47
+ metadata: {}
40
48
  post_install_message:
41
49
  rdoc_options: []
42
-
43
- require_paths:
50
+ require_paths:
44
51
  - lib
45
- required_ruby_version: !ruby/object:Gem::Requirement
46
- requirements:
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
47
54
  - - ">="
48
- - !ruby/object:Gem::Version
49
- version: "0"
50
- version:
51
- required_rubygems_version: !ruby/object:Gem::Requirement
52
- requirements:
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
53
59
  - - ">="
54
- - !ruby/object:Gem::Version
55
- version: "0"
56
- version:
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
57
62
  requirements: []
58
-
59
63
  rubyforge_project:
60
- rubygems_version: 1.2.0
64
+ rubygems_version: 2.7.6.2
61
65
  signing_key:
62
- specification_version: 2
63
- summary: A package for manipulating network addresses.
64
- test_files:
65
- - tests/tree_test.rb
66
- - tests/methods_test.rb
67
- - tests/cidr_test.rb
68
- - tests/eui_test.rb
66
+ specification_version: 4
67
+ summary: A Ruby library for performing calculations on IPv4 and IPv6 subnets.
68
+ 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/README DELETED
@@ -1,17 +0,0 @@
1
- =Introduction
2
-
3
- NetAddr arose through my need as a network engineer for a
4
- back-end module that could easily handle such advanced tasks
5
- as automating the subnetting/supernetting
6
- of IP space, performing calculations on IP CIDR blocks, and other
7
- various items. At that time there were no modules that could
8
- do any of the things that I needed, so I set out to create my own.
9
- Since it has proven to be fairly useful to me, I have decided to share the
10
- code with the Ruby community.
11
-
12
- I have added things that I find immediately useful for me. I am
13
- open to suggestions if there is something that I could add to make
14
- your life easier.
15
-
16
- Dustin Spinhirne
17
-
data/changelog DELETED
@@ -1,51 +0,0 @@
1
- ==Version
2
- ====1.5.0
3
-
4
- ===Changes
5
- * fixed bug with EUI48#to_eui64 (credit to Erik Kline)
6
- * fixed bug with u/l bit toggle on EUI#link_local (credit to Erik Kline)
7
- * added EUI#to_ipv6
8
- * added NetAddr#supernets
9
-
10
-
11
- ==Version
12
- ====1.4.0
13
-
14
- ===Changes
15
- * Added additional options to NetAddr#sort
16
-
17
-
18
- ==Version
19
- ====1.3.0
20
-
21
- ===New Features
22
- * added CIDR#[]
23
- * added CIDR#succ (CIDR objects may now be used as args for the standard Ruby Range class)
24
- * added CIDR#allocate_rfc3531
25
- * added CIDR#to_i
26
- * added CIDRv6.unique_local
27
- * added EUI48#to_eui64
28
- * added EUI#to_i
29
- * added EUI#to_s
30
-
31
- ===Changes
32
- * deprecated 'packed' methods
33
-
34
-
35
- ==Version
36
- ====1.2.0
37
-
38
- ===Changes
39
- * CIDRv4#new and CIDRv6#new methods have been changed for the sake of speed improvements.
40
- Please use the CIDR#create method instead.
41
- * changes to CIDR#wildcard_mask
42
- * bug fix with validate_eui method
43
- * bug fix with validate_ip_addr
44
- * bug fix and *vast* simplification of NetAddr.merge
45
-
46
-
47
- ===New Features
48
- * speed improvements
49
- * added CIDR#set_wildcard_mask
50
- * added <=>, >, <, == methods to CIDR
51
- * NetAddr.merge now reports which CIDR addresses were used to create new summary addresses