NAME Template::Plugin::IPAddr - Template::Toolkit plugin handling IP-addresses SYNOPSIS # Create IPaddr object via USE directive... [% USE IPAddr %] [% USE IPAddr(prefix) %] # ...or via new [% ip = IPAddr.new(prefix) %] # Methods that return the different parts of the prefix [% IPAddr.addr %] [% IPAddr.cidr %] [% IPAddr.network %] [% IPAddr.netmask %] [% IPAddr.wildcard %] # Methods for retriving usable IP-adresses from a prefix [% IPAddr.first %] [% IPAddr.last %] DESCRIPTION This module implements an `IPAddr' class for handling IPv4 and IPv6-addresses in an object-orientated way. The module is based on NetAddr::IP and works on IPv4 as well as IPv6-addresses. You can create a `IPAddr' object via the `USE' directive, adding any initial prefix as an argument. [% USE IPAddr %] [% USE IPAddr(prefix) %] Once you've got a `IPAddr' object, you can use it as a prototype to create other `IPAddr' objects with the new() method. [% USE IPAddr %] [% ip = IPAddr.new(prefix) %] After creating an `IPaddr' object, you can use the supplied methods for retreiving properties of the prefix. [% USE IPAddr('10.0.0.0/24') %] [% IPAddr.netmask %] # 255.255.255.0 [% IPAddr.first %] # 10.0.0.1 [% IPAddr.last %] # 10.0.0.254 METHODS new Creates a new IPAddr object using an initial value passed as a positional parameter. Any string which is accepted by NetAddr::IP->new can be used as a parameter. [% USE IPAddr %] [% USE IPAddr(prefix) %] [% ip = IPAddr.new(prefix) %] Examples of (recommended) formats of initial parameters that can be used: # IPv4 n.n.n.n # Host address n.n.n.n/m # CIDR notation n.n.n.n/m.m.m.m # address + netmask # IPv6 x:x:x:x:x:x:x:x # Host address x:x:x:x:x:x:x:x/m # CIDR notation ::n.n.n.n # IPv4-compatible IPv6 address When used as `[% USE IPAddr %]' the prefix assigned internally is `0.0.0.0/0' addr Returns the address part of the prefix as written in the initial value. [% USE IPAddr('10.1.1.1/24') %] [% IPAddr.addr %] # 10.1.1.1 [% USE IPAddr('2001:DB8::DEAD:BEEF') %] [% IPAddr.addr %] # 2001:db8::dead:beef cidr Returns the prefix in CIDR notation, i.e. as `network/prefixlen'. [% USE IPAddr('10.1.1.1/255.255.255.0') %] [% IPAddr.cidr %] # 10.1.1.0/24 [% USE IPAddr('2001:db8:a:b:c:d:e:f/48') %] [% IPAddr.cidr %] # 2001:db8:a::/48 Note that differs from the `cidr' method in NetAddr::IP (which returns `address/prefixlen'). first Returns the first usable IP-address within the prefix. [% USE IPAddr('10.0.0.0/16') %] [% IPAddr.first %] # 10.0.0.1 last Returns the last usable IP-address within the prefix. [% USE IPAddr('10.0.0.0/16') %] [% IPAddr.last %] # 10.0.255.254 network Returns the network part of the prefix. [% USE IPAddr('10.1.1.1/24') %] [% IPAddr.network %] # 10.1.1.0 [% USE IPAddr('2001:db8:a:b:c:d:e:f/48') %] [% IPAddr.network %] # 2001:db8:a:: netmask Returns the netmask part of the prefix. [% USE IPAddr('10.1.1.1/24') %] [% IPAddr.netmask %] # 255.255.255.0 wildcard Returns the netmask of the prefix in wildcard format (the netmask with all bits inverted). [% USE IPAddr('10.1.1.1/24') %] [% IPAddr.wildcard %] # 0.0.0.255 NOTES Not all methods are applicable in a IPv6 context. For example there are no notation of netmask or wildcard in IPv6, and the first and last returns addresses of no/little value. When using IPv6 mapped IPv4 addresses, the "dot notation" is lost in the process. For example: [% USE IPAddr('::192.0.2.1') %] then [% IPAddr.addr %] will print `::c000:201'. SEE ALSO Template, Template::Manual::Config, NetAddr::IP AUTHOR Per Carlson `pelle@cpan.org' COPYRIGHT AND LICENSE Copyright 2013 Per Carlson This module is free software; you can redistribute it and/or modify it under the same terms as Perl 5.14.0. For more details, see the full text of the licenses at http://opensource.org/licenses/Artistic-2.0, and http://opensource.org/licenses/GPL-1.0.