xref: /onnv-gate/usr/src/cmd/allocate/svc-allocate (revision 13059:07ea2c89e2a2)
1*13059SThuy.Fettig@oracle.COM#! /bin/sh
2*13059SThuy.Fettig@oracle.COM#
3*13059SThuy.Fettig@oracle.COM#
4*13059SThuy.Fettig@oracle.COM# CDDL HEADER START
5*13059SThuy.Fettig@oracle.COM#
6*13059SThuy.Fettig@oracle.COM# The contents of this file are subject to the terms of the
7*13059SThuy.Fettig@oracle.COM# Common Development and Distribution License (the "License").
8*13059SThuy.Fettig@oracle.COM# You may not use this file except in compliance with the License.
9*13059SThuy.Fettig@oracle.COM#
10*13059SThuy.Fettig@oracle.COM# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11*13059SThuy.Fettig@oracle.COM# or http://www.opensolaris.org/os/licensing.
12*13059SThuy.Fettig@oracle.COM# See the License for the specific language governing permissions
13*13059SThuy.Fettig@oracle.COM# and limitations under the License.
14*13059SThuy.Fettig@oracle.COM#
15*13059SThuy.Fettig@oracle.COM# When distributing Covered Code, include this CDDL HEADER in each
16*13059SThuy.Fettig@oracle.COM# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17*13059SThuy.Fettig@oracle.COM# If applicable, add the following below this CDDL HEADER, with the
18*13059SThuy.Fettig@oracle.COM# fields enclosed by brackets "[]" replaced with your own identifying
19*13059SThuy.Fettig@oracle.COM# information: Portions Copyright [yyyy] [name of copyright owner]
20*13059SThuy.Fettig@oracle.COM#
21*13059SThuy.Fettig@oracle.COM# CDDL HEADER END
22*13059SThuy.Fettig@oracle.COM#
23*13059SThuy.Fettig@oracle.COM# Copyright (c) 1993, 2010, Oracle and/or its affiliates. All rights reserved.
24*13059SThuy.Fettig@oracle.COM#
25*13059SThuy.Fettig@oracle.COM
26*13059SThuy.Fettig@oracle.COM. /lib/svc/share/smf_include.sh
27*13059SThuy.Fettig@oracle.COM
28*13059SThuy.Fettig@oracle.COMDEVALLOC=/etc/security/device_allocate
29*13059SThuy.Fettig@oracle.COMDEVMAPS=/etc/security/device_maps
30*13059SThuy.Fettig@oracle.COMDEVFSADM=/usr/sbin/devfsadm
31*13059SThuy.Fettig@oracle.COMMKDEVALLOC=/usr/sbin/mkdevalloc
32*13059SThuy.Fettig@oracle.COMMKDEVMAPS=/usr/sbin/mkdevmaps
33*13059SThuy.Fettig@oracle.COMHALFDI=/etc/hal/fdi/policy/30user/90-solaris-device-allocation.fdi
34*13059SThuy.Fettig@oracle.COM
35*13059SThuy.Fettig@oracle.COM# dev_allocation_convert
36*13059SThuy.Fettig@oracle.COM#	All the real work gets done in this function
37*13059SThuy.Fettig@oracle.COM
38*13059SThuy.Fettig@oracle.COMdev_allocation_convert()
39*13059SThuy.Fettig@oracle.COM{
40*13059SThuy.Fettig@oracle.COM#
41*13059SThuy.Fettig@oracle.COM# If allocation already configured, just return
42*13059SThuy.Fettig@oracle.COM#
43*13059SThuy.Fettig@oracle.COMif [ -f ${HALFDI} -a -f ${DEVALLOC} -a -f ${DEVMAPS} ]; then
44*13059SThuy.Fettig@oracle.COM    return
45*13059SThuy.Fettig@oracle.COMfi
46*13059SThuy.Fettig@oracle.COM
47*13059SThuy.Fettig@oracle.COM# Prevent automount of removable and hotpluggable volume
48*13059SThuy.Fettig@oracle.COM# by forcing volume.ignore HAL property on all such volumes.
49*13059SThuy.Fettig@oracle.COMif [ ! -f ${HALFDI} ]; then
50*13059SThuy.Fettig@oracle.COM	cat > ${HALFDI} <<FDI
51*13059SThuy.Fettig@oracle.COM<?xml version="1.0" encoding="UTF-8"?>
52*13059SThuy.Fettig@oracle.COM<deviceinfo version="0.2">
53*13059SThuy.Fettig@oracle.COM  <device>
54*13059SThuy.Fettig@oracle.COM    <match key="info.capabilities" contains="volume">
55*13059SThuy.Fettig@oracle.COM      <match key="@block.storage_device:storage.removable" bool="true">
56*13059SThuy.Fettig@oracle.COM        <merge key="volume.ignore" type="bool">true</merge>
57*13059SThuy.Fettig@oracle.COM      </match>
58*13059SThuy.Fettig@oracle.COM      <match key="@block.storage_device:storage.hotpluggable" bool="true">
59*13059SThuy.Fettig@oracle.COM        <merge key="volume.ignore" type="bool">true</merge>
60*13059SThuy.Fettig@oracle.COM      </match>
61*13059SThuy.Fettig@oracle.COM    </match>
62*13059SThuy.Fettig@oracle.COM  </device>
63*13059SThuy.Fettig@oracle.COM</deviceinfo>
64*13059SThuy.Fettig@oracle.COMFDI
65*13059SThuy.Fettig@oracle.COMfi
66*13059SThuy.Fettig@oracle.COM
67*13059SThuy.Fettig@oracle.COM# Initialize device allocation
68*13059SThuy.Fettig@oracle.COM
69*13059SThuy.Fettig@oracle.COM
70*13059SThuy.Fettig@oracle.COM# Need to determine if Trusted Extensions is enabled.
71*13059SThuy.Fettig@oracle.COM# Check the setting in etc/system (other methods won't work
72*13059SThuy.Fettig@oracle.COM# because TX is likely not yet fully active.)
73*13059SThuy.Fettig@oracle.COM#
74*13059SThuy.Fettig@oracle.COMgrep "^[ 	]*set[ 	][ 	]*sys_labeling[ 	]*=[ 	]*1" \
75*13059SThuy.Fettig@oracle.COM    /etc/system > /dev/null 2>&1
76*13059SThuy.Fettig@oracle.COM
77*13059SThuy.Fettig@oracle.COMif [ $? = 0 ]; then
78*13059SThuy.Fettig@oracle.COM	# Trusted Extensions is enabled (but possibly not yet booted).
79*13059SThuy.Fettig@oracle.COM	${DEVFSADM} -e
80*13059SThuy.Fettig@oracle.COMelse
81*13059SThuy.Fettig@oracle.COM	if [ ! -f ${DEVALLOC} ]; then
82*13059SThuy.Fettig@oracle.COM		echo "DEVICE_ALLOCATION=ON" > $DEVALLOC
83*13059SThuy.Fettig@oracle.COM		${MKDEVALLOC} >> $DEVALLOC
84*13059SThuy.Fettig@oracle.COM	fi
85*13059SThuy.Fettig@oracle.COM	if [ ! -f ${DEVMAPS} ]; then
86*13059SThuy.Fettig@oracle.COM		${MKDEVMAPS} > $DEVMAPS
87*13059SThuy.Fettig@oracle.COM	fi
88*13059SThuy.Fettig@oracle.COMfi
89*13059SThuy.Fettig@oracle.COM}
90*13059SThuy.Fettig@oracle.COM
91*13059SThuy.Fettig@oracle.COMdev_allocation_unconvert()
92*13059SThuy.Fettig@oracle.COM{
93*13059SThuy.Fettig@oracle.COM	# Turn off device allocation.
94*13059SThuy.Fettig@oracle.COM	${DEVFSADM} -d
95*13059SThuy.Fettig@oracle.COM	/usr/bin/rm -f $DEVALLOC $DEVMAPS
96*13059SThuy.Fettig@oracle.COM	# Restore default policy for removable and hotpluggable volumes
97*13059SThuy.Fettig@oracle.COM	/usr/bin/rm -f $HALFDI
98*13059SThuy.Fettig@oracle.COM}
99*13059SThuy.Fettig@oracle.COM
100*13059SThuy.Fettig@oracle.COMcase "$1" in
101*13059SThuy.Fettig@oracle.COM'start')
102*13059SThuy.Fettig@oracle.COM	dev_allocation_convert
103*13059SThuy.Fettig@oracle.COM	deallocate -Is
104*13059SThuy.Fettig@oracle.COM	;;
105*13059SThuy.Fettig@oracle.COM'stop')
106*13059SThuy.Fettig@oracle.COM	state=`/usr/bin/svcprop -c -p general/enabled $SMF_FMRI 2>/dev/null`
107*13059SThuy.Fettig@oracle.COM	if [ "$state" = "true" ] ; then
108*13059SThuy.Fettig@oracle.COM		exit $SMF_EXIT_OK
109*13059SThuy.Fettig@oracle.COM	fi
110*13059SThuy.Fettig@oracle.COM	dev_allocation_unconvert
111*13059SThuy.Fettig@oracle.COM	;;
112*13059SThuy.Fettig@oracle.COMesac
113*13059SThuy.Fettig@oracle.COM
114*13059SThuy.Fettig@oracle.COMexit $SMF_EXIT_OK
115