Blame scripts/ibcheckwidth.in

Packit db064d
#!/bin/sh
Packit db064d
Packit db064d
IBPATH=${IBPATH:-@IBSCRIPTPATH@}
Packit db064d
Packit db064d
usage() {
Packit db064d
	echo Usage: `basename $0` "[-h] [-v] [-N | -nocolor]" \
Packit db064d
	    "[<topology-file> \| -C ca_name -P ca_port -t(imeout) timeout_ms]"
Packit db064d
	exit -1
Packit db064d
}
Packit db064d
Packit db064d
user_abort() {
Packit db064d
	echo "Aborted"
Packit db064d
	exit 1
Packit db064d
}
Packit db064d
Packit db064d
trap user_abort SIGINT
Packit db064d
Packit db064d
gflags=""
Packit db064d
verbose=""
Packit db064d
v=0
Packit db064d
ntype=""
Packit db064d
nodeguid=""
Packit db064d
oldlid=""
Packit db064d
topofile=""
Packit db064d
ca_info=""
Packit db064d
Packit db064d
while [ "$1" ]; do
Packit db064d
	case $1 in
Packit db064d
	-h)
Packit db064d
		usage
Packit db064d
		;;
Packit db064d
	-N|-nocolor)
Packit db064d
		gflags=-N
Packit db064d
		;;
Packit db064d
	-v)
Packit db064d
		verbose="-v"
Packit db064d
		v=1
Packit db064d
		;;
Packit db064d
	-P | -C | -t | -timeout)
Packit db064d
		case $2 in
Packit db064d
		-*)
Packit db064d
			usage
Packit db064d
			;;
Packit db064d
		esac
Packit db064d
		if [ x$2 = x ] ; then
Packit db064d
			usage
Packit db064d
		fi
Packit db064d
		ca_info="$ca_info $1 $2"
Packit db064d
		shift
Packit db064d
		;;
Packit db064d
	-*)
Packit db064d
		usage
Packit db064d
		;;
Packit db064d
	*)
Packit db064d
		if [ "$topofile" ]; then
Packit db064d
			usage
Packit db064d
		fi
Packit db064d
		topofile="$1"
Packit db064d
		;;
Packit db064d
	esac
Packit db064d
	shift
Packit db064d
done
Packit db064d
Packit db064d
if [ "$topofile" ]; then
Packit db064d
	netcmd="cat $topofile"
Packit db064d
else
Packit db064d
	netcmd="$IBPATH/ibnetdiscover $ca_info"
Packit db064d
fi
Packit db064d
Packit db064d
text="`eval $netcmd`"
Packit db064d
rv=$?
Packit db064d
echo "$text" | awk '
Packit db064d
BEGIN {
Packit db064d
	ne=0
Packit db064d
	pe=0
Packit db064d
}
Packit db064d
function check_node(lid)
Packit db064d
{
Packit db064d
	nodechecked=1
Packit db064d
	if (system("'$IBPATH'/ibchecknode -S '"$ca_info"' '$gflags' '$verbose' " lid)) {
Packit db064d
		ne++
Packit db064d
		badnode=1
Packit db064d
		return
Packit db064d
	}
Packit db064d
}
Packit db064d
Packit db064d
/^Ca/ || /^Switch/ || /^Rt/ {
Packit db064d
			nnodes++
Packit db064d
			ntype=$1; nodeguid=substr($3, 4, 16); ports=$2
Packit db064d
			if ('$v')
Packit db064d
				print "\n# Checking " ntype ": nodeguid 0x" nodeguid
Packit db064d
Packit db064d
			nodechecked=0
Packit db064d
			badnode=0
Packit db064d
			if (ntype != "Switch")
Packit db064d
				next
Packit db064d
Packit db064d
			lid = substr($0, index($0, "port 0 lid ") + 11)
Packit db064d
			lid = substr(lid, 1, index(lid, " ") - 1)
Packit db064d
			check_node(lid)
Packit db064d
		}
Packit db064d
/^\[/	{
Packit db064d
		nports++
Packit db064d
		port = $1
Packit db064d
		if (!nodechecked) {
Packit db064d
			lid = substr($0, index($0, " lid ") + 5)
Packit db064d
			lid = substr(lid, 1, index(lid, " ") - 1)
Packit db064d
			check_node(lid)
Packit db064d
		}
Packit db064d
		if (badnode) {
Packit db064d
			print "\n# " ntype ": nodeguid 0x" nodeguid " failed"
Packit db064d
			next
Packit db064d
		}
Packit db064d
		sub("\\(.*\\)", "", port)
Packit db064d
		gsub("[\\[\\]]", "", port)
Packit db064d
		if (system("'$IBPATH'/ibcheckportwidth -S '"$ca_info"' '$gflags' '$verbose' " lid " " port)) {
Packit db064d
			if (!'$v' && oldlid != lid) {
Packit db064d
				print "# Checked " ntype ": nodeguid 0x" nodeguid " with failure"
Packit db064d
				oldlid = lid
Packit db064d
			}
Packit db064d
			pe++;
Packit db064d
		}
Packit db064d
}
Packit db064d
Packit db064d
/^ib/	{print $0; next}
Packit db064d
/ibpanic:/	{print $0}
Packit db064d
/ibwarn:/	{print $0}
Packit db064d
/iberror:/	{print $0}
Packit db064d
Packit db064d
END {
Packit db064d
	printf "\n*** WARNING ***: this command is deprecated\n"
Packit db064d
	printf "\n## Summary: %d nodes checked, %d bad nodes found\n", nnodes, ne
Packit db064d
	printf "##          %d ports checked, %d ports with 1x width in error found\n", nports, pe
Packit db064d
}
Packit db064d
'
Packit db064d
exit $rv