Module: IPAddr::Tree
- Included in:
- IPAddr
- Defined in:
- lib/ipaddr/tree.rb,
lib/ipaddr/tree/version.rb
Defined Under Namespace
Modules: Range
Constant Summary collapse
- VERSION =
"0.1.1"
Instance Method Summary collapse
- #block_length ⇒ Object
- #cidr_notation ⇒ Object
- #family_length ⇒ Object
- #leaf? ⇒ Boolean
- #left_child ⇒ Object
- #next_sibling ⇒ Object
- #parent ⇒ Object
- #prefix_length ⇒ Object
- #previous_sibling ⇒ Object
- #right_child ⇒ Object
Instance Method Details
#block_length ⇒ Object
37 38 39 |
# File 'lib/ipaddr/tree.rb', line 37 def block_length Math.log2(addr_mask(~@mask_addr) + 1).to_i end |
#cidr_notation ⇒ Object
29 30 31 |
# File 'lib/ipaddr/tree.rb', line 29 def cidr_notation "#{to_s}/#{prefix_length}" end |
#family_length ⇒ Object
41 42 43 |
# File 'lib/ipaddr/tree.rb', line 41 def family_length ipv4? ? 32 : 128 end |
#leaf? ⇒ Boolean
25 26 27 |
# File 'lib/ipaddr/tree.rb', line 25 def leaf? prefix_length == family_length end |
#left_child ⇒ Object
17 18 19 |
# File 'lib/ipaddr/tree.rb', line 17 def left_child mask prefix_length + 1 if block_length > 0 end |
#next_sibling ⇒ Object
9 10 11 |
# File 'lib/ipaddr/tree.rb', line 9 def next_sibling dup.set(@addr + 2 ** block_length) if @addr < (2 ** family_length) - 1 end |
#parent ⇒ Object
5 6 7 |
# File 'lib/ipaddr/tree.rb', line 5 def parent mask prefix_length - 1 if prefix_length > 0 end |
#prefix_length ⇒ Object
33 34 35 |
# File 'lib/ipaddr/tree.rb', line 33 def prefix_length family_length - block_length end |
#previous_sibling ⇒ Object
13 14 15 |
# File 'lib/ipaddr/tree.rb', line 13 def previous_sibling dup.set(@addr - 2 ** block_length) if @addr > 0 end |
#right_child ⇒ Object
21 22 23 |
# File 'lib/ipaddr/tree.rb', line 21 def right_child mask(prefix_length + 1).set(@addr + 2 ** (block_length - 1)) if block_length > 0 end |