[% # vi: ft=tt2 # 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 The network address in CDIR format. IF !hosts.${argv.host}.defined; argv.host = 'self'; END; out = ''; FOREACH iface IN hosts.${argv.host}.interfaces; NEXT UNLESS hosts.${argv.host}.exists(iface); NEXT UNLESS hosts.${argv.host}.$iface.type.grep('^' _ argv.type _ '$').size(); IF hosts.${argv.host}.$iface.ip AND hosts.${argv.host}.$iface.netmask; PERL -%] use Net::Netmask; my $network = Net::Netmask->new("[% hosts.${argv.host}.${iface}.ip %]/[% hosts.${argv.host}.${iface}.netmask %]"); $stash->set(out => $network->desc); [% END; END; RETURN; END; -%]