#!/bin/sh

#
# Copyright 02/19/01 Sun Microsystems, Inc. All Rights Reserved.
#

#pragma ident  "@(#)S98cmipmpa	1.21 01/02/19 Sun Microsystems"

#
# Start/Stop CMIP MPA process
#

EXE=em_cmip                   	# Application to be started/stopped 
EXEPKG=SUNWemcpa	      	# pkg that install the executables
ECHO="/bin/gettext S98cmipmpa "
PROG=`basename $0`

#
# If the SUN Cluster and the HA packages are installed, then don't start the
# MPA at boot.  Sun Cluster will start the data service later.
#

if  pkginfo -q SUNWscr  &&  pkginfo -q SUNWemha ; then
   if [ ! -f /tmp/emha_initdone ] && [ "start" = "$1" ]; then
   # Booting: dont start
      exit 0
   fi
fi
# if $1=start_em, then we are being called from em_services
if [ "start_em" = "$1" ]; then
   # set $1 to "start'
   set start
fi

PKG_PATH=`/bin/pkgparam $EXEPKG BASEDIR 2>/dev/null`

if [ -z "$PKG_PATH" ] ; then  	# package not installed
    PKG_PATH=/opt	      	# directory could be NFS mounted
fi

PKG_PATH=${PKG_PATH}/SUNWconn/em
CMIP_MPA_PATH="$PKG_PATH/bin"	# path to em_cmip
EM_MIS_DEFAULT_HOST=`$PKG_PATH/bin/get_local_host`
EM_MIS_DEFAULT_PORT="${EM_MIS_DEFAULT_PORT:-5555}"
EM_CMIP_MPA_DEFAULT_PORT="${EM_CMIP_MPA_DEFAULT_PORT:-5557}"

# set for usage license support 
TMP_LM_LICENSE_FILE=""
LICENSE_PATH=/etc/opt/licenses
for LICENSE_FILE in $LICENSE_PATH/licenses_combined $LICENSE_PATH/ssp.em.lic* $LICENSE_PATH/osinmg9.0.lic*
do
    if [ -f "$LICENSE_FILE" ]; then
        if [ ! -z "$TMP_LM_LICENSE_FILE" ]; then
            TMP_LM_LICENSE_FILE="$TMP_LM_LICENSE_FILE:$LICENSE_FILE"
        else
            TMP_LM_LICENSE_FILE="$LICENSE_FILE"
        fi
    fi
done

if [ -f  $LICENSE_PATH/osinmg9.0.loc ]; then
  for LICENSE_FILE in  `cat $LICENSE_PATH/osinmg9.0.loc`/osinmg9.0.lic* 
  do
    if [ -f "$LICENSE_FILE" ]; then
        if [ ! -z "$TMP_LM_LICENSE_FILE" ]; then
            TMP_LM_LICENSE_FILE="$TMP_LM_LICENSE_FILE:$LICENSE_FILE"
        else
            TMP_LM_LICENSE_FILE="$LICENSE_FILE"
        fi
    fi
  done
fi

if [ ! -z "$TMP_LM_LICENSE_FILE" ]; then
    LM_LICENSE_FILE=$TMP_LM_LICENSE_FILE:$LM_LICENSE_FILE
fi

# 4086332 export PKG_PATH so can use to force a consistent running directory
export EM_MIS_DEFAULT_HOST EM_MIS_DEFAULT_PORT EM_CMIP_MPA_DEFAULT_PORT LM_LICENSE_FILE PKG_PATH

#
# set up LD_LIBRARY_PATH for CMIP Stack
#

OSI_EXEPKG=SUNWomgtb    	# pkg that install the executables

#
# if the pkg is installed, ask for  the libraries
#

BASEDIR=`/bin/pkgparam $OSI_EXEPKG BASEDIR 2>/dev/null`

if [ -z "$BASEDIR" ]; then    	# pkg not installed
    BASEDIR=/opt    		# set default. Maybe the dir is nfs mounted
fi

OSI_PKG_PATH=$BASEDIR/SUNWconn/lib

if [ ! -d $OSI_PKG_PATH ]; then
    $ECHO "$PROG: $BASEDIR/SUNWconn/lib "
    $ECHO 'does not exist: CMIP Stack is not installed?\n'
    exit 1
fi

LD_LIBRARY_PATH=$PKG_PATH/lib:$OSI_PKG_PATH:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

trap "$ECHO 'interrupted\n' ; exit 1" INT QUIT

#
# Check whether file system(s) is/are available 
#

if [ ! -d /usr/bin ]; then			
    $ECHO "$PROG"
    $ECHO ': /usr not mounted?\n'
    exit 1
fi

#
# Check whether lib package is installed
#

if [ ! -f $PKG_PATH/lib/libpmi.so ]; then			
    $ECHO "$PROG"
    $ECHO ': em_cmip: not started. The SUNWemalb package is not installed.\n'
    exit 1
fi

PATH="/usr/bin:/bin:/usr/sbin:$CMIP_MPA_PATH:" ; export PATH 

if [ ! -d $CMIP_MPA_PATH ]; then			
    $ECHO "$PROG: $CMIP_MPA_PATH "
    $ECHO 'not mounted?\n'
    exit 1
fi

#
# if CMIP is not installed on the system exit quitely
#

if [ ! -f /etc/SUNWconn/OSIROOT -a ! -f /etc/opt/SUNWconn/OSIROOT ]; then
    exit 1
fi

#
# if SUNLINK stack or RFC1006 driver is not installed, exit quietly
#

if pkginfo -q SUNWcosia ; then
    OSISTACK=TRUE
else 
    if  pkginfo -q SUNWrk6 ; then
	OSISTACK=FALSE
    else
	$ECHO "$PROG"
	$ECHO ': the SUNLINK stack or the RFC1006 driver is not installed?\n'
	exit 1
    fi
fi

case "$1" in
    'start')

	if [ ! -f $CMIP_MPA_PATH/em_cmip ]; then
	    $ECHO "$PROG"
	    $ECHO ": Can't find "
	    $ECHO "<$CMIP_MPA_PATH/em_cmip>\\n" 
	    exit 1
	fi

	if [ ! -x $CMIP_MPA_PATH/em_cmip ]; then
	    $ECHO "$PROG"
	    $ECHO ": Can't execute "
	    $ECHO "<$CMIP_MPA_PATH/em_cmip>\\n" 
	    exit 1
	fi

	if [ $OSISTACK = TRUE ] ; then
	    pid=`ps -e | grep osinetd | sed -e 's/^  *//' -e 's/ .*//'`
	    if [ -z "$pid" ]; then # osinetd is not running. Have to start it 
		/etc/rc2.d/S97osimcs stop
		/etc/rc2.d/S90osinet start
		/etc/rc2.d/S97osimcs start
	    fi

	else
	    pid=`ps -e | grep rk6d | sed -e 's/^  *//' -e 's/ .*//'`
	    if [ -z "$pid" ]; then # RFC1006 driver is not running
		/etc/rc2.d/S97osimcs stop
		/etc/rc2.d/S90rk6 start
		/etc/rc2.d/S97osimcs start
	    fi
	fi

	#
	# Now make sure that osimcsd is running
	#

	pid=`ps -e | grep osimcsd | sed -e 's/^  *//' -e 's/ .*//'`
	if [ -z "$pid" ]; then # osimcsd is not running. Have to start it 
	    /etc/rc2.d/S97osimcs start
	fi

       	$ECHO 'Starting em_cmip...\n'
	$CMIP_MPA_PATH/em_cmip & 
	;;   

    'stop')
	pid=`ps -e | grep em_cmip | sed -e 's/^  *//' -e 's/ .*//'`
        for p in $pid; do
            $ECHO 'Terminating em_cmip: PID = '
	    $ECHO "$p\\n"
            kill -9 $p
        done
	;;

    *)
	$ECHO "Usage: "
	$ECHO "$PROG "
	$ECHO '{ start | stop }\n'
	exit 1
	;;
esac

exit 0
