[%
# vi: ft=tt2

# Return an array of IPs from a given hostname.
#
# @param argv.name      The hostname to lookup.
# @param argv.type      The address family to lookup, one of:
#                         "AF_INET" for IPv4
#                         "AF_INET6" for IPv6
#                         "" for both
# @return out           The array of IPs.
-%]
[% PERL -%]
   use Socket qw(:all);

   my $err;
   my $ipaddr;
   my @res;
   my @ips;

   ($err, @res) = getaddrinfo("[% argv.name %]", "", {
       socktype => SOCK_RAW, family => [% argv.type %]
   });
   while (my $ai = shift @res) {
      ($err, $ipaddr) = getnameinfo($ai->{addr}, NI_NUMERICHOST, NIx_NOSERV);
      push @ips, $ipaddr;
   }
   @ips = sort @ips;

   $stash->set(out => \@ips);
[% END -%]
