netaddr 1.2.0 → 1.3.0
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.
- data/changelog +14 -6
- data/lib/cidr.rb +497 -225
- data/lib/cidr_shortcuts.rb +21 -21
- data/lib/eui.rb +162 -133
- data/lib/ip_math.rb +45 -27
- data/lib/methods.rb +187 -178
- data/lib/{net_addr.rb → netaddr.rb} +3 -1
- data/lib/tree.rb +87 -52
- data/lib/validation_shortcuts.rb +10 -10
- data/tests/cidr_test.rb +253 -167
- data/tests/eui_test.rb +39 -25
- data/tests/methods_test.rb +100 -118
- data/tests/tree_test.rb +99 -56
- metadata +12 -12
data/tests/tree_test.rb
CHANGED
@@ -9,16 +9,16 @@ class TestTree < Test::Unit::TestCase
|
|
9
9
|
|
10
10
|
def test_add
|
11
11
|
tree = NetAddr::Tree.new()
|
12
|
-
|
12
|
+
|
13
13
|
assert_nothing_raised(RuntimeError){tree.add!('192.168.1.0 255.255.255.0')}
|
14
14
|
assert_nothing_raised(RuntimeError){tree.add!('10.1.0.0/24')}
|
15
15
|
assert_nothing_raised(RuntimeError){tree.add!('10.1.0.0')}
|
16
16
|
assert_nothing_raised(RuntimeError){tree.add!('192.168.1.0/26')}
|
17
17
|
assert_nothing_raised(RuntimeError){tree.add!('fec0::/10')}
|
18
18
|
assert_nothing_raised(RuntimeError){tree.add!('fec0::/64')}
|
19
|
-
|
19
|
+
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def test_ancestors
|
23
23
|
tree = NetAddr::Tree.new()
|
24
24
|
|
@@ -27,14 +27,14 @@ class TestTree < Test::Unit::TestCase
|
|
27
27
|
tree.add!('192.168.1.64/27')
|
28
28
|
tree.add!('192.168.1.64/28')
|
29
29
|
tree.add!('192.168.2.0/24')
|
30
|
-
|
31
|
-
ancestors = tree.ancestors('192.168.1.64/28')
|
30
|
+
|
31
|
+
ancestors = tree.ancestors('192.168.1.64/28')
|
32
32
|
assert_equal('192.168.1.64/27', ancestors[0].desc)
|
33
33
|
assert_equal('192.168.1.64/26', ancestors[1].desc)
|
34
34
|
assert_equal('192.168.1.0/24', ancestors[2].desc)
|
35
|
-
|
35
|
+
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
def test_children
|
39
39
|
tree = NetAddr::Tree.new()
|
40
40
|
|
@@ -44,12 +44,12 @@ class TestTree < Test::Unit::TestCase
|
|
44
44
|
tree.add!('192.168.1.96/27')
|
45
45
|
tree.add!('192.168.1.64/28')
|
46
46
|
tree.add!('192.168.2.0/24')
|
47
|
-
|
47
|
+
|
48
48
|
children = tree.children('192.168.1.64/26')
|
49
49
|
assert_equal('192.168.1.64/27', children[0].desc)
|
50
50
|
assert_equal('192.168.1.96/27', children[1].desc)
|
51
|
-
end
|
52
|
-
|
51
|
+
end
|
52
|
+
|
53
53
|
def test_delete
|
54
54
|
tree = NetAddr::Tree.new()
|
55
55
|
|
@@ -58,11 +58,11 @@ class TestTree < Test::Unit::TestCase
|
|
58
58
|
tree.add!('192.168.1.64/27')
|
59
59
|
tree.add!('192.168.1.64/28')
|
60
60
|
tree.add!('192.168.2.0/24')
|
61
|
-
|
62
|
-
tree.delete!('192.168.1.64/27')
|
61
|
+
|
62
|
+
tree.delete!('192.168.1.64/27')
|
63
63
|
assert_equal('192.168.1.64/28', tree.children('192.168.1.64/26')[0].desc)
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
def test_descendants
|
67
67
|
tree = NetAddr::Tree.new()
|
68
68
|
|
@@ -72,13 +72,13 @@ class TestTree < Test::Unit::TestCase
|
|
72
72
|
tree.add!('192.168.1.96/27')
|
73
73
|
tree.add!('192.168.1.64/28')
|
74
74
|
tree.add!('192.168.2.0/24')
|
75
|
-
|
75
|
+
|
76
76
|
descendants = tree.descendants('192.168.1.64/26')
|
77
|
-
assert_equal('192.168.1.64/27', descendants[0].desc)
|
77
|
+
assert_equal('192.168.1.64/27', descendants[0].desc)
|
78
78
|
assert_equal('192.168.1.64/28', descendants[1].desc)
|
79
79
|
assert_equal('192.168.1.96/27', descendants[2].desc)
|
80
|
-
end
|
81
|
-
|
80
|
+
end
|
81
|
+
|
82
82
|
def test_dump
|
83
83
|
tree = NetAddr::Tree.new()
|
84
84
|
|
@@ -90,25 +90,25 @@ class TestTree < Test::Unit::TestCase
|
|
90
90
|
tree.add!('fe80::/10')
|
91
91
|
tree.add!('fec0::/64')
|
92
92
|
tree.add!('fec0::/126')
|
93
|
-
|
93
|
+
|
94
94
|
dump = tree.dump()
|
95
|
-
|
95
|
+
|
96
96
|
obj0 = dump[0][:CIDR]
|
97
97
|
obj1 = dump[1][:CIDR]
|
98
|
-
obj3 = dump[3][:CIDR]
|
98
|
+
obj3 = dump[3][:CIDR]
|
99
99
|
assert_equal('10.1.0.0/24', obj0.desc)
|
100
100
|
assert_equal('192.168.1.0/24', obj1.desc)
|
101
101
|
assert_equal('192.168.1.0/30', obj3.desc)
|
102
|
-
|
102
|
+
|
103
103
|
obj4 = dump[4][:CIDR]
|
104
104
|
obj5 = dump[5][:CIDR]
|
105
105
|
obj7 = dump[7][:CIDR]
|
106
106
|
assert_equal('fe80:0000:0000:0000:0000:0000:0000:0000/10', obj4.desc)
|
107
107
|
assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/10', obj5.desc)
|
108
108
|
assert_equal('fec0:0000:0000:0000:0000:0000:0000:0000/126', obj7.desc)
|
109
|
-
|
109
|
+
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
112
|
def test_exists
|
113
113
|
|
114
114
|
tree = NetAddr::Tree.new()
|
@@ -117,27 +117,27 @@ class TestTree < Test::Unit::TestCase
|
|
117
117
|
tree.add!('10.1.0.0/24')
|
118
118
|
tree.add!('192.168.1.64/26')
|
119
119
|
tree.add!('10.1.0.44/30')
|
120
|
-
|
120
|
+
|
121
121
|
assert_equal(true, tree.exists?('192.168.1.0/24'))
|
122
122
|
assert_equal(true, tree.exists?('10.1.0.44/30'))
|
123
|
-
assert_equal(false, tree.exists?('10.2.0.0/24'))
|
124
|
-
|
123
|
+
assert_equal(false, tree.exists?('10.2.0.0/24'))
|
124
|
+
|
125
125
|
end
|
126
|
-
|
126
|
+
|
127
127
|
def test_fill_in
|
128
128
|
tree = NetAddr::Tree.new()
|
129
129
|
|
130
130
|
tree.add!('192.168.1.0/24')
|
131
131
|
tree.add!('192.168.1.64/26')
|
132
|
-
|
132
|
+
|
133
133
|
tree.fill_in!('192.168.1.0/24')
|
134
134
|
children = tree.children('192.168.1.0/24')
|
135
|
-
|
135
|
+
|
136
136
|
assert_equal('192.168.1.0/26', children[0].desc)
|
137
137
|
assert_equal('192.168.1.64/26', children[1].desc)
|
138
138
|
assert_equal('192.168.1.128/25', children[2].desc)
|
139
139
|
end
|
140
|
-
|
140
|
+
|
141
141
|
def test_find
|
142
142
|
tree = NetAddr::Tree.new()
|
143
143
|
|
@@ -148,7 +148,7 @@ class TestTree < Test::Unit::TestCase
|
|
148
148
|
assert_equal('192.168.1.64/26', tree.longest_match('192.168.1.64/26').desc)
|
149
149
|
assert_equal('10.1.0.44/30', tree.longest_match('10.1.0.44/30').desc)
|
150
150
|
end
|
151
|
-
|
151
|
+
|
152
152
|
def test_find_space
|
153
153
|
tree = NetAddr::Tree.new()
|
154
154
|
|
@@ -165,7 +165,7 @@ class TestTree < Test::Unit::TestCase
|
|
165
165
|
cidr.each {|x| tree.add!(x)}
|
166
166
|
assert_equal(10, tree.find_space(:IPCount => 16).length)
|
167
167
|
end
|
168
|
-
|
168
|
+
|
169
169
|
def test_longest_match
|
170
170
|
|
171
171
|
tree = NetAddr::Tree.new()
|
@@ -174,13 +174,13 @@ class TestTree < Test::Unit::TestCase
|
|
174
174
|
tree.add!('10.1.0.0/24')
|
175
175
|
tree.add!('192.168.1.64/26')
|
176
176
|
tree.add!('10.1.0.44/30')
|
177
|
-
|
177
|
+
|
178
178
|
assert_equal('192.168.1.64/26', tree.longest_match('192.168.1.65').desc)
|
179
179
|
assert_equal('10.1.0.44/30', tree.longest_match('10.1.0.46').desc)
|
180
180
|
assert_equal('0.0.0.0/0', tree.longest_match('192.168.2.0').desc )
|
181
|
-
|
181
|
+
|
182
182
|
end
|
183
|
-
|
183
|
+
|
184
184
|
def test_merge_subnets
|
185
185
|
tree = NetAddr::Tree.new()
|
186
186
|
|
@@ -188,14 +188,14 @@ class TestTree < Test::Unit::TestCase
|
|
188
188
|
tree.add!('192.168.1.0/26')
|
189
189
|
tree.add!('192.168.1.64/26')
|
190
190
|
tree.add!('192.168.1.192/26')
|
191
|
-
|
191
|
+
|
192
192
|
tree.merge_subnets!('192.168.1.0/24')
|
193
193
|
children = tree.children('192.168.1.0/24')
|
194
|
-
|
194
|
+
|
195
195
|
assert_equal('192.168.1.0/25', children[0].desc)
|
196
196
|
assert_equal('192.168.1.192/26', children[1].desc)
|
197
197
|
end
|
198
|
-
|
198
|
+
|
199
199
|
def test_prune
|
200
200
|
cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
|
201
201
|
cidr4_2 = NetAddr::CIDR.create('10.1.0.0/24')
|
@@ -206,7 +206,7 @@ class TestTree < Test::Unit::TestCase
|
|
206
206
|
cidr4_7 = NetAddr::CIDR.create('192.168.1.192/26')
|
207
207
|
|
208
208
|
tree4 = NetAddr::Tree.new()
|
209
|
-
|
209
|
+
|
210
210
|
tree4.add!(cidr4_1)
|
211
211
|
tree4.add!(cidr4_2)
|
212
212
|
tree4.add!(cidr4_3)
|
@@ -214,16 +214,16 @@ class TestTree < Test::Unit::TestCase
|
|
214
214
|
tree4.add!(cidr4_5)
|
215
215
|
tree4.add!(cidr4_6)
|
216
216
|
tree4.add!(cidr4_7)
|
217
|
-
|
217
|
+
|
218
218
|
tree4.prune!(cidr4_5)
|
219
|
-
dump = tree4.dump
|
219
|
+
dump = tree4.dump
|
220
220
|
assert_equal(7, dump.length)
|
221
|
-
|
221
|
+
|
222
222
|
tree4.prune!(cidr4_1)
|
223
223
|
dump = tree4.dump
|
224
224
|
assert_equal(2, dump.length)
|
225
225
|
end
|
226
|
-
|
226
|
+
|
227
227
|
def test_remove
|
228
228
|
cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
|
229
229
|
cidr4_2 = NetAddr::CIDR.create('10.1.0.0/24')
|
@@ -234,7 +234,7 @@ class TestTree < Test::Unit::TestCase
|
|
234
234
|
cidr4_7 = NetAddr::CIDR.create('192.168.1.192/26')
|
235
235
|
|
236
236
|
tree4 = NetAddr::Tree.new()
|
237
|
-
|
237
|
+
|
238
238
|
tree4.add!(cidr4_1)
|
239
239
|
tree4.add!(cidr4_2)
|
240
240
|
tree4.add!(cidr4_3)
|
@@ -242,16 +242,16 @@ class TestTree < Test::Unit::TestCase
|
|
242
242
|
tree4.add!(cidr4_5)
|
243
243
|
tree4.add!(cidr4_6)
|
244
244
|
tree4.add!(cidr4_7)
|
245
|
-
|
245
|
+
|
246
246
|
tree4.remove!(cidr4_5)
|
247
|
-
dump = tree4.dump
|
247
|
+
dump = tree4.dump
|
248
248
|
assert_equal(6, dump.length)
|
249
|
-
|
249
|
+
|
250
250
|
tree4.remove!(cidr4_1)
|
251
|
-
dump = tree4.dump
|
251
|
+
dump = tree4.dump
|
252
252
|
assert_equal(1, dump.length)
|
253
253
|
end
|
254
|
-
|
254
|
+
|
255
255
|
def test_root
|
256
256
|
tree = NetAddr::Tree.new()
|
257
257
|
|
@@ -259,10 +259,10 @@ class TestTree < Test::Unit::TestCase
|
|
259
259
|
tree.add!('192.168.1.64/26')
|
260
260
|
tree.add!('192.168.1.64/27')
|
261
261
|
tree.add!('192.168.2.0/24')
|
262
|
-
|
262
|
+
|
263
263
|
assert_equal('192.168.1.0/24', tree.root('192.168.1.64/27').desc)
|
264
264
|
end
|
265
|
-
|
265
|
+
|
266
266
|
def test_show
|
267
267
|
cidr4_1 = NetAddr::CIDR.create('192.168.1.0/24')
|
268
268
|
cidr4_2 = NetAddr::CIDR.create('10.1.0.0/24')
|
@@ -273,7 +273,7 @@ class TestTree < Test::Unit::TestCase
|
|
273
273
|
cidr4_7 = NetAddr::CIDR.create('192.168.1.192/26')
|
274
274
|
|
275
275
|
tree4 = NetAddr::Tree.new()
|
276
|
-
|
276
|
+
|
277
277
|
tree4.add!(cidr4_1)
|
278
278
|
tree4.add!(cidr4_2)
|
279
279
|
tree4.add!(cidr4_3)
|
@@ -281,10 +281,10 @@ class TestTree < Test::Unit::TestCase
|
|
281
281
|
tree4.add!(cidr4_5)
|
282
282
|
tree4.add!(cidr4_6)
|
283
283
|
tree4.add!(cidr4_7)
|
284
|
-
|
284
|
+
|
285
285
|
assert_not_nil(tree4.show())
|
286
286
|
end
|
287
|
-
|
287
|
+
|
288
288
|
def test_siblings
|
289
289
|
tree = NetAddr::Tree.new()
|
290
290
|
|
@@ -293,10 +293,53 @@ class TestTree < Test::Unit::TestCase
|
|
293
293
|
tree.add!('192.168.1.64/26')
|
294
294
|
tree.add!('192.168.1.128/26')
|
295
295
|
tree.add!('192.168.1.192/26')
|
296
|
-
|
296
|
+
|
297
297
|
assert_equal(3, tree.siblings('192.168.1.0/26').length)
|
298
298
|
end
|
299
|
-
|
299
|
+
|
300
|
+
def test_interactions
|
301
|
+
show1 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.8/29\n 192.168.12.8/30\n"
|
302
|
+
show2 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.8/29\n 192.168.12.8/30\n 192.168.12.12/30\n"
|
303
|
+
show3 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/29\n 192.168.12.8/29\n 192.168.12.8/30\n" +
|
304
|
+
" 192.168.12.12/30\n 192.168.12.16/28\n 192.168.12.32/27\n"
|
305
|
+
show4 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/29\n 192.168.12.8/30\n 192.168.12.12/30\n" +
|
306
|
+
" 192.168.12.16/28\n 192.168.12.32/27\n"
|
307
|
+
show5 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/28\n 192.168.12.0/29\n" +
|
308
|
+
" 192.168.12.8/29\n 192.168.12.8/30\n 192.168.12.12/30\n 192.168.12.16/28\n 192.168.12.32/27\n"
|
309
|
+
show6 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.0/28\n 192.168.12.0/29\n" +
|
310
|
+
" 192.168.12.8/29\n 192.168.12.16/28\n 192.168.12.32/27\n"
|
311
|
+
show7 = "IPv4 Tree\n---------\n192.168.12.0/26\n 192.168.12.16/28\n 192.168.12.32/27\n"
|
312
|
+
show8 = "IPv4 Tree\n---------\n192.168.12.0/24\n 192.168.12.16/28\n 192.168.12.32/27\n 192.168.12.64/26\n"
|
313
|
+
show9 = "IPv4 Tree\n---------\n192.168.12.0/24\n 192.168.12.0/25\n 192.168.12.0/26\n" +
|
314
|
+
" 192.168.12.16/28\n 192.168.12.32/27\n 192.168.12.64/26\n"
|
315
|
+
|
316
|
+
tree = NetAddr::Tree.new
|
317
|
+
tree.add!('192.168.12.0/26')
|
318
|
+
tree.add!('192.168.12.8/29')
|
319
|
+
tree.add!('192.168.12.8/30')
|
320
|
+
assert_equal(show1, tree.show)
|
321
|
+
tree.fill_in! '192.168.12.8/29'
|
322
|
+
assert_equal(show2, tree.show)
|
323
|
+
tree.fill_in! '192.168.12.0/26'
|
324
|
+
assert_equal(show3, tree.show)
|
325
|
+
tree.delete!('192.168.12.8/29')
|
326
|
+
assert_equal(show4, tree.show)
|
327
|
+
tree.add!('192.168.12.8/29')
|
328
|
+
tree.add!('192.168.12.0/28')
|
329
|
+
tree.add!('192.168.12.0/29')
|
330
|
+
assert_equal(show5, tree.show)
|
331
|
+
tree.prune!('192.168.12.8/29')
|
332
|
+
assert_equal(show6, tree.show)
|
333
|
+
tree.remove!('192.168.12.0/28')
|
334
|
+
assert_equal(show7, tree.show)
|
335
|
+
tree.add!('192.168.12.64/26')
|
336
|
+
tree.resize!('192.168.12.0/26', 24)
|
337
|
+
assert_equal(show8, tree.show)
|
338
|
+
tree.add!('192.168.12.0/26')
|
339
|
+
tree.summarize_subnets!('192.168.12.0/24')
|
340
|
+
assert_equal(show9, tree.show)
|
341
|
+
end
|
342
|
+
|
300
343
|
end
|
301
344
|
|
302
345
|
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: netaddr
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.3.0
|
7
|
+
date: 2007-07-10 00:00:00 -05:00
|
8
8
|
summary: A package for manipulating network addresses.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
11
|
-
email:
|
11
|
+
email:
|
12
12
|
homepage:
|
13
13
|
rubyforge_project:
|
14
14
|
description:
|
15
|
-
autorequire:
|
15
|
+
autorequire:
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|
18
18
|
has_rdoc: true
|
@@ -29,21 +29,21 @@ post_install_message:
|
|
29
29
|
authors:
|
30
30
|
- Dustin Spinhirne
|
31
31
|
files:
|
32
|
-
- lib/
|
32
|
+
- lib/cidr_shortcuts.rb
|
33
33
|
- lib/cidr.rb
|
34
|
+
- lib/ip_math.rb
|
34
35
|
- lib/eui.rb
|
35
|
-
- lib/
|
36
|
-
- lib/tree.rb
|
36
|
+
- lib/methods.rb
|
37
37
|
- lib/validation_shortcuts.rb
|
38
|
-
- lib/
|
39
|
-
- lib/
|
38
|
+
- lib/netaddr.rb
|
39
|
+
- lib/tree.rb
|
40
40
|
- README
|
41
41
|
- Errors
|
42
42
|
- changelog
|
43
43
|
test_files:
|
44
|
-
- tests/cidr_test.rb
|
45
|
-
- tests/methods_test.rb
|
46
44
|
- tests/eui_test.rb
|
45
|
+
- tests/methods_test.rb
|
46
|
+
- tests/cidr_test.rb
|
47
47
|
- tests/tree_test.rb
|
48
48
|
rdoc_options: []
|
49
49
|
|