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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ipaddr.rb +17 -13
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 27c05756ec16e7913ff99aab584bbcddab9e5ef419e5f5fb17850a846c8e562d
4
- data.tar.gz: 6845f685c7cfcee252d97e6e74f597991ba7586fc7104242e64ccad5abe9acfc
3
+ metadata.gz: 3d7f44f2a3874755d2b38a4cf417bc3b86f1298a92a47ce0df1c6da780982f10
4
+ data.tar.gz: d7b75a507f7345cfdb5fa1e7141748031b102e843982a5d627fb3d2f9ff9c302
5
5
  SHA512:
6
- metadata.gz: 71535cdb0def5ae3bdc48c762f586c569dd3104e131da598620c43ac679b705e85dc48a45fa0142a69f98097d15dabdf3b427153cb39c283459a3d5d17471da6
7
- data.tar.gz: 74c73fbf129bfdf9526e3e76269b7c82e75dbef4b63dda82868b465c83bcd29495e470fc1743664a5a065958e455fa53ca678ac8161427a0ab10b55c92b5dd05
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.8"
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 & 0xffff_0000_0000 == 0xffff_0000_0000 && (
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 & 0xffff_0000_0000 == 0xffff_0000_0000 && (
321
+ (@addr >> 32 == 0xffff && (
318
322
  @addr & 0xff000000 == 0x0a000000 || # ::ffff:10.0.0.0/8
319
- @addr & 0xfff00000 == 0xac100000 || # ::ffff::172.16.0.0/12
320
- @addr & 0xffff0000 == 0xc0a80000 # ::ffff::192.168.0.0/16
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 & 0xffff_0000_0000 == 0xffff_0000_0000 && (
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: #{@addr}"
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: #{@addr}"
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: #{@addr}"
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: #{@addr}"
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: #{@addr}"
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: #{@addr}"
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: #{@addr}"
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.8
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: 3.6.9
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: []