Blame scripts/ibdiscover.pl

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