Module: Ifconf

Defined in:
lib/ifconf.rb,
lib/ifconf/errors.rb,
lib/ifconf/version.rb,
lib/ifconf/snapshot.rb,
lib/ifconf/link_layer.rb,
lib/ifconf/ipv4_config.rb,
lib/ifconf/ipv6_config.rb,
lib/ifconf/mac_address.rb,
lib/ifconf/parse_error.rb,
lib/ifconf/ppp_link_layer.rb,
lib/ifconf/interface_flags.rb,
lib/ifconf/null_ipv4_config.rb,
lib/ifconf/network_interface.rb,
lib/ifconf/parsers/ipv4_line.rb,
lib/ifconf/parsers/ipv6_line.rb,
lib/ifconf/tunnel_link_layer.rb,
lib/ifconf/unknown_link_layer.rb,
lib/ifconf/ethernet_link_layer.rb,
lib/ifconf/loopback_link_layer.rb,
lib/ifconf/parsers/header_line.rb,
lib/ifconf/interface_statistics.rb,
lib/ifconf/parsers/mask_converter.rb,
lib/ifconf/parsers/link_layer_line.rb,
lib/ifconf/parsers/statistics_group.rb,
lib/ifconf/parsers/raw_text_splitter.rb

Overview

Parses Linux ifconfig output into a rich domain model of network interfaces.

Defined Under Namespace

Modules: Parsers Classes: Error, EthernetLinkLayer, InterfaceFlags, InterfaceStatistics, InvalidInterfaceName, InvalidMacAddress, InvalidSubnetMask, Ipv4Config, Ipv6Config, LinkLayer, LoopbackLinkLayer, MacAddress, MalformedBlockError, NetworkInterface, NullIpv4Config, ParseError, PppLinkLayer, Snapshot, TunnelLinkLayer, UnknownLinkLayer

Constant Summary collapse

Network =
Ronin::Support::Network
VERSION =
"0.1.0".freeze

Class Method Summary collapse

Class Method Details

.loaderObject



13
14
15
# File 'lib/ifconf.rb', line 13

def self.loader
  @loader
end

.parse(raw_output) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/ifconf.rb', line 17

def self.parse(raw_output)
  blocks = Parsers::RawTextSplitter.split(raw_output)
  interfaces = []
  errors = []

  blocks.each do |block|
    iface = parse_block(block)
    interfaces << iface
  rescue MalformedBlockError => e
    errors << ParseError.build(
      raw: block.raw,
      reason: e.message,
      line: block.start_line,
      severity: :error,
    )
  end

  Snapshot.build(interfaces: interfaces, errors: errors)
end