NetAddr::IP::UtilPP3pm
Usage
use NetAddr::IP::UtilPP qw(hasbitsshiftleftaddconstadd128sub128notcontiguousipv4to6mask4to6ipanyto6maskanyto6ipv6to4bin2bcdbcd2bin);use NetAddr::IP::UtilPP qw(:all)$rv = hasbits($bits128);$bitsX2 = shiftleft($bits128,$n);$carry = addconst($ipv6naddr,$signed_32con);($carry,$ipv6naddr)=addconst($ipv6naddr,$signed_32con);$carry = add128($ipv6naddr1,$ipv6naddr2);($carry,$ipv6naddr)=add128($ipv6naddr1,$ipv6naddr2);$carry = sub128($ipv6naddr1,$ipv6naddr2);($spurious,$cidr) = notcontiguous($mask128);($carry,$ipv6naddr)=sub128($ipv6naddr1,$ipv6naddr2);$ipv6naddr = ipv4to6($netaddr);$ipv6naddr = mask4to6($netaddr);$ipv6naddr = ipanyto6($netaddr);$ipv6naddr = maskanyto6($netaddr);$netaddr = ipv6to4($pv6naddr);$bcdtext = bin2bcd($bits128);$bits128 = bcd2bin($bcdtxt);
Overview
NetAddr::IP::UtilPP provides pure Perl functions for NetAddr::IP::Util
- •
-
$rv= hasbits($bits128);This function returns true if there are one's present in the 128 bit string and false if all the bits are zero.
i.e. if (hasbits($bits128)) {&do_something;}or if (hasbits($bits128 & $mask128) {&do_something;}This allows the implementation of logical functions of the form of:
if ($bits128 & $mask128) {...input: 128 bit IPv6 stringreturns: true if any bits are present
- •
-
$bitsXn= shiftleft($bits128,$n);input: 128 bit string variable,number of shifts [optional]returns: bits X n shiftsNOTE: input bits are returnedif $n is not specified
- •
-
addconst($ipv6naddr,$signed_32con);
Add a signed constant to a 128 bit string variable.
input: 128 bit IPv6 string,signed 32 bit integerreturns: scalar carryarray (carry, result)
- •
-
add128($ipv6naddr1,$ipv6naddr2);
Add two 128 bit string variables.
input: 128 bit string var1,128 bit string var2returns: scalar carryarray (carry, result)
- •
-
sub128($ipv6naddr1,$ipv6naddr2);
Subtract two 128 bit string variables.
input: 128 bit string var1,128 bit string var2returns: scalar carryarray (carry, result)Note: The carry from this operation is the result of adding the one's complement of ARG2 +1 to the ARG1. It is logically NOT borrow.
i.e. if ARG1 >= ARG2 then carry = 1or if ARG1 < ARG2 then carry = 0
- •
-
($spurious,$cidr) = notcontiguous($mask128);
This function counts the bit positions remaining in the mask when the rightmost '0's are removed.
input: 128 bit netmaskreturns true if there are spuriouszero bits remaining in themask, false if the mask iscontiguous one's,128 bit cidr
- •
-
$ipv6naddr= ipv4to6($netaddr);Convert an ipv4 network address into an ipv6 network address.
input: 32 bit network addressreturns: 128 bit network address
- •
-
$ipv6naddr= mask4to6($netaddr);Convert an ipv4 netowrk address into an ipv6 network mask.
input: 32 bit network/mask addressreturns: 128 bit network/mask addressNOTE: returns the high 96 bits as one's
- •
-
$ipv6naddr= ipanyto6($netaddr);Similar to ipv4to6 except that this function takes either an IPv4 or IPv6 input and always returns a 128 bit IPv6 network address.
input: 32 or 128 bit network addressreturns: 128 bit network address
- •
-
$ipv6naddr= maskanyto6($netaddr);Similar to mask4to6 except that this function takes either an IPv4 or IPv6 netmask and always returns a 128 bit IPv6 netmask.
input: 32 or 128 bit network maskreturns: 128 bit network mask
- •
-
$netaddr= ipv6to4($pv6naddr);Truncate the upper 96 bits of a 128 bit address and return the lower 32 bits. Returns an IPv4 address as returned by inet_aton.
input: 128 bit network addressreturns: 32 bit inet_aton network address
- •
-
$bcdtext= bin2bcd($bits128);Convert a 128 bit binary string into binary coded decimal text digits.
input: 128 bit string variablereturns: string of bcd text digits
- •
-
$bits128= bcd2bin($bcdtxt);Convert a bcd text string to 128 bit string variable
input: string of bcd text digitsreturns: 128 bit string variable
Export_ok
hasbitsshiftleftaddconstadd128sub128notcontiguousipv4to6mask4to6ipanyto6maskanyto6ipv6to4bin2bcdbcd2bincomp128bin2bcdnbcdn2txtbcdn2binsimple_packthreads
Releases
10 releases since Debian 5.0 (Lenny); the text changed 9 times.