Your question is about the data representation of the network topology. The CPAN Graph::Base module defines methods for representing networks efficiently. Given one of your @ip_addrs arrays,
use Graph; my $G = Graph->new(); # Create Graph object with listed verteces # Obtain a route in @ip_addrs, then: add_chain $G, @ip_addrs; # lather, rinse, and repeat sub add_chain { my $g = shift; # add_edge produces any vertices not already present $g->add_edge($_[$_-1],$_[$_]) for 1..scalar(@_)-1; }
There are many advantages to this. Graph takes care of nasties like cyclic graphs, which would give you trouble in a hand-rolled representation. It has methods like neighbors($vertex), successors($vertex), predecessors($vertex), and many more ('man Graph::Base'). Edges can be weighted by, say, bandwidth to provide support for network traffic analysis.
Hope this helps.
Update: Graph::Base is under the hood of the Graph module. I cited Graph::Base rather than Graph because cpan search on 'Graph' turns up lots of irrelevancies. Here's a link to the tarball, or (with CPAN.pm): $ perl -MCPAN -e 'shell' cpan> install Graph Re: Masem's response, mr_linux wants to scan a 192.168.x/23 network, about 29 IP's. That net may be sparse enough for a simple homegrown representation, but I like the painlessness and power of the Graph module.
After Compline,
Zaxo
In reply to Re: Network topology mapping
by Zaxo
in thread Network topology mapping
by mr_linux
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |