added -A for ACLs in SELinux
[sysadmin-cookbook] / recepies / netpipe-tcp / np2graphviz.pl
index e877e6e..8ea75f8 100755 (executable)
@@ -22,11 +22,20 @@ foreach my $file ( glob '*/*.np' ) {
 
        my $len = int($speed / 100);
 
-       $graph->{ qq|"$from" -> "$to"| } = {
-               size => $size,
-               speed => $speed,
-               rtt => $rtt,
-       };
+       my $rev = qq|"$to" -> "$from"|;
+
+       # make edge bi-directional if speed difference is less then 10%
+       if ( $graph->{$rev} && abs($graph->{$rev}->{speed}->[0] - $speed) < ($speed/10) ) {
+               $graph->{$rev}->{speed}->[1] = int($speed);
+               $graph->{$rev}->{dir} = 'both';
+       } else {
+               $graph->{ qq|"$from" -> "$to"| } = {
+                       size => $size,
+                       speed => [ int($speed) ],
+                       rtt => $rtt,
+                       dir => 'forward',
+               };
+       }
 
        $min ||= $speed;
        $min = $speed if $speed < $min;
@@ -43,14 +52,19 @@ digraph "netpipe" {
 |,
 join("\n", map {
        my $node = $_;
-       my $speed = $graph->{$_}->{speed};
+       my @speed = @{ $graph->{$node}->{speed} };
+       my $speed = 0;
+       $speed += $_ foreach @speed;
+       $speed /= $#speed + 1;
        my $c = 'ff0000';
-       $c = '00ff00' if ( $speed /  100 ) > 1;
+       $c = '00ff00' if ( $speed /  100 ) > 5;
        $c = '0000ff' if ( $speed / 1000 ) > 1;
        $c = '8888ff' if ( $speed / 1000 ) > 2;
-       my $label = $speed;
-       $label =~ s/\.\d+//;
-       qq|$node [ label="$label",color="#$c",len=$speed ]|;
+       my $label = qq|labelfontsize=10,weight=$speed,|;
+       $label .= qq|headlabel=$speed[0],| if $speed[0];
+       $label .= qq|taillabel=$speed[1],| if $speed[1];
+       $label .= qq|style=dashed,| if $graph->{$node}->{dir} eq 'both';
+       qq|$node [ $label color="#$c",dir=$graph->{$node}->{dir} ]|;
 } keys %$graph),
 qq|
 }