Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Splitting IP ranges depending on overlap conditions

by eXile (Priest)
on Apr 14, 2006 at 15:26 UTC ( #543373=note: print w/ replies, xml ) Need Help??


in reply to Splitting IP ranges depending on overlap conditions

I'm not aware of a CPAN module that can do this.

You could convert your dotted-quad IP-addresses to integers, so you can do some simple math with them:

if ( $ip =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ ) { $number = $1 >> 24 + $2 >> 16 + $3 >> 8 + $4 }


Comment on Re: Splitting IP ranges depending on overlap conditions
Download Code
Re^2: Splitting IP ranges depending on overlap conditions
by fishbot_v2 (Chaplain) on Apr 14, 2006 at 17:49 UTC

    TMTOWTDI, and I normally do this sort of thing:

    use strict; use warnings; use Socket qw{ inet_aton inet_ntoa }; sub ip_to_num { unpack( 'N', inet_aton( shift )); } sub ip_to_str { inet_ntoa( pack( 'N', shift )); } sub ip_plus { ip_to_str( ip_to_num( $_[0] ) + $_[1] ); } sub ip_minus { ip_plus( $_[0], -$_[1] ); } my $dotted_quad = '10.198.9.2'; print ip_plus( $dotted_quad, 290 ), "\n"; print ip_minus( $dotted_quad, 3 ), "\n"; __END__ 10.198.10.36 10.198.8.255

    In the OPs case, he only needs to add 1 and subtract 1. Again, all of this craps out on IPv6. I suspect that isn't a concern yet.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://543373]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (16)
As of 2015-07-02 13:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (39 votes), past polls