diff options
Diffstat (limited to 'extras/tools/lldp/draw-neighbors.pl')
-rwxr-xr-x | extras/tools/lldp/draw-neighbors.pl | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/extras/tools/lldp/draw-neighbors.pl b/extras/tools/lldp/draw-neighbors.pl index 0a3f9d0..562e34e 100755 --- a/extras/tools/lldp/draw-neighbors.pl +++ b/extras/tools/lldp/draw-neighbors.pl @@ -12,17 +12,46 @@ while (<STDIN>) { my %assets = %{JSON::XS::decode_json($in)}; my %map = %{$assets{hood}}; my %map2 = %{$assets{extended}}; +my %map3 = %{$assets{lldpmap}}; print "strict graph network {\n"; -while (my ($key, $value) = each %map) { - print_tree ($key,0,undef); +if ($full ne "lldp") { + while (my ($key, $value) = each %map) { + print_tree ($key,0,undef); + } + if ($full eq "full") { + while (my ($key, $value) = each %map2) { + print_tree2 ($key,0,undef); + } + } +} else { + while (my ($key, $value) = each %map3) { + print_tree3 ($key, 0, undef); + } } -if ($full eq "full") { -while (my ($key, $value) = each %map2) { - print_tree2 ($key,0,undef); -}} print "}\n"; +sub print_tree3 +{ + my ($id,$indent,$parent,$max) = @_; + my $name = $id; + if (defined($map3{$id}{sysName}) and $map3{$id}{sysName} ne "") { + $name = $map3{$id}{sysName}; + } + if ($indent > 50) { + die "Possible loop detected."; + } + print " \"$name\" -- {"; + my @n; + while (my ($key, $value) = each %{$map3{$id}{peers}}) { + my $peer = $key; + if (defined($map3{$key}{sysName}) and $map3{$key}{sysName} ne "") { + $peer = $map3{$key}{sysName}; + } + push @n, "\"$peer\""; + } + print join(",",@n) . "};\n"; +} sub print_tree { my ($name,$indent,$parent,$max) = @_; |