|
Packit |
db064d |
#!/usr/bin/perl
|
|
Packit |
db064d |
|
|
Packit |
db064d |
printf (STDERR "*** WARNING ***; this command is deprecated;\n");
|
|
Packit |
db064d |
printf (STDERR " see ibnetdiscover cache features\n");
|
|
Packit |
db064d |
printf (STDERR " and/or iblinkinfo \"check\" features\n\n");
|
|
Packit |
db064d |
|
|
Packit |
db064d |
#
|
|
Packit |
db064d |
# Read mapfile
|
|
Packit |
db064d |
#
|
|
Packit |
db064d |
open(MAP, "< ibdiscover.map");
|
|
Packit |
db064d |
|
|
Packit |
db064d |
while (<MAP>) {
|
|
Packit |
db064d |
($pre, $port, $desc) = split /\|/;
|
|
Packit |
db064d |
$val{$pre} = $desc;
|
|
Packit |
db064d |
# print "Ack1 - $pre - $port - $desc\n";
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
close(MAP);
|
|
Packit |
db064d |
|
|
Packit |
db064d |
#
|
|
Packit |
db064d |
# Read old topo map in
|
|
Packit |
db064d |
#
|
|
Packit |
db064d |
open(TOPO, "< ibdiscover.topo");
|
|
Packit |
db064d |
$topomap = 0;
|
|
Packit |
db064d |
|
|
Packit |
db064d |
while (<TOPO>) {
|
|
Packit |
db064d |
$topomap = 1;
|
|
Packit |
db064d |
($localPort, $localGuid, $remotePort, $remoteGuid) = split /\|/;
|
|
Packit |
db064d |
chomp $remoteGuid;
|
|
Packit |
db064d |
$var = sprintf("%s|%2s|%2s|%s", $localGuid, $localPort, $remotePort,
|
|
Packit |
db064d |
$remoteGuid);
|
|
Packit |
db064d |
$topo{$var} = 1;
|
|
Packit |
db064d |
# ${$pre} = $desc;
|
|
Packit |
db064d |
# print "Ack1 - $pre - $port - $desc\n";
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
close(TOPO);
|
|
Packit |
db064d |
|
|
Packit |
db064d |
#
|
|
Packit |
db064d |
# Read stdin and output enhanced output
|
|
Packit |
db064d |
#
|
|
Packit |
db064d |
# Search and replace =0x???? with value
|
|
Packit |
db064d |
# Search and replace -000???? with value
|
|
Packit |
db064d |
|
|
Packit |
db064d |
open(TOPO2, " >ibdiscover.topo.new");
|
|
Packit |
db064d |
while (<STDIN>) {
|
|
Packit |
db064d |
($a, $b, $local, $d) = /([sh])([\s\S]*)=0x([a-f\d]*)([\s\S]*)/;
|
|
Packit |
db064d |
if ($local ne "") {
|
|
Packit |
db064d |
printf(
|
|
Packit |
db064d |
"\n%s GUID: %s %s\n",
|
|
Packit |
db064d |
($a eq "s" ? "Switch" : "Host"),
|
|
Packit |
db064d |
$local, $val{$local}
|
|
Packit |
db064d |
);
|
|
Packit |
db064d |
chomp $local;
|
|
Packit |
db064d |
$localGuid = $local;
|
|
Packit |
db064d |
} else {
|
|
Packit |
db064d |
($localPort, $type, $remoteGuid, $remotePort) =
|
|
Packit |
db064d |
/([\s\S]*)"([SH])\-000([a-f\d]*)"([\s\S]*)\n/;
|
|
Packit |
db064d |
($localPort) = $localPort =~ /\[(\d*)]/;
|
|
Packit |
db064d |
($remotePort) = $remotePort =~ /\[(\d*)]/;
|
|
Packit |
db064d |
if ($remoteGuid ne "" && $localPort ne "") {
|
|
Packit |
db064d |
printf(TOPO2 "%d|%s|%d|%s\n",
|
|
Packit |
db064d |
$localPort, $localGuid, $remotePort, $remoteGuid);
|
|
Packit |
db064d |
$var = sprintf("%s|%2s|%2s|%s",
|
|
Packit |
db064d |
$localGuid, $localPort, $remotePort, $remoteGuid);
|
|
Packit |
db064d |
$topo{$var} += 1;
|
|
Packit |
db064d |
printf(
|
|
Packit |
db064d |
"Local: %2s Remote: %2s %7s GUID: %s Location: %s\n",
|
|
Packit |
db064d |
$localPort,
|
|
Packit |
db064d |
$remotePort,
|
|
Packit |
db064d |
($type eq "H" ? "Host" : "Switch"),
|
|
Packit |
db064d |
$remoteGuid,
|
|
Packit |
db064d |
($val{$remoteGuid} ne "" ? $val{$remoteGuid} : $remoteGuid)
|
|
Packit |
db064d |
);
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
close(STDIN);
|
|
Packit |
db064d |
close(TOPO2);
|
|
Packit |
db064d |
|
|
Packit |
db064d |
printf("\nDelta change in topo (change between successive runs)\n\n");
|
|
Packit |
db064d |
|
|
Packit |
db064d |
foreach $el (keys %topo) {
|
|
Packit |
db064d |
if ($topo{$el} < 2 || $topomap == 0) {
|
|
Packit |
db064d |
($lg, $lp, $rp, $rg) = split(/\|/, $el);
|
|
Packit |
db064d |
printf(
|
|
Packit |
db064d |
"Link change: Local/Remote Port %2d/%2d Local/Remote GUID: %s/%s\n",
|
|
Packit |
db064d |
$lp, $rp, $lg, $rg);
|
|
Packit |
db064d |
printf("\tLocations: Local/Remote\n\t\t%s\n\t\t%s\n\n",
|
|
Packit |
db064d |
$val{$lg}, $val{$rg});
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
}
|
|
Packit |
db064d |
|
|
Packit |
db064d |
printf (STDERR "*** WARNING ***; this command is deprecated;\n");
|
|
Packit |
db064d |
printf (STDERR " see ibnetdiscover cache features\n");
|
|
Packit |
db064d |
printf (STDERR " and/or iblinkinfo \"check\" features\n\n");
|
|
Packit |
db064d |
|