Class: Inspec::Resources::NetworkInterface

Inherits:
Object
  • Object
show all
Defined in:
lib/inspec/resources/interface.rb

Instance Method Summary collapse

Constructor Details

#initialize(iface) ⇒ NetworkInterface

Returns a new instance of NetworkInterface.



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/inspec/resources/interface.rb', line 20

def initialize(iface)
  @iface = iface

  @interface_provider = nil
  if inspec.os.linux?
    @interface_provider = LinuxInterface.new(inspec)
  elsif inspec.os.windows?
    @interface_provider = WindowsInterface.new(inspec)
  else
    return skip_resource "The `interface` resource is not supported on your OS yet."
  end
end

Instance Method Details

#exists?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/inspec/resources/interface.rb', line 33

def exists?
  !interface_info.nil? && !interface_info[:name].nil?
end

#ipv4_address?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/inspec/resources/interface.rb', line 46

def ipv4_address?
  !ipv4_addresses.nil? && !ipv4_addresses.empty?
end

#ipv4_addressesObject



54
55
56
# File 'lib/inspec/resources/interface.rb', line 54

def ipv4_addresses
  ipv4_cidrs.map { |i| i.split("/")[0] }
end

#ipv4_addresses_netmaskObject



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/inspec/resources/interface.rb', line 62

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_cidrsObject



74
75
76
# File 'lib/inspec/resources/interface.rb', line 74

def ipv4_cidrs
  interface_info.nil? ? [] : interface_info[:ipv4_addresses]
end

#ipv6_address?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'lib/inspec/resources/interface.rb', line 50

def ipv6_address?
  !ipv6_addresses.nil? && !ipv6_addresses.empty?
end

#ipv6_addressesObject



58
59
60
# File 'lib/inspec/resources/interface.rb', line 58

def ipv6_addresses
  ipv6_cidrs.map { |i| i.split("/")[0] }
end

#ipv6_cidrsObject



78
79
80
# File 'lib/inspec/resources/interface.rb', line 78

def ipv6_cidrs
  interface_info.nil? ? [] : interface_info[:ipv6_addresses]
end

#speedObject

returns link speed in Mbits/sec



42
43
44
# File 'lib/inspec/resources/interface.rb', line 42

def speed
  interface_info.nil? ? nil : interface_info[:speed]
end

#to_sObject



82
83
84
# File 'lib/inspec/resources/interface.rb', line 82

def to_s
  "Interface #{@iface}"
end

#up?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/inspec/resources/interface.rb', line 37

def up?
  interface_info.nil? ? false : interface_info[:up]
end