Module: Ohai::Mixin::NetworkHelper

Defined in:
lib/ohai/mixin/network_helper.rb

Constant Summary collapse

FAMILIES =
{
  "inet" => "default",
  "inet6" => "default_inet6",
}.freeze

Instance Method Summary collapse

Instance Method Details

#canonicalize_hostname(hostname) ⇒ Object

This does a forward and reverse lookup on the hostname to return what should be the FQDN for the host determined by name lookup (generally DNS). If the forward lookup fails this will throw. If the reverse lookup fails this will return the hostname back. The behavior on failure of the reverse lookup is both vitally important to this API, and completely untested, so changes to this method (not recommended) need to be manually validated by hand by setting up a DNS server with a broken A record to an IP without a PTR record (e.g. any RFC1918 space not served by the configured DNS server), and the method should return the hostname and not the IP address.



49
50
51
# File 'lib/ohai/mixin/network_helper.rb', line 49

def canonicalize_hostname(hostname)
  Addrinfo.getaddrinfo(hostname, nil, nil, nil, nil, Socket::AI_CANONNAME).first.canonname
end

#canonicalize_hostname_with_retries(hostname) ⇒ Object



53
54
55
56
57
58
59
60
61
62
# File 'lib/ohai/mixin/network_helper.rb', line 53

def canonicalize_hostname_with_retries(hostname)
  retries = 3
  begin
    canonicalize_hostname(hostname)
  rescue
    retries -= 1
    retry if retries > 0
    nil
  end
end

#hex_to_dec_netmask(netmask) ⇒ Object



33
34
35
36
37
38
# File 'lib/ohai/mixin/network_helper.rb', line 33

def hex_to_dec_netmask(netmask)
  # example 'ffff0000' -> '255.255.0.0'
  dec = netmask[0..1].to_i(16).to_s(10)
  [2, 4, 6].each { |n| dec = dec + "." + netmask[n..n + 1].to_i(16).to_s(10) }
  dec
end