diff --git a/lib/facter/netmask.rb b/lib/facter/netmask.rb index e4ddbc5672..bad364832c 100644 --- a/lib/facter/netmask.rb +++ b/lib/facter/netmask.rb @@ -9,7 +9,7 @@ require 'facter/util/netmask' Facter.add("netmask") do - confine :kernel => [ :sunos, :linux, :freebsd, :openbsd, :netbsd ] + confine :kernel => [ :sunos, :linux, :freebsd, :openbsd, :netbsd, :darwin ] setcode do Facter::NetMask.get_netmask end diff --git a/lib/facter/util/netmask.rb b/lib/facter/util/netmask.rb index dcbb79547c..160cdbde17 100644 --- a/lib/facter/util/netmask.rb +++ b/lib/facter/util/netmask.rb @@ -14,7 +14,13 @@ def self.get_netmask when 'SunOS' ops = { :ifconfig => '/usr/sbin/ifconfig -a', - :regex => %r{\s+ inet\s+? #{Facter.ipaddress} \+? mask (\w{8})}x, + :regex => %r{\s+ inet \s #{Facter.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' + ops = { + :ifconfig => '/sbin/ifconfig -a', + :regex => %r{\s+ inet \s #{Facter.ipaddress} \s netmask \s 0x(\w{8})}x, :munge => Proc.new { |mask| mask.scan(/../).collect do |byte| byte.to_i(16) end.join('.') } } end