diff options
-rwxr-xr-x | extras/tools/lldp/draw-neighbors.pl | 9 | ||||
-rwxr-xr-x | extras/tools/lldp/lolwhat.pl | 22 |
2 files changed, 27 insertions, 4 deletions
diff --git a/extras/tools/lldp/draw-neighbors.pl b/extras/tools/lldp/draw-neighbors.pl index a6540ed..6535a3c 100755 --- a/extras/tools/lldp/draw-neighbors.pl +++ b/extras/tools/lldp/draw-neighbors.pl @@ -54,8 +54,10 @@ sub print_tree print " \"$name\" -- {"; my @n; while(my ($peer, $garbage) = each %{$peermap{$ip}}) { - $peer = get_name($peer); - push @n, "\"$peer\""; + my $name = get_name($peer); + if ($name ne $peer or $full eq "full") { + push @n, "\"$name\""; + } } print join(",",@n) . "};\n"; } @@ -68,6 +70,9 @@ sub get_name { my $name = $ip; if (defined($assets{snmpresults}{$ip}{sysName})) { $name = $assets{snmpresults}{$ip}{sysName}; + if ($name eq "") { + $name = $assets{snmpresults}{$ip}{lldpLocChassisId} || $ip; + } return $name; } return $name; diff --git a/extras/tools/lldp/lolwhat.pl b/extras/tools/lldp/lolwhat.pl index 455b4ff..86a5880 100755 --- a/extras/tools/lldp/lolwhat.pl +++ b/extras/tools/lldp/lolwhat.pl @@ -76,6 +76,7 @@ while (scalar keys %lldppeers > scalar @chassis_ids_checked) { } mylog("Probing complete. Trying to make road in the velling"); +pad_snmp_results(); deduplicate(); populate_lldpmap(); @@ -492,8 +493,9 @@ sub populate_lldpmap sub populate_ipmap { - mylog("Populate ipmap"); + mylog("Populating ipmap"); my @conflicts = (); + logindent(1); while (my ($ip, $value) = each %snmpresults) { my $sysname = $value->{sysName}; if (defined($ipmap{$ip})) { @@ -504,7 +506,7 @@ sub populate_ipmap if (!defined($localip)) { next; } elsif (defined($ipmap{$localip}) and $ipmap{$localip} ne $ip) { - mylog("IP conflict: $localip ($ipmap{$localip} vs $ip)"); + mylog("IP conflict: $localip found multiple places ($ipmap{$localip} vs $ip)"); push @conflicts, $localip; } $ipmap{$localip} = $ip; @@ -514,8 +516,24 @@ sub populate_ipmap foreach my $contested (@conflicts) { delete $ipmap{$contested}; } + logindent(-1); } +sub pad_snmp_results +{ + mylog("Checking if there are peers from LLDP with no basic SNMP info"); + logindent(1); + while (my ($id, $value) = each %lldppeers) { + if (!defined($value->{ip}) or defined($snmpresults{$value->{ip}}{sysName})) { + next; + } + mylog("Adding basic info for $value->{ip} / $value->{name} to snmp results"); + $snmpresults{$value->{ip}}{sysName} = $value->{name}; + $snmpresults{$value->{ip}}{lldpLocChassisId} = $value->{id}; + push @{$snmpresults{$value->{ip}}{ips}}, $value->{ip}; + } + logindent(-1); +} sub populate_peermap { mylog("Populate layer3 peermap"); |