[% # Returns the network address of a certain interface type for a given host # # @param argv.host The hostname to get the interface from. # @param argv.type The interface type # One of: web_int, web_ext, sip_int, sip_ext, ... # @return out network address in CDIR format -%] [% PERL %] use Net::IPv4Addr qw( ipv4_network ); [% END %] [% IF !hosts.${argv.host}.defined -%] [% argv.host = 'self' -%] [% END -%] [% out = '' -%] [% FOREACH iface IN hosts.${argv.host}.interfaces -%] [% FOREACH realiface IN hosts.${argv.host}.keys -%] [% IF realiface == iface -%] [% IF hosts.${argv.host}.$realiface.type.grep('^' _ argv.type _ '$').size() -%] [% IF hosts.${argv.host}.$realiface.ip and hosts.${argv.host}.$realiface.netmask -%] [% PERL -%] my ($ip, $netmask) = ipv4_network("[% hosts.${argv.host}.${realiface}.ip %]/[% hosts.${argv.host}.${realiface}.netmask %]"); $stash->set( 'out' => "$ip/$netmask"); [% END -%] [% END -%] [% RETURN -%] [% END -%] [% END -%] [% END -%] [% END -%]