OpenSolaris_b135/pkgdefs/SUNWldomr.v/preremove

#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

#
# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
#

PATH=/usr/bin:/usr/sbin:${PATH}
export PATH

EXIT=0

AUTH_ATTR=$BASEDIR/etc/security/auth_attr
USER_ATTR=$BASEDIR/etc/user_attr
GREP=/usr/bin/grep
CAT=/usr/bin/cat
ED=/usr/bin/ed

not_installed()
{
	driver=$1

	grep "^${driver} " ${BASEDIR}/etc/name_to_major > /dev/null 2>&1

	if [ "$?" -eq 0 ]; then
		return 1
	else
		return 0
	fi
}

#
# Remove LDoms vntsd authorization entries from etc/security/auth_attr, which
# were added during installation. These define authorizations used by LDoms
# vntsd daemon.
#
remove_auth_entries()
{
	#
	# Remove entries from auth_attr file, if needed
	#
	$GREP '^solaris.vntsd.:' ${AUTH_ATTR} >/dev/null 2>&1
	if  [ $? -eq 0 ] ; then
		$ED -s ${AUTH_ATTR} <<- EOF > /dev/null 2>&1
			g/svc-vntsd/d
			g/^solaris.vntsd.:/d
			g/^solaris.vntsd.grant/d
			g/^solaris.vntsd.consoles/d
			w
			q
		EOF
	fi
}

#
# Delete entries that were added by svc-vntsd to etc/user_attr file. 
#
delete_vntsd_entry()
{
    vntsd_entry=$1

    $GREP ${vntsd_entry} ${USER_ATTR} >/dev/null 2>&1
    if  [ $? -eq 0 ] ; then
	    $ED -s ${USER_ATTR} <<- EOF > /dev/null 2>&1
		g/${vntsd_entry}/d
		w
		q
		EOF
    fi
}

#
# Remove vntsd attributes from etc/user_attr file. 
#
remove_vntsd_attr()
{
	if [ $# -eq 1 ] ; then
	    replacement=""
	else 
	    replacement=$2
	fi

	vntsd_attr=$1

	$GREP ${vntsd_attr} ${USER_ATTR} >/dev/null 2>&1
	if  [ $? -eq 0 ] ; then
		$ED -s ${USER_ATTR} <<- EOF > /dev/null 2>&1
			g/${vntsd_attr}/s/${vntsd_attr}/${replacement}/g
			w
			q
			EOF
	fi
}

#
# Remove LDoms vntsd user/role entry from /etc/user_attr, which were added
# during installation. This defines the user/role used by useradd/roleadd.
#
remove_user_entries()
{
	#
	# Delete entries that may be added during installation.
	#
	delete_vntsd_entry 'svc-vntsd'
	delete_vntsd_entry '^root::::type=normal;auths=solaris.vntsd.grant;lock_after_retries=0$'

	#
	# Remove vntsd attributes for root user 
	# Possible entries are:
	#

	remove_vntsd_attr ",solaris.vntsd.grant$"
	remove_vntsd_attr ",solaris.vntsd.grant;" ";"
	remove_vntsd_attr "solaris.vntsd.grant,"
	remove_vntsd_attr "auths=solaris.vntsd.grant$"
	remove_vntsd_attr "auths=solaris.vntsd.grant;"
}

# Main

remove_auth_entries
remove_user_entries

# 
# Unload and remove drivers
#
not_installed cnex  || rem_drv -b "${BASEDIR}" cnex  || EXIT=1
not_installed drctl || rem_drv -b "${BASEDIR}" drctl || EXIT=1
not_installed vlds  || rem_drv -b "${BASEDIR}" vlds  || EXIT=1
not_installed vcc   || rem_drv -b "${BASEDIR}" vcc   || EXIT=1
not_installed vdc   || rem_drv -b "${BASEDIR}" vdc   || EXIT=1
not_installed vds   || rem_drv -b "${BASEDIR}" vds   || EXIT=1
not_installed vldc  || rem_drv -b "${BASEDIR}" vldc  || EXIT=1
not_installed vnet  || rem_drv -b "${BASEDIR}" vnet  || EXIT=1
not_installed vsw   || rem_drv -b "${BASEDIR}" vsw   || EXIT=1

exit ${EXIT}