class Inspec::Resources::NetworkInterface

Public Class Methods

new(iface) click to toggle source
# File lib/inspec/resources/interface.rb, line 21
def initialize(iface)
  @iface = iface
end

Public Instance Methods

exists?() click to toggle source
# File lib/inspec/resources/interface.rb, line 25
def exists?
  !!(interface_info && interface_info[:name])
end
ipv4_address() click to toggle source
# File lib/inspec/resources/interface.rb, line 50
def ipv4_address
  ipv4_addresses.first
end
ipv4_address?() click to toggle source
# File lib/inspec/resources/interface.rb, line 42
def ipv4_address?
  ipv4_addresses && !ipv4_addresses.empty?
end
ipv4_addresses() click to toggle source
# File lib/inspec/resources/interface.rb, line 54
def ipv4_addresses
  ipv4_cidrs.map { |i| i.split("/")[0] }
end
ipv4_addresses_netmask() click to toggle source
# File lib/inspec/resources/interface.rb, line 66
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
ipv4_cidrs() click to toggle source
# File lib/inspec/resources/interface.rb, line 78
def ipv4_cidrs
  interface_info && Array(interface_info[:ipv4_addresses])
end
ipv6_address() click to toggle source
# File lib/inspec/resources/interface.rb, line 58
def ipv6_address
  ipv6_addresses.first
end
ipv6_address?() click to toggle source
# File lib/inspec/resources/interface.rb, line 46
def ipv6_address?
  ipv6_addresses && !ipv6_addresses.empty?
end
ipv6_addresses() click to toggle source
# File lib/inspec/resources/interface.rb, line 62
def ipv6_addresses
  ipv6_cidrs.map { |i| i.split("/")[0] }
end
ipv6_cidrs() click to toggle source
# File lib/inspec/resources/interface.rb, line 82
def ipv6_cidrs
  interface_info && Array(interface_info[:ipv6_addresses])
end
name() click to toggle source
# File lib/inspec/resources/interface.rb, line 33
def name
  interface_info[:name]
end
speed() click to toggle source

returns link speed in Mbits/sec

# File lib/inspec/resources/interface.rb, line 38
def speed
  interface_info && interface_info[:speed]
end
to_s() click to toggle source
# File lib/inspec/resources/interface.rb, line 86
def to_s
  "Interface #{@iface}"
end
up?() click to toggle source
# File lib/inspec/resources/interface.rb, line 29
def up?
  !!(interface_info && interface_info[:up])
end

Private Instance Methods

interface_info() click to toggle source
# File lib/inspec/resources/interface.rb, line 92
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