lib/ohai/mixin/network_helper.rb in ohai-18.0.14 vs lib/ohai/mixin/network_helper.rb in ohai-18.0.26

- old
+ new

@@ -1,63 +1,65 @@ -# frozen_string_literal: true -# -# Author:: Serdar Sutay (<serdar@chef.io>) -# Copyright:: Copyright (c) Chef Software Inc. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or -# implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -require "socket" unless defined?(Socket) - -module Ohai - module Mixin - module NetworkHelper - FAMILIES = { - "inet" => "default", - "inet6" => "default_inet6", - }.freeze - - 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 - - # 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. - # - def canonicalize_hostname(hostname) - Addrinfo.getaddrinfo(hostname, nil, nil, nil, nil, Socket::AI_CANONNAME).first.canonname - end - - def canonicalize_hostname_with_retries(hostname) - retries = 3 - begin - canonicalize_hostname(hostname) - rescue - retries -= 1 - retry if retries > 0 - nil - end - end - end - end -end +# frozen_string_literal: true +# +# Author:: Serdar Sutay (<serdar@chef.io>) +# Copyright:: Copyright (c) Chef Software Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require "socket" unless defined?(Socket) + +module Ohai + module Mixin + module NetworkHelper + unless defined?(FAMILIES) + FAMILIES = { + "inet" => "default", + "inet6" => "default_inet6", + }.freeze + end + + 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 + + # 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. + # + def canonicalize_hostname(hostname) + Addrinfo.getaddrinfo(hostname, nil, nil, nil, nil, Socket::AI_CANONNAME).first.canonname + end + + def canonicalize_hostname_with_retries(hostname) + retries = 3 + begin + canonicalize_hostname(hostname) + rescue + retries -= 1 + retry if retries > 0 + nil + end + end + end + end +end