Module: IPGRAMMAR::AppStringIp2

Defined in:
lib/cbor-diagnostic-app/ipgrammar.rb

Instance Method Summary collapse

Instance Method Details

#astObject



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/cbor-diagnostic-app/ipgrammar.rb', line 26

def ast
  fam, addr = elements[0].ast
  prefix = elements[1].text_value
  if prefix.empty?
    [fam, addr]
  else
    prefixlength = Integer(prefix[1..-1])
    masked_addr = IPAddr.new_ntoh(addr).mask(prefixlength).hton
    i = addr.size
    while addr.getbyte(i-1) == 0
      break if (i -= 1) == 0
    end
    short_addr = addr[0...i]
    if masked_addr != addr
      warn "*** dt'': non-zero bits outside of prefix #{prefixlength}: #{short_addr.bytes.map{|x| "%02x" % x}.join}"
    end
    [fam, [prefixlength, short_addr]]
  end
end