netaddr 1.5.0 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -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