Bug fixes to discovery; add root_ip handling.

Squashed commit of the following:

commit cb6f125c73
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Apr 13 20:26:59 2013 +0100

    discover root_ip properly

commit 8228e73f5b
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Apr 13 19:47:23 2013 +0100

    better name for util package

commit 4546036f4f
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Apr 13 19:23:55 2013 +0100

    bug fixes in getting wireless info

commit 78554e5516
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Apr 13 19:07:44 2013 +0100

    refactor snmp_connect to handle versions and device classes

commit ca9edd114a
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Apr 13 15:23:52 2013 +0100

    rename discoverall to discovernew

commit 1b897e4aee
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Apr 13 14:51:06 2013 +0100

    change debug log tag for store_device

commit 8a5306e056
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Apr 13 14:50:10 2013 +0100

    rename Discover.pm to Device.pm

commit 3197e38819
Author: Oliver Gorwits <oliver@cpan.org>
Date:   Sat Apr 13 14:48:31 2013 +0100

    allow netdisco-do to do all acton
This commit is contained in:
Oliver Gorwits
2013-04-14 10:51:55 +01:00
parent 211166fa67
commit 1324b431c4
13 changed files with 172 additions and 71 deletions

View File

@@ -8,7 +8,7 @@ use Net::DNS;
use base 'Exporter';
our @EXPORT = ();
our @EXPORT_OK = qw/
hostname_from_ip
hostname_from_ip ipv4_from_hostname
/;
our %EXPORT_TAGS = (all => \@EXPORT_OK);
@@ -35,6 +35,7 @@ Returns C<undef> if no PTR record exists for the IP.
sub hostname_from_ip {
my $ip = shift;
return unless $ip;
my $res = Net::DNS::Resolver->new;
my $query = $res->search($ip);
@@ -49,5 +50,30 @@ sub hostname_from_ip {
return undef;
}
=head2 ipv4_from_hostname( $name )
Given a host name will return the first IPv4 address.
Returns C<undef> if no A record exists for the name.
=cut
sub ipv4_from_hostname {
my $name = shift;
return unless $name;
my $res = Net::DNS::Resolver->new;
my $query = $res->search($name);
if ($query) {
foreach my $rr ($query->answer) {
next unless $rr->type eq "A";
return $rr->address;
}
}
return undef;
}
1;