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