summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/facter/util/vlans.rb24
-rw-r--r--lib/facter/vlans.rb8
2 files changed, 32 insertions, 0 deletions
diff --git a/lib/facter/util/vlans.rb b/lib/facter/util/vlans.rb
new file mode 100644
index 0000000..6d226ff
--- /dev/null
+++ b/lib/facter/util/vlans.rb
@@ -0,0 +1,24 @@
+# A module to gather vlan facts
+#
+module Facter::Util::Vlans
+ def self.get_vlan_config
+ output = ""
+ if File.exists?('/proc/net/vlan/config') and File.readable?('/proc/net/vlan/config')
+ output = File.open('/proc/net/vlan/config').read
+ end
+ output
+ end
+
+ def self.get_vlans
+ vlans = Array.new
+ if self.get_vlan_config
+ self.get_vlan_config.each do |line|
+ if line =~ /^([0-9A-Za-z]+)\.([0-9]+) /
+ vlans.insert(-1, $~[2]) if $~[2]
+ end
+ end
+ end
+
+ vlans.join(',')
+ end
+end
diff --git a/lib/facter/vlans.rb b/lib/facter/vlans.rb
new file mode 100644
index 0000000..d65bdd8
--- /dev/null
+++ b/lib/facter/vlans.rb
@@ -0,0 +1,8 @@
+require 'facter/util/vlans'
+
+ Facter.add("vlans") do
+ confine :kernel => :linux
+ setcode do
+ Facter::Util::Vlans.get_vlans
+ end
+ end