a90adabe15acd94d98cfe37ba18859f72db16496
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / lib / puppet / parser / functions / is_ip_address.rb
1 #
2 # is_ip_address.rb
3 #
4
5 module Puppet::Parser::Functions
6   newfunction(:is_ip_address, :type => :rvalue, :doc => <<-EOS
7 Returns true if the string passed to this function is a valid IP address.
8     EOS
9   ) do |arguments|
10
11     require 'ipaddr'
12
13     if (arguments.size != 1) then
14       raise(Puppet::ParseError, "is_ip_address(): Wrong number of arguments "+
15         "given #{arguments.size} for 1")
16     end
17
18     begin
19       ip = IPAddr.new(arguments[0])
20     rescue ArgumentError
21       return false
22     end
23
24     if ip.ipv4? or ip.ipv6? then
25       return true
26     else
27       return false
28     end
29   end
30 end
31
32 # vim: set ts=2 sw=2 et :