From cb88e1aa0ad0adb19bf40c81b8ee596032f28c24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20M=E4kinen?= Date: Mon, 10 Jun 2013 12:48:42 +0300 Subject: [PATCH] network: Added ipv6enabled fact. --- network/lib/facter/ipv6enabled.rb | 50 +++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 network/lib/facter/ipv6enabled.rb diff --git a/network/lib/facter/ipv6enabled.rb b/network/lib/facter/ipv6enabled.rb new file mode 100644 index 0000000..fb9a0f9 --- /dev/null +++ b/network/lib/facter/ipv6enabled.rb @@ -0,0 +1,50 @@ +# Fact: ipv6enabled +# +# Purpose: Check if system has IPv6 enabled. +# +# Based on ipaddress6 fact written Cody Herriges . + +def get_address_after_token(output, token) + ret = false + output.scan(/#{token} ((?>[0-9,a-f,A-F]*\:{1,2})+[0-9,a-f,A-F]{0,4})/).each do |match| + ret = true + break + end + ret +end + +Facter.add(:ipv6enabled) do + confine :kernel => :linux + setcode do + output = Facter::Util::IP.exec_ifconfig(["2>/dev/null"]) + + get_address_after_token(output, 'inet6 addr:') + end +end + +Facter.add(:ipv6enabled) do + confine :kernel => %w{SunOS} + setcode do + output = Facter::Util::IP.exec_ifconfig(["-a"]) + + get_address_after_token(output, 'inet6') + end +end + +Facter.add(:ipv6enabled) do + confine :kernel => %w{Darwin FreeBSD OpenBSD} + setcode do + output = Facter::Util::IP.exec_ifconfig(["-a"]) + + get_address_after_token(output, 'inet6') + end +end + +Facter.add(:ipv6enabled) do + confine :kernel => :windows + setcode do + output = Facter::Util::Resolution.exec("#{ENV['SYSTEMROOT']}/system32/netsh.exe interface ipv6 show address level=verbose") + + get_address_after_token(output, 'Address') + end +end