module Ohai::Mixin::NetworkHelper

Constants

FAMILIES

Public Instance Methods

canonicalize_hostname(hostname) click to toggle source

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.

# File lib/ohai/mixin/network_helper.rb, line 47
def canonicalize_hostname(hostname)
  Addrinfo.getaddrinfo(hostname, nil, nil, nil, nil, Socket::AI_CANONNAME).first.canonname
end
canonicalize_hostname_with_retries(hostname) click to toggle source
# File lib/ohai/mixin/network_helper.rb, line 51
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) click to toggle source
# File lib/ohai/mixin/network_helper.rb, line 31
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