Net::IP::Match::XS - Efficiently match IP addresses against IP ranges with C.
my $match = match_ip( $ip_addr, $match_ip1, $match_ip2, ... );
Net::IP::Match::XS is based upon, and does the same thing as Net::IP::Match. The
unconditionally exported subroutine 'match_ip' determines if the ip to match (
first argument ) matches any of the subsequent ip arguments. Match arguments
may be absolute quads, as '127.0.0.1', or contain mask bits as
'22.214.171.124/29'. A true return value indicates a match. It was written in
C, rather than a macro, preprocessed through Perl's source filter mechanism (
as is Net::IP::Match ), so that the ip arguments could be traditional perl
scalars. The C code is lean and mean ( IMHO ).
I use this module in my Apache server's mod_perl DB logging script to determine
if an incoming IP is 'remote' or 'local'. First, I set up some variables in
PerlSetvar DBILogger_local_ips '126.96.36.199/29'
PerlAddvar DBILogger_local_ips '188.8.131.52/29'
PerlAddvar DBILogger_local_ips '10.0.0.0/24'
PerlAddvar DBILogger_local_ips '172.16.0.0/12'
PerlAddvar DBILogger_local_ips '192.168.0.0/16'
PerlAddvar DBILogger_local_ips '127.0.0.1'
These are the ip addresses I want to be considered local. In the mod_perl
my @local_ips = $r->dir_config( "DBILogger_local_ips" );
my $local = match_ip( $incoming_ip, @local_ips );
Now $local is just that, and I set the database key accordingly.
Net::IP::Match by Marcel Grünauer.
Beau E. Cox, <email@example.com>
Copyright (C) 2004 by Beau E. Cox
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself, either Perl version 5.6.1 or, at your option,
any later version of Perl 5 you may have available.