The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

package Data::IPV4::Range::Parse;

NAME

Data::IPV4::Range::Parse - Perl extension parsing ipv4 ranges

SYNOPSIS

  use Data::IPV4::Range::Parse;
  ($stat_int,$end_int)=auto_parse_ipv4_range('10/24');
  ($stat_int,$end_int)=auto_parse_ipv4_range('10.0.0 - 11');
  ($stat_int,$end_int)=auto_parse_ipv4_range('9');

  unless(($stat_int,$end_int)=auto_parse_ipv4_range('10/')) {
    print "failed to parse 10/\n";
  }

DESCRIPTION

Simple Interface for getting start and ending address of ranges as integers.

EXPORT

:CONSTANTS

 ALL_BITS
 MAX_CIDR
 MIN_CIDR

:PARSE_IP

 int_to_ip
 ip_to_int

:SORT

 sort_quad
 sort_notations

:COMPUTE_FROM_INT

 broadcast_int
 base_int
 size_from_mask
 hostmask
 cidr_to_int

:PARSE_RANGE

 parse_ipv4_cidr
 parse_ipv4_range
 parse_ipv4_ip
 auto_parse_ipv4_range

CONSTANTS

This section explains the Exportable constants.

  • ALL_BITS

    Same as 0xffffffff

  • MAX_CIDR

    Same as 32

  • MIN_CIDR

    Same as 0

PARSE_IP

This section covers the parse ipv4 address functions.

  • my $int=ip_to_int('10.0.0.1');

  • my $int=Data::IPV4::Range::Parse->ip_to_int('10.0.0.1');

    Returns a perl usable integer ipv4 representation of the ipv4 quad notation.

  • my $ip=int_to_ip($int);

  • my $ip=Data::IPV4::Range::Parse->int_to_ip($int);

    Returns the integer formated in the standard quad notation.

SORT

This section covers the Exportable sort functions.

  • my @ips=sort sort_quad @usorted_ips

    Low level sort function used to sort ipv4 addresses in quad notation.

  • my @ranges=sort sort_notations @unsorted_notations

    Low level sort function used to sort ipv4 ranges. This function will croak if a range cannot be parsed.

COMPUTE_FROM_INT

This section covers the Exportable integer computation functions

  • my $broadcast_int=broadcast_int($ip_int,$mask_int);

  • my $broadcast_int=Data::IPV4::Range::Parse->broadcast_int( $ip_int, $mask_int );

    Returns an integer representing the broadcast address from 2 integers.

  • my $base_int=base_int($ip_int,$mask_int);

  • my $base_int=Data::IPV4::Range::Parse->base_int( $ip_int, $mask_int );

    Returns an integer representing the base address from 2 integers.

  • my $size=size_from_mask($mask_int)

  • my $size=Data::IPV4::Range::Parse->size_from_mask($mask_int)

    Returns an integer representing the size of a network.

  • my $hostmask_int=hostmask($ip_int,$mask_int);

  • my $hostmask_int=Data::IPV4::Range::Parse->hostmask( $ip_int, $mask_int );

    Returns an integer representing the hostmask from 2 integers.

  • my $mask_int=cidr_to_int(0-32);

  • my $mask_int=Data::IPV4::Range::Parse->cidr_to_int( 0-32 );

    Returns an integer representing netmask from a given cidr size.

PARSE_RANGE

This section covers the Exportable range parser functions. An empty set is returned when the range cannot be parsed.

  • my ($start,$end)=parse_ipv4_cidr('10/23');

  • my ($start,$end)=Data::IPV4::Range::Parse->parse_ipv4_cidr( '10/23' );

    Returns 2 integers representing the base and broadcast of a CIDR.

  • my ($start,$end)=parse_ipv4_range( '10 - 11' );

  • my ($start,$end)=Data::IPV4::Range::Parse->parse_ipv4_range( '10 - 11' );

    Returns 2 integers representing the start and end of a ip range.

  • my ($start,$end)=parse_ipv4_ip('10.0.0.1')

  • my ($start,$end)=Data::IPV4::Range::Parse->parse_ipv4_ip( '10.0.0.1' )

    Returns 2 integers representing the input ip as a /32 range

  • my ($start,$end)=auto_parse_ipv4_range('10');

  • my ($start,$end)= Data::IPV4::Range::Parse->auto_parse_ipv4_range( '10' );

    Attempts to figure out what type of range notation and calls the corresponding parse_ipv4_xxx function, returning an empty set on failure or 2 integers representing the start and end of the range.

AUTHOR

Michael Shipper

SourceForge Project

As of version 1.04 the Project has been moved to SourceForge.net

Data IPV4 Range Parse

COPYRIGHT AND LICENSE

Copyright (C) 2010 by Michael Shipper

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available.