#!/bin/sh

# $Id: chk_connect_state,v 2.1.6.4 2002/06/12 18:24:39 ptle Exp $
#ident "@(#)sraf:$RCSfile: chk_connect_state,v $	$Revision: 2.1.6.4 $"

#
# Copyright(C) 2002 VERITAS Software Corporation.  ALL RIGHTS RESERVED.
# UNPUBLISHED -- RIGHTS RESERVED UNDER THE COPYRIGHT
# LAWS OF THE UNITED STATES.  USE OF A COPYRIGHT NOTICE
# IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION
# OR DISCLOSURE.
#
# THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND
# TRADE SECRETS OF VERITAS SOFTWARE.  USE, DISCLOSURE,
# OR REPRODUCTION IS PROHIBITED WITHOUT THE PRIOR
# EXPRESS WRITTEN PERMISSION OF VERITAS SOFTWARE.
#
#               RESTRICTED RIGHTS LEGEND
# USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS
# SUBJECT TO RESTRICTIONS AS SET FORTH IN SUBPARAGRAPH
# (C) (1) (ii) OF THE RIGHTS IN TECHNICAL DATA AND
# COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013.
#               VERITAS SOFTWARE
# 1600 PLYMOUTH STREET, MOUNTAIN VIEW, CA 94043
#

#
# Filename: chk_connect_state
# 
# chk_connect_state -g <dgname> <prlink> <srlink>
#										
#

OLD_LOCALE=${LC_ALL}

progname=$0
TARGET_STR="CONNECT"
TIMEOUT=10

. ${VOLADM_LIB:-/usr/lib/vxvm/voladm.d/lib}/vxadm_lib.sh

# make sure there are three arguments

if [ $# != 4 ]
then
	export progname; ewritemsg -M  vras.mesg:2401 \
		"vradmin: INTERNAL ERROR: Incorrect number of arguments for $progname." 1>&2
	exit 1
fi

# set locale to English to check for connect state

LC_ALL=C
export LC_ALL

dgname=$2
prlink=$3
srlink=$4

retMsg=`/usr/sbin/vxprint -g ${dgname} ${prlink} | /usr/bin/grep "^rl" 2>&1`
kstate=`/usr/bin/echo ${retMsg} | /usr/bin/awk '{print $4}' 2>&1`
found=`/usr/bin/echo ${kstate} | /usr/bin/grep "${TARGET_STR}" 2>&1`

timeout=0

while [ -z "$found" -a "$timeout" -lt "$TIMEOUT" ]
do
	/usr/bin/sleep 1 
	retMsg=`/usr/sbin/vxprint -g ${dgname} ${prlink} | /usr/bin/grep "^rl" 2>&1`
	kstate=`/usr/bin/echo ${retMsg} | /usr/bin/awk '{print $4}' 2>&1`
	found=`/usr/bin/echo ${kstate} | /usr/bin/grep "${TARGET_STR}" 2>&1`
	timeout=`expr $timeout + 1`
done

if [ -z "$found" ]; then
	# reset locale to the previous one to send message back to the caller
	LC_ALL=${OLD_LOCALE}
	export LC_ALL
	export prlink; ewritemsg -M  vras.mesg:2402 \
		"vradmin: WARNING: Primary RLINK $prlink not in CONNECT state."
else
	# if secondary is paused, send message to the caller
	TARGET_STR="PAUSE"
	state=`/usr/bin/echo ${retMsg} | /usr/bin/awk '{print $7}'`
	found=`/usr/bin/echo ${state} | /usr/bin/grep "${TARGET_STR}"`
	if [ "$found" != "" ]; then
		LC_ALL=${OLD_LOCALE}
		export LC_ALL
		export srlink; ewritemsg -M  vras.mesg:2403 \
			"vradmin: WARNING: Secondary RLINK $srlink in PAUSE state."
	fi
fi

exit 0
