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 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

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 representation 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 representation 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 or 2 integers representing the start and end of the range.

AUTHOR

Michael Shipper

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.