Net::IP::XS - IPv4/IPv6 address library
use Net::IP::XS;
my $ip = new Net::IP::XS ('193.0.1/24') or die (Net::IP::XS::Error());
print ("IP : ".$ip->ip()."\n");
print ("Sho : ".$ip->short()."\n");
print ("Bin : ".$ip->binip()."\n");
print ("Int : ".$ip->intip()."\n");
print ("Mask: ".$ip->mask()."\n");
print ("Last: ".$ip->last_ip()."\n");
print ("Len : ".$ip->prefixlen()."\n");
print ("Size: ".$ip->size()."\n");
print ("Type: ".$ip->iptype()."\n");
print ("Rev: ".$ip->reverse_ip()."\n");
An XS (C) implementation of Net::IP. See Net::IP's documentation
(as at version 1.25) for the functions and methods that are available.
- Exports
- Nothing is exported by default.
- Error messages
- In some instances this won't set error codes or messages where
"Net::IP" would, though it should be
mostly the same.
- Object-oriented
interface
- The object-oriented interface uses function calls and hashref lookups
internally, such that subclassing
"Net::IP::XS" will not have the same
effect as it does with "Net::IP".
- ip_auth
- Returns "undef" on failure, instead of
dying.
- ip_binadd
- Returns "undef" if either of the
bitstring arguments is more than 128 characters in length.
Any character of the bitstring that is not a 0 is treated as a
1. The "Net::IP" version returns
different results for different digits, and treats non-digits as 0.
- ip_bintoint
- The integer returned will be at most ((1 << 128) - 1) (i.e. the
largest possible IPv6 address).
"Net::IP" handles bitstrings of
arbitrary length.
- ip_compress_address
- Returns "undef" if the IPv6 address
argument is invalid.
- ip_compress_v4_prefix
- Returns "undef" if the
"len" argument is negative or greater
than 32.
- ip_expand_address
- Does not set "Error" or
"Errno" where there is a problem with an
embedded IPv4 address within an IPv6 address.
Returns the zero IP address if the empty string is provided.
The "Net::IP" version returns
"undef".
Returns a full IPv6 address if a partial address is provided
(e.g. returns 'ffff:ffff:0000:0000:0000:0000:0000:0000' if 'ffff:ffff'
is provided). The "Net::IP" version
returns the partial address.
Returns "undef" on an
invalid IPv4/IPv6 address. The
"Net::IP" version returns the zero
address for IPv4 and whatever was provided for IPv6.
- ip_get_mask
- The mask returned will always have a length equal to the number of bits in
an address of the specified IP version (e.g. an IPv4 mask will always
comprise 32 characters). The "Net::IP"
version will return a longer mask when the
"len" argument is larger than the number
of bits in the specified IP version.
If a negative "len" is
provided, it will be treated as zero.
- ip_inttobin
- The bitstring returned will always be either 32 or 128 characters in
length, and it returns "undef" if the
integer argument would require more than 128 characters to represent as a
bitstring. If an invalid version is provided, the returned bitstring will
be 128 characters in length. The
"Net::IP" version handles arbitrary
integers and expands to accommodate those integers, regardless of the
version argument. Also, if an invalid version is provided, the returned
bitstring is only as long as is necessary to accommodate the
bitstring.
- ip_iptobin
- Returns "undef" on an invalid IPv4/IPv6
address.
- ip_last_address_bin
- Returns an empty string if an invalid version (i.e. not 4 or 6) is
provided. If the bitstring provided is longer than the number of bits in
the specified version, then only the first 32/128 bits will be used in
determining the last address. If the
"len" provided is invalid (negative or
more than 32/128 depending on the version), it will be treated as the
maximum length of the specified version.
- ip_normalize
- For the 'plus' style of string (e.g. '1.0.0.0 + 255'), whitespace between
the plus character and the parts before and after it is optional. In the
"Net::IP" version, there has to be some
whitespace before and after the plus character. Also,
"undef" will be returned if the part
after the plus sign is not a number. The
"Net::IP" version will return two copies
of the single address in this instance.
For the 'prefix range' style of string (e.g. '1.0.0.0/8'), the
part after the slash must be a number. If it is not,
"undef" will be returned. The
"Net::IP" version will return two
copies of the single address in this instance.
- ip_range_to_prefix
- Returns "undef" if the version argument
is invalid.
- ip_reverse
- The "len" argument determines the length
of the reverse domain - e.g., if the arguments are '127.0.0.1', '16' and
'4', the reverse domain will be '0.127.in-addr.arpa.'. The
"Net::IP" version does not take the
"len" argument into account for IPv4
addresses. For IPv6 addresses, a compressed IP address string may be
provided.
- ip_splitprefix
- Returns "undef" unless the first
component of the string is less than or equal to 64 characters in length.
The "Net::IP" version handles strings of
arbitrary length.
- prefix
- Returns a string with a prefix length of zero (e.g. '127.0.0.1/0') where
"prefixlen" is not defined in the
object. The "Net::IP" version will not
include any prefix length in the returned string (e.g. '127.0.0.1/').
Tom Harrison,
"<tomhrr@cpan.org>"
Please report any bugs or feature requests to
"bug-net-ip-xs at rt.cpan.org", or through
the web interface at
<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-IP-XS>.
Manuel Valente
("<manuel.valente@gmail.com>") and
the other authors of Net::IP.
Copyright (C) 2010-2023 Tom Harrison <tomhrr@cpan.org>.
Original inet_pton4 and inet_pton6 functions are copyright (C)
2006 Free Software Foundation.
Original interface, and the auth and ip_auth functions, are
copyright (C) 1999-2002 RIPE NCC.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.