Same dash - everywhere
[mirror/dsa-puppet.git] / facts / ipaddresses.rb
index f1bbd69..05e3e90 100644 (file)
@@ -1,28 +1,66 @@
 Facter.add("v4ips") do
+        confine :kernel => :linux
         addrs = []
-        %x{ip addr list}.each do |line|
-                next unless line =~ /\s+inet/
-                next if line =~ /scope (link|host)/
-                if line =~ /\s+inet\s+(\S+)\/\d\d .*/
-                        addrs << $1
+        if FileTest.exist?("/bin/ip")
+                %x{ip addr list}.each do |line|
+                        next unless line =~ /\s+inet/
+                        next if line =~ /scope (link|host)/
+                        if line =~ /\s+inet\s+(\S+)\/\d{1,2} .*/
+                                addrs << $1
+                        end
                 end
         end
+        ret = addrs.join(",")
+        if ret.empty?
+          ret = 'no'
+        end
         setcode do
-                addrs.join(",")
+          ret
         end
 end
 
+Facter.add("v4ips") do
+       confine :kernel => 'GNU/kFreeBSD'
+       setcode do
+               addrs = []
+               output = %x{/sbin/ifconfig}
+
+               output.split(/^\S/).each { |str|
+                       if str =~ /inet ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
+                               tmp = $1
+                               unless tmp =~ /127\./
+                                       addrs << tmp
+                                       break
+                               end
+                       end
+               }
+
+               ret = addrs.join(",")
+               if ret.empty?
+                       ret = 'no'
+               end
+               ret
+       end
+end
+
 Facter.add("v6ips") do
+        confine :kernel => :linux
         addrs = []
-        %x{ip addr list}.each do |line|
-                next unless line =~ /\s+inet/
-                next if line =~ /scope (link|host)/
-                if line =~ /\s+inet6\s+(\S+)\/\d\d .*/
-                        addrs << $1
+        if FileTest.exist?("/bin/ip")
+                %x{ip addr list}.each do |line|
+                        next unless line =~ /\s+inet/
+                        next if line =~ /scope (link|host)/
+                        if line =~ /\s+inet6\s+(\S+)\/\d{1,3} .*/
+                                addrs << $1
+                        end
                 end
         end
+        ret = addrs.join(",")
+        if ret.empty?
+          ret = 'no'
+        end
         setcode do
-                addrs.join(",")
+          ret
         end
 end