Sha256: f98876bcefb2688edc687f1b6acf80f02c6217fbe53f6ec6445f8de8519bfc60

Contents?: true

Size: 1.23 KB

Versions: 18

Compression:

Stored size: 1.23 KB

Contents

module Facter::NetMask
  def self.get_netmask
    netmask = nil;
    ipregex = %r{(\d{1,3}\.){3}\d{1,3}}

    ops = nil
    case Facter.value(:kernel)
    when 'Linux'
      ops = {
        :ifconfig_opts => ['2>/dev/null'],
        :regex => %r{#{Facter.value(:ipaddress)}.*?(?:Mask:|netmask)\s*(#{ipregex})}x,
        :munge => nil,
      }
    when 'SunOS'
      ops = {
        :ifconfig_opts => ['-a'],
        :regex => %r{\s+ inet \s #{Facter.value(:ipaddress)} \s netmask \s (\w{8})}x,
        :munge => Proc.new { |mask| mask.scan(/../).collect do |byte| byte.to_i(16) end.join('.') }
      }
    when 'FreeBSD','NetBSD','OpenBSD', 'Darwin', 'GNU/kFreeBSD', 'DragonFly'
      ops = {
        :ifconfig_opts => ['-a'],
        :regex => %r{\s+ inet \s #{Facter.value(:ipaddress)} \s netmask \s 0x(\w{8})}x,
        :munge => Proc.new { |mask| mask.scan(/../).collect do |byte| byte.to_i(16) end.join('.') }
      }
    end

    String(Facter::Util::IP.exec_ifconfig(ops[:ifconfig_opts])).split(/\n/).collect do |line|
      matches = line.match(ops[:regex])
      if !matches.nil?
        if ops[:munge].nil?
          netmask = matches[1]
        else
          netmask = ops[:munge].call(matches[1])
        end
      end
    end
    netmask
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
facter-2.0.2 lib/facter/util/netmask.rb
facter-2.0.2-x86-mingw32 lib/facter/util/netmask.rb
facter-2.0.2-universal-darwin lib/facter/util/netmask.rb
facter-2.0.1 lib/facter/util/netmask.rb
facter-2.0.1-x86-mingw32 lib/facter/util/netmask.rb
facter-2.0.1-universal-darwin lib/facter/util/netmask.rb
facter-2.0.1.rc4 lib/facter/util/netmask.rb
facter-2.0.1.rc4-x86-mingw32 lib/facter/util/netmask.rb
facter-2.0.1.rc4-universal-darwin lib/facter/util/netmask.rb
facter-2.0.1.rc3 lib/facter/util/netmask.rb
facter-2.0.1.rc3-x86-mingw32 lib/facter/util/netmask.rb
facter-2.0.1.rc3-universal-darwin lib/facter/util/netmask.rb
facter-2.0.1.rc2 lib/facter/util/netmask.rb
facter-2.0.1.rc2-x86-mingw32 lib/facter/util/netmask.rb
facter-2.0.1.rc2-universal-darwin lib/facter/util/netmask.rb
facter-2.0.1.rc1 lib/facter/util/netmask.rb
facter-2.0.1.rc1-x86-mingw32 lib/facter/util/netmask.rb
facter-2.0.1.rc1-universal-darwin lib/facter/util/netmask.rb