#!/bin/sh

IBPATH=${IBPATH:-@IBSCRIPTPATH@}

usage() {
	echo Usage: `basename $0` "[-h] [-b] [-v] [-N | -nocolor]"\
	    "[<topology-file> | -C ca_name -P ca_port -t(imeout) timeout_ms]"
	exit 255
}

user_abort() {
	echo "Aborted"
	exit 1
}

trap user_abort SIGINT

gflags=""
verbose=""
brief=""
v=0
ntype=""
nodeguid=""
topofile=""
ca_info=""

while [ "$1" ]; do
	case $1 in
	-h)
		usage
		;;
	-N|-nocolor)
		gflags=-N
		;;
	-v)
		verbose=-v
		brief=""
		v=1
		;;
	-b)
		brief=-b
		verbose=""
		;;
	-P | -C | -t | -timeout)
		case $2 in
		-*)
			usage
			;;
		esac
		if [ x$2 = x ] ; then
			usage
		fi
		ca_info="$ca_info $1 $2"
		shift
		;;
	-*)
		usage
		;;
	*)
		if [ "$topofile" ]; then
			usage
		fi
		topofile="$1"
		;;
	esac
	shift
done

if [ "$topofile" ]; then
	netcmd="cat $topofile"
else
	netcmd="$IBPATH/ibnetdiscover $ca_info"
fi

text="`eval $netcmd`"
rv=$?
echo "$text" | awk '
BEGIN {
	ne=0
}
function check_node(lid, port)
{
	if (system("'$IBPATH'/ibchecknode -S '"$ca_info"' '$gflags' '$verbose' " lid)) {
		ne++
		print "\n# " ntype ": nodeguid 0x" nodeguid " failed"
		return 1;
	}
	if (system("'$IBPATH'/ibcheckerrs -S '"$ca_info"' '$gflags' '$verbose' '$brief' " lid " " port))
		return 2;
	return 0;
}

/^Ca/ || /^Switch/ || /^Rt/ {
			nnodes++
			ntype=$1; nodeguid=substr($3, 4, 16); ports=$2
			if ('$v')
				print "\n# Checking " ntype ": nodeguid 0x" nodeguid

			err = 0;
			if (ntype != "Switch")
				next

			lid = substr($0, index($0, "port 0 lid ") + 11)
			lid = substr(lid, 1, index(lid, " ") - 1)
			err = check_node(lid, 255)
		}
/^\[/	{
		nports++
		port = $1
		sub("\\(.*\\)", "", port)
		gsub("[\\[\\]]", "", port)
		if (ntype != "Switch") {
			lid = substr($0, index($0, " lid ") + 5)
			lid = substr(lid, 1, index(lid, " ") - 1)
			if (check_node(lid, port) == 2)
				pcnterr++;
		} else if (err &&
			   system("'$IBPATH'/ibcheckerrs -S '"$ca_info"' '$gflags' '$verbose' '$brief' " lid " " port))
			pcnterr++;
}

/^ib/	{print $0; next}
/ibpanic:/	{print $0}
/ibwarn:/	{print $0}
/iberror:/	{print $0}

END {
	printf "\n*** WARNING ***: this command is deprecated; Please use \"ibqueryerrors\""
	printf "\n## Summary: %d nodes checked, %d bad nodes found\n", nnodes, ne
	printf "##          %d ports checked, %d ports have errors beyond threshold\n", nports, pcnterr
	exit (ne + pcnterr)
}
'
exit $rv
