Blame scripts/ibclearcounters

Packit db064d
#!/bin/sh
Packit db064d
Packit db064d
IBPATH=${IBPATH:-/usr/local/sbin}
Packit db064d
Packit db064d
usage() {
Packit db064d
	echo Usage: `basename $0` "[-h] [<topology-file>" \
Packit db064d
	    "| -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
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
	-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
Packit db064d
function clear_counters(lid)
Packit db064d
{
Packit db064d
	if (system("'$IBPATH'/perfquery'"$ca_info"' '$gflags' -R -a " lid))
Packit db064d
		nodeerr++
Packit db064d
}
Packit db064d
Packit db064d
function clear_port_counters(lid, port)
Packit db064d
{
Packit db064d
	if (system("'$IBPATH'/perfquery'"$ca_info"' '$gflags' -R " lid " " port))
Packit db064d
		nodeerr++
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 (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
			clear_counters(lid)
Packit db064d
		}
Packit db064d
Packit db064d
/^\[/   {
Packit db064d
			port = $1
Packit db064d
			sub("\\(.*\\)", "", port)
Packit db064d
			gsub("[\\[\\]]", "", port)
Packit db064d
			if (ntype != "Switch") {
Packit db064d
				lid = substr($0, index($0, " lid ") + 5)
Packit db064d
				lid = substr(lid, 1, index(lid, " ") - 1)
Packit db064d
				clear_port_counters(lid, port)
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; Please use \"ibqueryerrors -K\"\n"
Packit db064d
	printf "\n## Summary: %d nodes cleared %d errors\n", nnodes, nodeerr
Packit db064d
}
Packit db064d
'
Packit db064d
exit $rv