ipaddr 1.2.5 → 1.2.6
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 +25 -17
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f58727d4b57c7d063e7f6671b34b03f93de0b0b38f035528f9e3b6ef77842512
         | 
| 4 | 
            +
              data.tar.gz: 71c172f3e9506cfaacd857ad27099ca01f7862737590c3fd6ac4ca01952f96c1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f97223995de559e291ba8058014e3ba23606f36670c2cf8360aa1f35c2dfa716fc0956cda1ceead863715ecd5065457c295f8c8653e999e63757f88c2d937a11
         | 
| 7 | 
            +
              data.tar.gz: 20d8934e68d7f4be367267661c398c452f65d066b8a623e0e6fc2d17569fca3e82381606001eb0a56294132cd438e98ba5e7a34faf18098093bb71ea3aee9e86
         | 
    
        data/lib/ipaddr.rb
    CHANGED
    
    | @@ -40,7 +40,7 @@ require 'socket' | |
| 40 40 | 
             
            #   p ipaddr3                   #=> #<IPAddr: IPv4:192.168.2.0/255.255.255.0>
         | 
| 41 41 |  | 
| 42 42 | 
             
            class IPAddr
         | 
| 43 | 
            -
              VERSION = "1.2. | 
| 43 | 
            +
              VERSION = "1.2.6"
         | 
| 44 44 |  | 
| 45 45 | 
             
              # 32 bit mask for IPv4
         | 
| 46 46 | 
             
              IN4MASK = 0xffffffff
         | 
| @@ -176,9 +176,7 @@ class IPAddr | |
| 176 176 | 
             
              def include?(other)
         | 
| 177 177 | 
             
                other = coerce_other(other)
         | 
| 178 178 | 
             
                return false unless other.family == family
         | 
| 179 | 
            -
                 | 
| 180 | 
            -
                other = other.to_range
         | 
| 181 | 
            -
                range.begin <= other.begin && range.end >= other.end
         | 
| 179 | 
            +
                begin_addr <= other.begin_addr && end_addr >= other.end_addr
         | 
| 182 180 | 
             
              end
         | 
| 183 181 | 
             
              alias === include?
         | 
| 184 182 |  | 
| @@ -263,7 +261,8 @@ class IPAddr | |
| 263 261 | 
             
              # Returns true if the ipaddr is a private address.  IPv4 addresses
         | 
| 264 262 | 
             
              # in 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16 as defined in RFC
         | 
| 265 263 | 
             
              # 1918 and IPv6 Unique Local Addresses in fc00::/7 as defined in RFC
         | 
| 266 | 
            -
              # 4193 are considered private.
         | 
| 264 | 
            +
              # 4193 are considered private. Private IPv4 addresses in the
         | 
| 265 | 
            +
              # IPv4-mapped IPv6 address range are also considered private.
         | 
| 267 266 | 
             
              def private?
         | 
| 268 267 | 
             
                case @family
         | 
| 269 268 | 
             
                when Socket::AF_INET
         | 
| @@ -271,7 +270,12 @@ class IPAddr | |
| 271 270 | 
             
                    @addr & 0xfff00000 == 0xac100000 ||  # 172.16.0.0/12
         | 
| 272 271 | 
             
                    @addr & 0xffff0000 == 0xc0a80000     # 192.168.0.0/16
         | 
| 273 272 | 
             
                when Socket::AF_INET6
         | 
| 274 | 
            -
                  @addr & 0xfe00_0000_0000_0000_0000_0000_0000_0000 == 0xfc00_0000_0000_0000_0000_0000_0000_0000
         | 
| 273 | 
            +
                  @addr & 0xfe00_0000_0000_0000_0000_0000_0000_0000 == 0xfc00_0000_0000_0000_0000_0000_0000_0000 ||
         | 
| 274 | 
            +
                    (@addr & 0xffff_0000_0000 == 0xffff_0000_0000 && (
         | 
| 275 | 
            +
                      @addr & 0xff000000 == 0x0a000000 ||  # ::ffff:10.0.0.0/8
         | 
| 276 | 
            +
                      @addr & 0xfff00000 == 0xac100000 ||  # ::ffff::172.16.0.0/12
         | 
| 277 | 
            +
                      @addr & 0xffff0000 == 0xc0a80000     # ::ffff::192.168.0.0/16
         | 
| 278 | 
            +
                    ))
         | 
| 275 279 | 
             
                else
         | 
| 276 280 | 
             
                  raise AddressFamilyError, "unsupported address family"
         | 
| 277 281 | 
             
                end
         | 
| @@ -400,17 +404,6 @@ class IPAddr | |
| 400 404 |  | 
| 401 405 | 
             
              # Creates a Range object for the network address.
         | 
| 402 406 | 
             
              def to_range
         | 
| 403 | 
            -
                begin_addr = (@addr & @mask_addr)
         | 
| 404 | 
            -
             | 
| 405 | 
            -
                case @family
         | 
| 406 | 
            -
                when Socket::AF_INET
         | 
| 407 | 
            -
                  end_addr = (@addr | (IN4MASK ^ @mask_addr))
         | 
| 408 | 
            -
                when Socket::AF_INET6
         | 
| 409 | 
            -
                  end_addr = (@addr | (IN6MASK ^ @mask_addr))
         | 
| 410 | 
            -
                else
         | 
| 411 | 
            -
                  raise AddressFamilyError, "unsupported address family"
         | 
| 412 | 
            -
                end
         | 
| 413 | 
            -
             | 
| 414 407 | 
             
                self.class.new(begin_addr, @family)..self.class.new(end_addr, @family)
         | 
| 415 408 | 
             
              end
         | 
| 416 409 |  | 
| @@ -491,6 +484,21 @@ class IPAddr | |
| 491 484 |  | 
| 492 485 | 
             
              protected
         | 
| 493 486 |  | 
| 487 | 
            +
              def begin_addr
         | 
| 488 | 
            +
                @addr & @mask_addr
         | 
| 489 | 
            +
              end
         | 
| 490 | 
            +
             | 
| 491 | 
            +
              def end_addr
         | 
| 492 | 
            +
                case @family
         | 
| 493 | 
            +
                when Socket::AF_INET
         | 
| 494 | 
            +
                  @addr | (IN4MASK ^ @mask_addr)
         | 
| 495 | 
            +
                when Socket::AF_INET6
         | 
| 496 | 
            +
                  @addr | (IN6MASK ^ @mask_addr)
         | 
| 497 | 
            +
                else
         | 
| 498 | 
            +
                  raise AddressFamilyError, "unsupported address family"
         | 
| 499 | 
            +
                end
         | 
| 500 | 
            +
              end
         | 
| 501 | 
            +
             | 
| 494 502 | 
             
              # Set +@addr+, the internal stored ip address, to given +addr+. The
         | 
| 495 503 | 
             
              # parameter +addr+ is validated using the first +family+ member,
         | 
| 496 504 | 
             
              # which is +Socket::AF_INET+ or +Socket::AF_INET6+.
         | 
    
        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.6
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Akinori MUSHA
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire:
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2023-12-16 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies: []
         | 
| 14 14 | 
             
            description: |
         | 
| 15 15 | 
             
              IPAddr provides a set of methods to manipulate an IP address.
         | 
| @@ -45,7 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 45 45 | 
             
                - !ruby/object:Gem::Version
         | 
| 46 46 | 
             
                  version: '0'
         | 
| 47 47 | 
             
            requirements: []
         | 
| 48 | 
            -
            rubygems_version: 3. | 
| 48 | 
            +
            rubygems_version: 3.5.0.dev
         | 
| 49 49 | 
             
            signing_key:
         | 
| 50 50 | 
             
            specification_version: 4
         | 
| 51 51 | 
             
            summary: A class to manipulate an IP address in ruby
         |