aboutsummaryrefslogtreecommitdiffstats
path: root/extras/tools/lldp/draw-neighbors.pl
diff options
context:
space:
mode:
Diffstat (limited to 'extras/tools/lldp/draw-neighbors.pl')
-rwxr-xr-xextras/tools/lldp/draw-neighbors.pl41
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) = @_;