| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 
 | NAME
    Template::Plugin::IPAddr - Template::Toolkit plugin handling
    IP-addresses
VERSION
    version 0.03
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.addr_cidr %]
      [% IPAddr.cidr %]
      [% IPAddr.network %]
      [% IPAddr.netmask %]
      [% IPAddr.wildcard %]
    
      # Methods for retrieving usable IP-adresses from a prefix
      [% IPAddr.first %]
      [% IPAddr.last %]
DESCRIPTION
    This module implements an IPAddr class for handling IPv4 and
    IPv6-address 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
    retrieving 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
 addr_cidr
    Returns the address in CIDR notation, i.e. as address/prefixlen.
      [% USE IPAddr('10.1.1.1/255.255.255.0') %]
      [% IPAddr.addr_cidr %]   # 10.1.1.1/24
    
      [% USE IPAddr('2001:db8:a:b:c:d:e:f/48') %]
      [% IPAddr.addr_cidr %]  # 2001:db8:a:b:c:d:e:f/48
 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). You can retrieve an address on that format by using
    the "addr_cidr" method.
 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
    Please note the subtle, but important, difference between addr_cidr and
    cidr (see "cidr" for an explanation).
    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 values of no use.
    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, "PLUGINS" in Template::Manual::Config, NetAddr::IP
AUTHOR
    Per Carlson <pelle@cpan.org>
COPYRIGHT AND LICENSE
    This software is copyright (c) 2014 by Per Carlson.
    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.
 |