construqt-ipaddress 0.8.2 → 0.8.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ipaddress.gemspec +2 -1
- data/lib/ipaddress/ipv6.rb +16 -10
- data/test/ipaddress/ipv6_test.rb +56 -35
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 09666181f499c798901477f5738ac611ccf0537b
|
4
|
+
data.tar.gz: dbfe66242c03ed3c997437111c258f3e90e587a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ac36fc4db7a36cb89397e2533a15eb061b488043fe30d47a1b47c12dbfc226ee2eede0ce97016a3653ed3956d2b4ae14b3dfa6749415c9d883e9ae78aff9f915
|
7
|
+
data.tar.gz: f1e505af7cb8e2ea958f4e79cbdc656e085e8af97efa366c78df9654b949a38032a478cae82a1f7c6ed6ec5250f7fdb8a28f4f0d51c865b0dde869a0dd67df1a
|
data/ipaddress.gemspec
CHANGED
@@ -5,8 +5,9 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{construqt-ipaddress}
|
8
|
-
s.version = "0.8.
|
8
|
+
s.version = "0.8.4"
|
9
9
|
|
10
|
+
s.license = "Simple from Marco Ceresa"
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
12
|
s.authors = ["Marco Ceresa", "Meno Abels"]
|
12
13
|
s.date = %q{2014-11-29}
|
data/lib/ipaddress/ipv6.rb
CHANGED
@@ -327,12 +327,9 @@ module IPAddress;
|
|
327
327
|
# #=> ["e.ip6.arpa", "f.ip6.arpa"]
|
328
328
|
#
|
329
329
|
def rev_domains
|
330
|
-
|
331
|
-
|
332
|
-
network.each_net do |net|
|
333
|
-
ret << net.reverse[(128-(net.prefix.to_i))/4*2..-1]
|
330
|
+
network.four_bit_networks.map do |net|
|
331
|
+
net.reverse[(128-(net.prefix.to_i))/4*2..-1]
|
334
332
|
end
|
335
|
-
ret
|
336
333
|
end
|
337
334
|
|
338
335
|
|
@@ -483,12 +480,21 @@ module IPAddress;
|
|
483
480
|
# WARNING: if the host portion is very large, this method
|
484
481
|
# can be very slow and possibly hang your system!
|
485
482
|
#
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
483
|
+
# There is a symantic problem i will now
|
484
|
+
# decide how network work in ipv6
|
485
|
+
def four_bit_networks
|
486
|
+
step = network_u128
|
487
|
+
next_four_bit_mask = ((@prefix.to_i+3)/4)*4
|
488
|
+
return [network] if next_four_bit_mask <= 0
|
489
|
+
step_four_bit_net = 1<<(128-next_four_bit_mask)
|
490
|
+
return [network] if step_four_bit_net == 0
|
491
|
+
ret = []
|
492
|
+
while step <= broadcast_u128
|
493
|
+
#puts "%s %x=>%x/%d"%[to_string, step,step_four_bit_net,next_four_bit_mask]
|
494
|
+
ret << self.class.parse_u128(step, next_four_bit_mask)
|
495
|
+
step += step_four_bit_net
|
491
496
|
end
|
497
|
+
ret
|
492
498
|
end
|
493
499
|
|
494
500
|
#
|
data/test/ipaddress/ipv6_test.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'test_helper'
|
2
|
-
|
2
|
+
|
3
3
|
class IPv6Test < Test::Unit::TestCase
|
4
|
-
|
4
|
+
|
5
5
|
def setup
|
6
6
|
@klass = IPAddress::IPv6
|
7
|
-
|
8
|
-
@compress_addr = {
|
7
|
+
|
8
|
+
@compress_addr = {
|
9
9
|
"2001:db8:0000:0000:0008:0800:200c:417a" => "2001:db8::8:800:200c:417a",
|
10
10
|
"2001:db8:0:0:8:800:200c:417a" => "2001:db8::8:800:200c:417a",
|
11
11
|
"ff01:0:0:0:0:0:0:101" => "ff01::101",
|
@@ -30,7 +30,7 @@ class IPv6Test < Test::Unit::TestCase
|
|
30
30
|
"::/0" => 0,
|
31
31
|
"1080:0:0:0:8:800:200C:417A" => 21932261930451111902915077091070067066,
|
32
32
|
"1080::8:800:200C:417A" => 21932261930451111902915077091070067066}
|
33
|
-
|
33
|
+
|
34
34
|
@invalid_ipv6 = [":1:2:3:4:5:6:7",
|
35
35
|
":1:2:3:4:5:6:7",
|
36
36
|
"2002:516:2:200",
|
@@ -40,13 +40,13 @@ class IPv6Test < Test::Unit::TestCase
|
|
40
40
|
"2001:db8:1:1:1:1:1:1/32" => "2001:db8::/32",
|
41
41
|
"2001:db8:1:1:1:1:1::/32" => "2001:db8::/32",
|
42
42
|
"2001:db8::1/64" => "2001:db8::/64"}
|
43
|
-
|
43
|
+
|
44
44
|
@ip = @klass.new "2001:db8::8:800:200c:417a/64"
|
45
45
|
@network = @klass.new "2001:db8:8:800::/64"
|
46
46
|
@arr = [8193,3512,0,0,8,2048,8204,16762]
|
47
47
|
@hex = "20010db80000000000080800200c417a"
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
def test_attribute_address
|
51
51
|
addr = "2001:0db8:0000:0000:0008:0800:200c:417a"
|
52
52
|
assert_equal addr, @ip.address
|
@@ -66,7 +66,7 @@ class IPv6Test < Test::Unit::TestCase
|
|
66
66
|
@klass.new "::10.1.1.1"
|
67
67
|
}
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
def test_attribute_groups
|
71
71
|
assert_equal @arr, @ip.groups
|
72
72
|
end
|
@@ -75,7 +75,7 @@ class IPv6Test < Test::Unit::TestCase
|
|
75
75
|
arr = "2001:0db8:0000:0000:0008:0800:200c:417a".split(":")
|
76
76
|
assert_equal arr, @ip.hexs
|
77
77
|
end
|
78
|
-
|
78
|
+
|
79
79
|
def test_method_to_i
|
80
80
|
@valid_ipv6.each do |ip,num|
|
81
81
|
assert_equal num, @klass.new(ip).to_i
|
@@ -84,7 +84,7 @@ class IPv6Test < Test::Unit::TestCase
|
|
84
84
|
|
85
85
|
def test_method_bits
|
86
86
|
bits = "0010000000000001000011011011100000000000000000000" +
|
87
|
-
"000000000000000000000000000100000001000000000000010000" +
|
87
|
+
"000000000000000000000000000100000001000000000000010000" +
|
88
88
|
"0000011000100000101111010"
|
89
89
|
assert_equal bits, @ip.bits
|
90
90
|
end
|
@@ -117,7 +117,7 @@ class IPv6Test < Test::Unit::TestCase
|
|
117
117
|
def test_method_ipv4?
|
118
118
|
assert_equal false, @ip.ipv4?
|
119
119
|
end
|
120
|
-
|
120
|
+
|
121
121
|
def test_method_ipv6?
|
122
122
|
assert_equal true, @ip.ipv6?
|
123
123
|
end
|
@@ -153,7 +153,7 @@ class IPv6Test < Test::Unit::TestCase
|
|
153
153
|
not_included = @klass.new "2001:db8::8:800:200c:417a/46"
|
154
154
|
assert_equal true, @ip.include?(included)
|
155
155
|
assert_equal false, @ip.include?(not_included)
|
156
|
-
# test address on same prefix
|
156
|
+
# test address on same prefix
|
157
157
|
included = @klass.new "2001:db8::8:800:200c:0/64"
|
158
158
|
not_included = @klass.new "2001:db8:1::8:800:200c:417a/64"
|
159
159
|
assert_equal true, @ip.include?(included)
|
@@ -164,11 +164,11 @@ class IPv6Test < Test::Unit::TestCase
|
|
164
164
|
assert_equal true, @ip.include?(included)
|
165
165
|
assert_equal false, @ip.include?(not_included)
|
166
166
|
end
|
167
|
-
|
167
|
+
|
168
168
|
def test_method_to_hex
|
169
169
|
assert_equal @hex, @ip.to_hex
|
170
170
|
end
|
171
|
-
|
171
|
+
|
172
172
|
def test_method_to_s
|
173
173
|
assert_equal "2001:db8::8:800:200c:417a", @ip.to_s
|
174
174
|
end
|
@@ -178,10 +178,10 @@ class IPv6Test < Test::Unit::TestCase
|
|
178
178
|
end
|
179
179
|
|
180
180
|
def test_method_to_string_uncompressed
|
181
|
-
str = "2001:0db8:0000:0000:0008:0800:200c:417a/64"
|
181
|
+
str = "2001:0db8:0000:0000:0008:0800:200c:417a/64"
|
182
182
|
assert_equal str, @ip.to_string_uncompressed
|
183
183
|
end
|
184
|
-
|
184
|
+
|
185
185
|
def test_method_data
|
186
186
|
if RUBY_VERSION < "2.0"
|
187
187
|
str = " \001\r\270\000\000\000\000\000\b\b\000 \fAz"
|
@@ -199,8 +199,16 @@ class IPv6Test < Test::Unit::TestCase
|
|
199
199
|
def test_method_rev_domains
|
200
200
|
assert_equal ["e.ip6.arpa", "f.ip6.arpa"], @klass.new("f000:f100::/3").rev_domains
|
201
201
|
assert_equal ["2.a.e.f.ip6.arpa", "3.a.e.f.ip6.arpa"], @klass.new("fea3:f120::/15").rev_domains
|
202
|
-
assert_equal ["
|
203
|
-
|
202
|
+
assert_equal ["f.0.0.0.0.8.f.2.3.0.a.3.ip6.arpa"], @klass.new("3a03:2f80:f::/48").rev_domains
|
203
|
+
|
204
|
+
assert_equal ["0.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa",
|
205
|
+
"1.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa",
|
206
|
+
"2.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa",
|
207
|
+
"3.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa",
|
208
|
+
"4.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa",
|
209
|
+
"5.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa",
|
210
|
+
"6.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa",
|
211
|
+
"7.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.f.0.0.0.f.ip6.arpa"],
|
204
212
|
@klass.new("f000:f100::1234/125").rev_domains
|
205
213
|
end
|
206
214
|
|
@@ -214,15 +222,15 @@ class IPv6Test < Test::Unit::TestCase
|
|
214
222
|
assert_equal "1::1", @klass.new("1:0:0:0:0:0:0:1").compressed
|
215
223
|
#assert_equal "1:1::1:2:0:0:1", @klass.new("1:1:0:1:2::1").compressed
|
216
224
|
end
|
217
|
-
|
225
|
+
|
218
226
|
def test_method_unspecified?
|
219
227
|
assert_equal true, @klass.new("::").unspecified?
|
220
|
-
assert_equal false, @ip.unspecified?
|
228
|
+
assert_equal false, @ip.unspecified?
|
221
229
|
end
|
222
|
-
|
230
|
+
|
223
231
|
def test_method_loopback?
|
224
232
|
assert_equal true, @klass.new("::1").loopback?
|
225
|
-
assert_equal false, @ip.loopback?
|
233
|
+
assert_equal false, @ip.loopback?
|
226
234
|
end
|
227
235
|
|
228
236
|
def test_method_network
|
@@ -244,11 +252,24 @@ class IPv6Test < Test::Unit::TestCase
|
|
244
252
|
end
|
245
253
|
|
246
254
|
def test_method_each_net
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
255
|
+
test_addrs = []
|
256
|
+
(0..15).each do |nibble|
|
257
|
+
test_addrs << (0..7).to_a.map{(0..3).to_a.map{"%x"%nibble}.join("")}.join(":")
|
258
|
+
end
|
259
|
+
(0..128).each do |prefix|
|
260
|
+
nr_networks = 1<<((128-prefix)%4)
|
261
|
+
test_addrs.each do |adr|
|
262
|
+
net_adr = @klass.new("#{adr}/#{prefix}")
|
263
|
+
ret = net_adr.four_bit_networks
|
264
|
+
assert_equal ret.first.prefix.to_i%4, 0
|
265
|
+
assert_equal ret.size, nr_networks
|
266
|
+
assert_equal net_adr.network_u128, ret.first.network_u128
|
267
|
+
assert_equal net_adr.broadcast_u128, ret.last.broadcast_u128
|
268
|
+
# puts "#{adr}/#{prefix} #{nr_networks} #{ret}"
|
269
|
+
end
|
270
|
+
end
|
271
|
+
assert_equal ["e000::/4","f000::/4"], @klass.new("fd01:db8::4/3").four_bit_networks.map{|i| i.to_string}
|
272
|
+
assert_equal ["3a03:2f80:f::/48"], @klass.new("3a03:2f80:f::/48").four_bit_networks.map{|i| i.to_string}
|
252
273
|
end
|
253
274
|
|
254
275
|
def test_method_compare
|
@@ -260,7 +281,7 @@ class IPv6Test < Test::Unit::TestCase
|
|
260
281
|
# ip2 should be greater than ip1
|
261
282
|
assert_equal true, ip2 > ip1
|
262
283
|
assert_equal false, ip1 > ip2
|
263
|
-
assert_equal false, ip2 < ip1
|
284
|
+
assert_equal false, ip2 < ip1
|
264
285
|
# ip3 should be less than ip2
|
265
286
|
assert_equal true, ip2 > ip3
|
266
287
|
assert_equal false, ip2 < ip3
|
@@ -287,7 +308,7 @@ class IPv6Test < Test::Unit::TestCase
|
|
287
308
|
assert_not_equal expanded, @klass.expand("2001:0db8::cd30")
|
288
309
|
assert_not_equal expanded, @klass.expand("2001:0db8::cd3")
|
289
310
|
end
|
290
|
-
|
311
|
+
|
291
312
|
def test_classmethod_compress
|
292
313
|
compressed = "2001:db8:0:cd30::"
|
293
314
|
expanded = "2001:0db8:0000:cd30:0000:0000:0000:0000"
|
@@ -318,7 +339,7 @@ class IPv6Test < Test::Unit::TestCase
|
|
318
339
|
end # class IPv6Test
|
319
340
|
|
320
341
|
class IPv6UnspecifiedTest < Test::Unit::TestCase
|
321
|
-
|
342
|
+
|
322
343
|
def setup
|
323
344
|
@klass = IPAddress::IPv6::Unspecified
|
324
345
|
@ip = @klass.new
|
@@ -347,12 +368,12 @@ class IPv6UnspecifiedTest < Test::Unit::TestCase
|
|
347
368
|
def test_method_ipv6?
|
348
369
|
assert_equal true, @ip.ipv6?
|
349
370
|
end
|
350
|
-
|
371
|
+
|
351
372
|
end # class IPv6UnspecifiedTest
|
352
373
|
|
353
374
|
|
354
375
|
class IPv6LoopbackTest < Test::Unit::TestCase
|
355
|
-
|
376
|
+
|
356
377
|
def setup
|
357
378
|
@klass = IPAddress::IPv6::Loopback
|
358
379
|
@ip = @klass.new
|
@@ -381,11 +402,11 @@ class IPv6LoopbackTest < Test::Unit::TestCase
|
|
381
402
|
def test_method_ipv6?
|
382
403
|
assert_equal true, @ip.ipv6?
|
383
404
|
end
|
384
|
-
|
405
|
+
|
385
406
|
end # class IPv6LoopbackTest
|
386
407
|
|
387
408
|
class IPv6MappedTest < Test::Unit::TestCase
|
388
|
-
|
409
|
+
|
389
410
|
def setup
|
390
411
|
@klass = IPAddress::IPv6::Mapped
|
391
412
|
@ip = @klass.new("::172.16.10.1")
|
@@ -444,5 +465,5 @@ class IPv6MappedTest < Test::Unit::TestCase
|
|
444
465
|
def test_mapped?
|
445
466
|
assert_equal true, @ip.mapped?
|
446
467
|
end
|
447
|
-
|
468
|
+
|
448
469
|
end # class IPv6MappedTest
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: construqt-ipaddress
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marco Ceresa
|
@@ -40,7 +40,8 @@ files:
|
|
40
40
|
- test/ipaddress_test.rb
|
41
41
|
- test/test_helper.rb
|
42
42
|
homepage: http://github.com/bluemonk/ipaddress
|
43
|
-
licenses:
|
43
|
+
licenses:
|
44
|
+
- Simple from Marco Ceresa
|
44
45
|
metadata: {}
|
45
46
|
post_install_message:
|
46
47
|
rdoc_options: []
|