NAME
APR::IpSubnet - Perl API for accessing APRs ip_subnet structures
Synopsis
use APR::IpSubnet ();
my $ipsub = APR::IpSubnet->new($pool, "127.0.0.1");
$ok = $ipsub->test($sock_addr);
Description
APR::IpSubnet
object represents a range of IP addresses (IPv4/IPv6). A socket connection can be matched against this range to test whether the IP it's coming from is inside or outside of this range.
API
APR::IpSubnet
provides the following functions and/or methods:
new
Create an IP subnet represenation object
$ipsubnet = APR::IpSubnet->new($pool, $ip);
$ipsubnet = APR::IpSubnet->new($pool, $ip, $mask_or_numbits);
- obj:
APR::IpSubnet
(class name) - arg1:
$pool
(APR::Pool object
) - arg2:
$ip
( string ) -
IP address in one of the two formats: IPv4 (e.g. "127.0.0.1") or IPv6 (e.g. "::1"). IPv6 addresses are accepted only if APR has the IPv6 support enabled.
- opt arg3:
$mask_or_numbits
( string ) -
An optional IP mask (e.g. "255.0.0.0") or number of bits (e.g. "15").
If none provided, the default is not to mask off.
- ret:
$ret
(APR::IpSubnet object
) -
The IP-subnet object
- excpt:
APR::Error
- since: 1.99_15
test
Test the IP address in the socket address object against a pre-built ip-subnet representation.
$ret = $ipsub->test($sockaddr);
- obj:
$ipsub
(APR::IpSubnet object
) -
The ip-subnet representation
- arg1:
$sockaddr
(APR::SockAddr object
) -
The socket address to test
- ret:
$ret
( boolean ) -
true if the socket address is within the subnet, false otherwise
- since: 1.99_15
This method is used for testing whether or not an address is within a subnet. It's used by module mod_access
to check whether the client IP fits into the IP range, supplied by Allow
/Deny
directives.
Example:
Allow accesses only from the localhost (IPv4):
use APR::IpSubnet ();
use Apache::Connection ();
use Apache::RequestRec ();
my $ipsub = APR::IpSubnet->new($r->pool, "127.0.0.1");
ok $ipsub->test($r->connection->remote_addr);
See Also
Copyright
mod_perl 2.0 and its core modules are copyrighted under The Apache Software License, Version 2.0.