#!/bin/sh

# ident "@(#)dptfwchk 1.4     01/03/28 SMI"

# SRC/P Firmware Revision Check script
# Copyright (c) 2000 by Sun Microsystems, Inc.
# All rights reserved.
#

TAG=dptelog
NEED_WARNING=0

/usr/sbin/modinfo | grep dpti2o >/dev/null 2>&1
if test $? != "0"
then
	exit 0
fi

if test -f /opt/SUNWhwrdg/3754*.sum
then
	cd /opt/SUNWhwrdg
else
	exit 0
fi

PATCH_FW=`/usr/bin/cat 3754*.sum | awk '{print $3}'`

PATCH_FIRMWARE=`echo $PATCH_FW | sed 's/3754//' | sed 's/.ima//' | sed 's/.fwi//' | sed 's/sm/SM/' | sed 's/a/A/g' | sed 's/b/B/g' | sed 's/c/C/g' | sed 's/d/D/g' | sed 's/e/E/g' | sed 's/f/F/g'`

logit()
{
	# This should send it to /var/adm/messages
	logger -p daemon.notice -t $TAG $1

	# This should send it to /dev/console
	logger -p auth.notice -t $TAG $1
}

logfile()
{
	# This should send it to /var/adm/messages
	logger -p daemon.notice -t $TAG -f $1

	# This should send it to /dev/console
	logger -p auth.notice -t $TAG -f $1
}

#
# Gross check to see if old firmware has been booted recently.
#
if test -f /var/adm/messages
then
	grep "DPT     PM375.* FW:" /var/adm/messages | sed 's/^.*FW: //' > /tmp/msgs.list
	if test $? = "0"
	then
		for i in `cat /tmp/msgs.list`
		do
			THIS_REV=`echo $i | sed 's/^.* FW: //'`
			if test $THIS_REV != $PATCH_FIRMWARE ; then

				NEED_WARNING=1
		
				break
			fi
		done
	fi
fi

if [ "$NEED_WARNING" = "0" ] ; then
	exit 0
fi

NEED_WARNING=0

rm -f /tmp/controllers.out /tmp/ctrl_fw.list /tmp/fw.list /tmp/msgs.list /tmp/srcpwarn.out

/opt/SUNWhwrdg/dptutil -L controller > /tmp/controllers.out

grep "^d" /tmp/controllers.out > /tmp/ctrl_fw.list
if test $? != "0"
then
	logit "Could not determine SRC/P controller firmware level."
	exit 0
fi

cat /tmp/ctrl_fw.list | sed -g s/--/\ -/ | awk '{print $8}' >/tmp/fw.list
for i in `cat /tmp/fw.list`
do
	if test $i != $PATCH_FIRMWARE ; then

		NEED_WARNING=1
		
		break
	fi
done

if [ "$NEED_WARNING" != "0" -a "$PATCH_FIRMWARE" != "0" ] ; then
	logit "SRC/P Controller Firmware (FW) should be at Revision \"$PATCH_FIRMWARE\" or greater."

	echo "Installed SRC/P RAID Controllers:" > /tmp/srcpwarn.out

	cat /tmp/controllers.out >> /tmp/srcpwarn.out

	echo "Flash SRC/P Controller(s) with \"/opt/SUNWhwrdg/dpt_flashupdate\"" >> /tmp/srcpwarn.out

	logfile /tmp/srcpwarn.out
else
	logit "SRC/P firmware is at proper revision ($PATCH_FIRMWARE)."
fi

rm -f /tmp/controllers.out /tmp/ctrl_fw.list /tmp/fw.list /tmp/msgs.list /tmp/srcpwarn.out

