class Inspec::Resources::NetworkInterface
def exists?
def exists? !!(interface_info && interface_info[:name]) end
def initialize(iface)
def initialize(iface) @iface = iface end
def interface_info
def interface_info @cache ||= begin provider = LinuxInterface.new(inspec) if inspec.os.linux? provider = WindowsInterface.new(inspec) if inspec.os.windows? provider = BsdInterface.new(inspec) if inspec.os.bsd? # includes macOS Hash(provider && provider.interface_info(@iface)) end end
def ipv4_address
def ipv4_address ipv4_addresses.first end
def ipv4_address?
def ipv4_address? ipv4_addresses && !ipv4_addresses.empty? end
def ipv4_addresses
def ipv4_addresses ipv4_cidrs.map { |i| i.split("/")[0] } end
def ipv4_addresses_netmask
def ipv4_addresses_netmask ipv4_cidrs.map { |i| i.split("/") }.map do |addr, netlen| binmask = "#{"1" * netlen.to_i}#{"0" * (32 - netlen.to_i)}".to_i(2) netmask = [] (1..4).each do |_byte| netmask.unshift(binmask & 255) binmask = binmask >> 8 end "#{addr}/#{netmask.join(".")}" end end
def ipv4_cidrs
def ipv4_cidrs interface_info && Array(interface_info[:ipv4_addresses]) end
def ipv6_address
def ipv6_address ipv6_addresses.first end
def ipv6_address?
def ipv6_address? ipv6_addresses && !ipv6_addresses.empty? end
def ipv6_addresses
def ipv6_addresses ipv6_cidrs.map { |i| i.split("/")[0] } end
def ipv6_cidrs
def ipv6_cidrs interface_info && Array(interface_info[:ipv6_addresses]) end
def name
def name interface_info[:name] end
def resource_id
def resource_id @iface || "Interface" end
def speed
def speed interface_info && interface_info[:speed] end
def to_s
def to_s "Interface #{@iface}" end
def up?
def up? !!(interface_info && interface_info[:up]) end