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

Instance Method Details

#block_lengthObject



37
38
39
# File 'lib/ipaddr/tree.rb', line 37

def block_length
  Math.log2(addr_mask(~@mask_addr) + 1).to_i
end

#cidr_notationObject



29
30
31
# File 'lib/ipaddr/tree.rb', line 29

def cidr_notation
  "#{to_s}/#{prefix_length}"
end

#family_lengthObject



41
42
43
# File 'lib/ipaddr/tree.rb', line 41

def family_length
  ipv4? ? 32 : 128
end

#leaf?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/ipaddr/tree.rb', line 25

def leaf?
  prefix_length == family_length
end

#left_childObject



17
18
19
# File 'lib/ipaddr/tree.rb', line 17

def left_child
  mask prefix_length + 1 if block_length > 0
end

#next_siblingObject



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

#parentObject



5
6
7
# File 'lib/ipaddr/tree.rb', line 5

def parent
  mask prefix_length - 1 if prefix_length > 0
end

#prefix_lengthObject



33
34
35
# File 'lib/ipaddr/tree.rb', line 33

def prefix_length
  family_length - block_length
end

#previous_siblingObject



13
14
15
# File 'lib/ipaddr/tree.rb', line 13

def previous_sibling
  dup.set(@addr - 2 ** block_length) if @addr > 0
end

#right_childObject



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