269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#! /bin/sh
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# CDDL HEADER START
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# The contents of this file are subject to the terms of the
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# Common Development and Distribution License (the "License").
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# You may not use this file except in compliance with the License.
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# or http://www.opensolaris.org/os/licensing.
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# See the License for the specific language governing permissions
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# and limitations under the License.
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# When distributing Covered Code, include this CDDL HEADER in each
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# If applicable, add the following below this CDDL HEADER, with the
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# fields enclosed by brackets "[]" replaced with your own identifying
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# information: Portions Copyright [yyyy] [name of copyright owner]
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# CDDL HEADER END
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# Copyright (c) 1993, 2010, Oracle and/or its affiliates. All rights reserved.
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig. /lib/svc/share/smf_include.sh
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy FettigDEVALLOC=/etc/security/device_allocate
269f47de02761bab3b7b28e2007a2bac34f629ccThuy FettigDEVMAPS=/etc/security/device_maps
269f47de02761bab3b7b28e2007a2bac34f629ccThuy FettigDEVFSADM=/usr/sbin/devfsadm
269f47de02761bab3b7b28e2007a2bac34f629ccThuy FettigMKDEVALLOC=/usr/sbin/mkdevalloc
269f47de02761bab3b7b28e2007a2bac34f629ccThuy FettigMKDEVMAPS=/usr/sbin/mkdevmaps
269f47de02761bab3b7b28e2007a2bac34f629ccThuy FettigHALFDI=/etc/hal/fdi/policy/30user/90-solaris-device-allocation.fdi
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# dev_allocation_convert
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# All the real work gets done in this function
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigdev_allocation_convert()
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig{
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# If allocation already configured, just return
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigif [ -f ${HALFDI} -a -f ${DEVALLOC} -a -f ${DEVMAPS} ]; then
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig return
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigfi
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# Prevent automount of removable and hotpluggable volume
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# by forcing volume.ignore HAL property on all such volumes.
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigif [ ! -f ${HALFDI} ]; then
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig cat > ${HALFDI} <<FDI
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig<?xml version="1.0" encoding="UTF-8"?>
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig<deviceinfo version="0.2">
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig <device>
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig <match key="info.capabilities" contains="volume">
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig <match key="@block.storage_device:storage.removable" bool="true">
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig <merge key="volume.ignore" type="bool">true</merge>
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig </match>
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig <match key="@block.storage_device:storage.hotpluggable" bool="true">
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig <merge key="volume.ignore" type="bool">true</merge>
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig </match>
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig </match>
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig </device>
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig</deviceinfo>
269f47de02761bab3b7b28e2007a2bac34f629ccThuy FettigFDI
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigfi
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# Initialize device allocation
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# Need to determine if Trusted Extensions is enabled.
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# Check the setting in etc/system (other methods won't work
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig# because TX is likely not yet fully active.)
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig#
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettiggrep "^[ ]*set[ ][ ]*sys_labeling[ ]*=[ ]*1" \
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig /etc/system > /dev/null 2>&1
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigif [ $? = 0 ]; then
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig # Trusted Extensions is enabled (but possibly not yet booted).
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig ${DEVFSADM} -e
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigelse
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig if [ ! -f ${DEVALLOC} ]; then
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig echo "DEVICE_ALLOCATION=ON" > $DEVALLOC
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig ${MKDEVALLOC} >> $DEVALLOC
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig fi
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig if [ ! -f ${DEVMAPS} ]; then
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig ${MKDEVMAPS} > $DEVMAPS
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig fi
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigfi
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig}
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigdev_allocation_unconvert()
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig{
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig # Turn off device allocation.
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig ${DEVFSADM} -d
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig /usr/bin/rm -f $DEVALLOC $DEVMAPS
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig # Restore default policy for removable and hotpluggable volumes
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig /usr/bin/rm -f $HALFDI
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig}
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigcase "$1" in
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig'start')
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig dev_allocation_convert
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig deallocate -Is
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig ;;
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig'stop')
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig state=`/usr/bin/svcprop -c -p general/enabled $SMF_FMRI 2>/dev/null`
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig if [ "$state" = "true" ] ; then
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig exit $SMF_EXIT_OK
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig fi
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig dev_allocation_unconvert
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig ;;
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigesac
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettig
269f47de02761bab3b7b28e2007a2bac34f629ccThuy Fettigexit $SMF_EXIT_OK