ipaddr 1.2.8 → 1.2.9
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.
- checksums.yaml +4 -4
- data/lib/ipaddr.rb +17 -13
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3d7f44f2a3874755d2b38a4cf417bc3b86f1298a92a47ce0df1c6da780982f10
|
|
4
|
+
data.tar.gz: d7b75a507f7345cfdb5fa1e7141748031b102e843982a5d627fb3d2f9ff9c302
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 34b061ae03573b58b00b867655c94edb42970eccf6297ac29915fb5e9cec430479eadb0cae90c9857b395ed9d220cd9eaa596a791f0225237113ab010b6dcba4
|
|
7
|
+
data.tar.gz: 7347ead0e35fa0bad997db445806eda0bdc6d8ddcffba1b8ff6d8d36f3c3febfa429e59bf36a0b5381690c3881163b070b858dc92cea1d8eca887657a4085f96
|
data/lib/ipaddr.rb
CHANGED
|
@@ -41,7 +41,7 @@ require 'socket'
|
|
|
41
41
|
|
|
42
42
|
class IPAddr
|
|
43
43
|
# The version string
|
|
44
|
-
VERSION = "1.2.
|
|
44
|
+
VERSION = "1.2.9"
|
|
45
45
|
|
|
46
46
|
# 32 bit mask for IPv4
|
|
47
47
|
IN4MASK = 0xffffffff
|
|
@@ -164,6 +164,10 @@ class IPAddr
|
|
|
164
164
|
|
|
165
165
|
# Returns true if two ipaddrs are equal.
|
|
166
166
|
def ==(other)
|
|
167
|
+
if other.nil?
|
|
168
|
+
return false
|
|
169
|
+
end
|
|
170
|
+
|
|
167
171
|
other = coerce_other(other)
|
|
168
172
|
rescue
|
|
169
173
|
false
|
|
@@ -293,7 +297,7 @@ class IPAddr
|
|
|
293
297
|
@addr & 0xff000000 == 0x7f000000 # 127.0.0.1/8
|
|
294
298
|
when Socket::AF_INET6
|
|
295
299
|
@addr == 1 || # ::1
|
|
296
|
-
(@addr
|
|
300
|
+
(@addr >> 32 == 0xffff && (
|
|
297
301
|
@addr & 0xff000000 == 0x7f000000 # ::ffff:127.0.0.1/8
|
|
298
302
|
))
|
|
299
303
|
else
|
|
@@ -314,10 +318,10 @@ class IPAddr
|
|
|
314
318
|
@addr & 0xffff0000 == 0xc0a80000 # 192.168.0.0/16
|
|
315
319
|
when Socket::AF_INET6
|
|
316
320
|
@addr & 0xfe00_0000_0000_0000_0000_0000_0000_0000 == 0xfc00_0000_0000_0000_0000_0000_0000_0000 ||
|
|
317
|
-
(@addr
|
|
321
|
+
(@addr >> 32 == 0xffff && (
|
|
318
322
|
@addr & 0xff000000 == 0x0a000000 || # ::ffff:10.0.0.0/8
|
|
319
|
-
@addr & 0xfff00000 == 0xac100000 || # ::ffff
|
|
320
|
-
@addr & 0xffff0000 == 0xc0a80000 # ::ffff
|
|
323
|
+
@addr & 0xfff00000 == 0xac100000 || # ::ffff:172.16.0.0/12
|
|
324
|
+
@addr & 0xffff0000 == 0xc0a80000 # ::ffff:192.168.0.0/16
|
|
321
325
|
))
|
|
322
326
|
else
|
|
323
327
|
raise AddressFamilyError, "unsupported address family"
|
|
@@ -335,7 +339,7 @@ class IPAddr
|
|
|
335
339
|
@addr & 0xffff0000 == 0xa9fe0000 # 169.254.0.0/16
|
|
336
340
|
when Socket::AF_INET6
|
|
337
341
|
@addr & 0xffc0_0000_0000_0000_0000_0000_0000_0000 == 0xfe80_0000_0000_0000_0000_0000_0000_0000 || # fe80::/10
|
|
338
|
-
(@addr
|
|
342
|
+
(@addr >> 32 == 0xffff && (
|
|
339
343
|
@addr & 0xffff0000 == 0xa9fe0000 # ::ffff:169.254.0.0/16
|
|
340
344
|
))
|
|
341
345
|
else
|
|
@@ -368,7 +372,7 @@ class IPAddr
|
|
|
368
372
|
# into an IPv4-mapped IPv6 address.
|
|
369
373
|
def ipv4_mapped
|
|
370
374
|
if !ipv4?
|
|
371
|
-
raise InvalidAddressError, "not an IPv4 address: #{
|
|
375
|
+
raise InvalidAddressError, "not an IPv4 address: #{to_s}"
|
|
372
376
|
end
|
|
373
377
|
clone = self.clone.set(@addr | 0xffff00000000, Socket::AF_INET6)
|
|
374
378
|
clone.instance_variable_set(:@mask_addr, @mask_addr | 0xffffffffffffffffffffffff00000000)
|
|
@@ -380,7 +384,7 @@ class IPAddr
|
|
|
380
384
|
def ipv4_compat
|
|
381
385
|
warn "IPAddr\##{__callee__} is obsolete", uplevel: 1 if $VERBOSE
|
|
382
386
|
if !ipv4?
|
|
383
|
-
raise InvalidAddressError, "not an IPv4 address: #{
|
|
387
|
+
raise InvalidAddressError, "not an IPv4 address: #{to_s}"
|
|
384
388
|
end
|
|
385
389
|
clone = self.clone.set(@addr, Socket::AF_INET6)
|
|
386
390
|
clone.instance_variable_set(:@mask_addr, @mask_addr | 0xffffffffffffffffffffffff00000000)
|
|
@@ -413,7 +417,7 @@ class IPAddr
|
|
|
413
417
|
# Returns a string for DNS reverse lookup compatible with RFC3172.
|
|
414
418
|
def ip6_arpa
|
|
415
419
|
if !ipv6?
|
|
416
|
-
raise InvalidAddressError, "not an IPv6 address: #{
|
|
420
|
+
raise InvalidAddressError, "not an IPv6 address: #{to_s}"
|
|
417
421
|
end
|
|
418
422
|
return _reverse + ".ip6.arpa"
|
|
419
423
|
end
|
|
@@ -421,7 +425,7 @@ class IPAddr
|
|
|
421
425
|
# Returns a string for DNS reverse lookup compatible with RFC1886.
|
|
422
426
|
def ip6_int
|
|
423
427
|
if !ipv6?
|
|
424
|
-
raise InvalidAddressError, "not an IPv6 address: #{
|
|
428
|
+
raise InvalidAddressError, "not an IPv6 address: #{to_s}"
|
|
425
429
|
end
|
|
426
430
|
return _reverse + ".ip6.int"
|
|
427
431
|
end
|
|
@@ -743,19 +747,19 @@ class IPAddr
|
|
|
743
747
|
right = ''
|
|
744
748
|
when RE_IPV6ADDRLIKE_COMPRESSED
|
|
745
749
|
if $4
|
|
746
|
-
left.count(':') <= 6 or raise InvalidAddressError, "invalid address: #{
|
|
750
|
+
left.count(':') <= 6 or raise InvalidAddressError, "invalid address: #{left}"
|
|
747
751
|
addr = in_addr($~[4,4])
|
|
748
752
|
left = $1
|
|
749
753
|
right = $3 + '0:0'
|
|
750
754
|
else
|
|
751
755
|
left.count(':') <= ($1.empty? || $2.empty? ? 8 : 7) or
|
|
752
|
-
raise InvalidAddressError, "invalid address: #{
|
|
756
|
+
raise InvalidAddressError, "invalid address: #{left}"
|
|
753
757
|
left = $1
|
|
754
758
|
right = $2
|
|
755
759
|
addr = 0
|
|
756
760
|
end
|
|
757
761
|
else
|
|
758
|
-
raise InvalidAddressError, "invalid address: #{
|
|
762
|
+
raise InvalidAddressError, "invalid address: #{left}"
|
|
759
763
|
end
|
|
760
764
|
l = left.split(':')
|
|
761
765
|
r = right.split(':')
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ipaddr
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Akinori MUSHA
|
|
@@ -42,7 +42,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
42
42
|
- !ruby/object:Gem::Version
|
|
43
43
|
version: '0'
|
|
44
44
|
requirements: []
|
|
45
|
-
rubygems_version:
|
|
45
|
+
rubygems_version: 4.0.6
|
|
46
46
|
specification_version: 4
|
|
47
47
|
summary: A class to manipulate an IP address in ruby
|
|
48
48
|
test_files: []
|