NetAddr::IP::UtilPP.3pm

Langue: en

Version: 2008-12-09 (fedora - 01/12/10)

Section: 3 (Bibliothèques de fonctions)

NAME

NetAddr::IP::UtilPP -- pure Perl functions for NetAddr::IP::Util

SYNOPSIS

   use NetAddr::IP::UtilPP qw(
         hasbits
         isIPv4
         shiftleft
         addconst
         add128
         sub128
         notcontiguous
         ipv4to6
         mask4to6
         ipanyto6
         maskanyto6
         ipv6to4
         bin2bcd
         bcd2bin
   );
 
   use NetAddr::IP::UtilPP qw(:all)
 
   $rv = hasbits($bits128);
   $rv = isIPv4($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);
 
 

DESCRIPTION

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 string
   returns:      true if any bits are present
 
 
*
$rv = isIPv4($bits128);

This function returns true if there are no on bits present in the IPv6 portion of the 128 bit string and false otherwise.

*
$bitsXn = shiftleft($bits128,$n);
   input:        128 bit string variable,
                 number of shifts [optional]
   returns:      bits X n shifts
 
   NOTE: input bits are returned
         if $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 integer
   returns:  scalar      carry
             array       (carry, result)
 
 
*
add128($ipv6naddr1,$ipv6naddr2);

Add two 128 bit string variables.

   input:        128 bit string var1,
                 128 bit string var2
   returns:  scalar      carry
             array       (carry, result)
 
 
*
sub128($ipv6naddr1,$ipv6naddr2);

Subtract two 128 bit string variables.

   input:        128 bit string var1,
                 128 bit string var2
   returns:  scalar      carry
             array       (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 = 1
         or      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 netmask
         returns true if there are spurious
                     zero bits remaining in the
                     mask, false if the mask is
                     contiguous one's,
                 128 bit cidr
 
 
*
$ipv6naddr = ipv4to6($netaddr);

Convert an ipv4 network address into an ipv6 network address.

   input:        32 bit network address
   returns:      128 bit network address
 
 
*
$ipv6naddr = mask4to6($netaddr);

Convert an ipv4 netowrk address into an ipv6 network mask.

   input:        32 bit network/mask address
   returns:      128 bit network/mask address
 
 

NOTE: 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 address
   returns:      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 mask
   returns:      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 address
   returns:      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 variable
   returns:      string of bcd text digits
 
 
*
$bits128 = bcd2bin($bcdtxt);

Convert a bcd text string to 128 bit string variable

   input:        string of bcd text digits
   returns:      128 bit string variable
 
 

EXPORT_OK

         hasbits
         isIPv4
         shiftleft
         addconst
         add128
         sub128
         notcontiguous
         ipv4to6
         mask4to6
         ipanyto6
         maskanyto6
         ipv6to4
         bin2bcd
         bcd2bin
         comp128
         bin2bcdn
         bcdn2txt
         bcdn2bin
         simple_pack
         threads
 
 

AUTHOR

Michael Robinton <michael@bizsystems.com> Copyright 2006 - 2008, Michael Robinton <michael@bizsystems.com>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (except as noted otherwise in individuals sub modules) 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

AUTHOR

Michael Robinton <michael@bizsystems.com>