ipaddr_extensions 1.0.1 → 1.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e108fa75d0fc844dee95973ccb8ea96dcf575f54
4
- data.tar.gz: fccb4dabceaa9841ad8448759dce0f0929e244a8
3
+ metadata.gz: cf483a94c8f13822c09bcb94e9323a51aa6aa325
4
+ data.tar.gz: f0f734f2d9d499ded274d8df132f21bb961b75d3
5
5
  SHA512:
6
- metadata.gz: 9273783bb292a50d88ccacd1b7991f419eafa5a1ec54416b90206af5a3ecc64425cfcd0879ff754cb17ddc245d143a5aabe4e2f21cc158ea8d6f80101bcadeef
7
- data.tar.gz: ea66724c21cee4573fdaae53555cb3c8a5703f7a767771af59f0cd43d1023cc0e99107049a211c4d43d29f2a6c5b33c70c82b1c5886da5325dfad540a3fdc77b
6
+ metadata.gz: 3cc83a72b64428e8c3ca311bbb0e82a3872f4440208cba9691a3a42550775a288e5e36afa907eb24579fea8e23076a85d4d1963e58352701241231f08bb97cdf
7
+ data.tar.gz: 0f8af589f5449c7c070e3ac9a0c99589cd2cb338161842b14106d76bc3ec9506ada74f050b0964586b9d4d79b4a0a9d3059e0138af46b5433934c66a83d4acf1
data/README CHANGED
@@ -50,6 +50,8 @@ Example
50
50
  => #<IPAddr: IPv6:0000:0000:0000:0000:0000:0000:0000:3039/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
51
51
  >> ("2001:db8::/32".to_ip / 16).collect { |prefix| prefix.to_string_including_length }
52
52
  => ["2001:db8::/36", "2001:db8:1000::/36", "2001:db8:2000::/36", "2001:db8:3000::/36", "2001:db8:4000::/36", "2001:db8:5000::/36", "2001:db8:6000::/36", "2001:db8:7000::/36", "2001:db8:8000::/36", "2001:db8:9000::/36", "2001:db8:a000::/36", "2001:db8:b000::/36", "2001:db8:c000::/36", "2001:db8:d000::/36", "2001:db8:e000::/36", "2001:db8:f000::/36"]
53
+ => IPAddr.new("2001:db8::/32").subnets(35)
54
+ => [#<IPAddr: IPv6:2001:0db8:0000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:2000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:4000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:6000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:8000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:a000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:c000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>, #<IPAddr: IPv6:2001:0db8:e000:0000:0000:0000:0000:0000/ffff:ffff:e000:0000:0000:0000:0000:0000>]
53
55
 
54
56
 
55
57
  Copyright (c) 2010-2013 James Harton, Resistor Limited, released under the MIT License.
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'ipaddr_extensions'
6
- s.version = '1.0.1'
6
+ s.version = '1.0.2'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ["James Harton"]
9
9
  s.email = %q{james@resistor.io}
@@ -404,6 +404,8 @@ module IPAddrExtensions
404
404
  end
405
405
  end
406
406
 
407
+ alias cidr to_string_including_length
408
+
407
409
  alias bitmask length
408
410
 
409
411
  def /(by)
@@ -434,6 +436,23 @@ module IPAddrExtensions
434
436
  end
435
437
  end
436
438
 
439
+ def subnets(length)
440
+ unless length > self.length
441
+ raise ArgumentError, "Subnets cannot have prefix lengths longer than or equal to their supernets'"
442
+ end
443
+ if self.ipv4?
444
+ base_len = 32
445
+ elsif self.ipv6?
446
+ base_len = 128
447
+ end
448
+ (0..(2**(length-self.length))-1).collect do |i|
449
+ offset = ((base_len - self.length) - (length - self.length))
450
+ new_subnet = IPAddr.new(self.to_i + (i << offset), self.family)
451
+ new_subnet.length = length
452
+ new_subnet
453
+ end
454
+ end
455
+
437
456
  def is_teredo?
438
457
  IPAddr.new("2001::/32").include? self
439
458
  end
@@ -640,7 +659,6 @@ class IPProtocol
640
659
  81 => "VMTP",
641
660
  82 => "SECURE-VMTP",
642
661
  83 => "VINES",
643
- 84 => "TTP",
644
662
  84 => "IPTM",
645
663
  85 => "NSFNET-IGP",
646
664
  86 => "DGP",
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipaddr_extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Harton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-19 00:00:00.000000000 Z
11
+ date: 2015-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  description:
@@ -44,17 +44,17 @@ require_paths:
44
44
  - lib
45
45
  required_ruby_version: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - '>='
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: '0'
50
50
  required_rubygems_version: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  requirements: []
56
56
  rubyforge_project:
57
- rubygems_version: 2.1.11
57
+ rubygems_version: 2.4.6
58
58
  signing_key:
59
59
  specification_version: 4
60
60
  summary: A small gem that adds extra functionality to Rubys IPAddr class