1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#!/sbin/sh
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# Use is subject to license terms.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# CDDL HEADER START
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# The contents of this file are subject to the terms of the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# Common Development and Distribution License (the "License").
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# You may not use this file except in compliance with the License.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# or http://www.opensolaris.org/os/licensing.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# See the License for the specific language governing permissions
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# and limitations under the License.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# When distributing Covered Code, include this CDDL HEADER in each
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# If applicable, add the following below this CDDL HEADER, with the
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# fields enclosed by brackets "[]" replaced with your own identifying
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# information: Portions Copyright [yyyy] [name of copyright owner]
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# CDDL HEADER END
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# Start script for vntsd
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# For modifying parameters passed to vntsd, do not edit
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# this script. Instead use svccfg(1m) to modify the SMF
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# repository. For example:
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo#
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# svccfg
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# svc:> select ldoms/vntsd
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# svc:/ldoms/vntsd> setprop vntsd/vcc_device = "virtual-console-concentrator@1"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# svc:/ldoms/vntsd> setprop vntsd/listen_addr = "192.168.1.1"
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# svc:/ldoms/vntsd> setprop vntsd/authorization="true"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo# svc:/ldoms/vntsd> exit
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo. /lib/svc/share/smf_include.sh
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha BasavapatnaAUTH_ATTR=/etc/security/auth_attr
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha BasavapatnaUSER_ATTR=/etc/user_attr
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha BasavapatnaGREP=/usr/bin/grep
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha BasavapatnaCAT=/usr/bin/cat
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha BasavapatnaED=/usr/bin/ed
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha BasavapatnaSVCCFG=/usr/sbin/svccfg
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha BasavapatnaSVCPROP=/bin/svcprop
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna#
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# Add LDoms vntsd authorization entries to etc/security/auth_attr if not
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# present. These define authorizations used by LDoms vntsd daemon.
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna#
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnaadd_auth_entries()
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna{
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna # Add entries to auth_attr file, if needed
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna $GREP '^solaris.vntsd.:' ${AUTH_ATTR} >/dev/null 2>&1
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna if [ $? -ne 0 ] ; then
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna $CAT >>${AUTH_ATTR} << EOF
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# Added by svc-vntsd
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnasolaris.vntsd.:::LDoms vntsd Administration::
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnasolaris.vntsd.grant:::Delegate LDoms vntsd Administration::
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnasolaris.vntsd.consoles:::Access All LDoms Guest Consoles::
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# End of svc-vntsd
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha BasavapatnaEOF
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna fi
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna}
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna#
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# Add a LDoms user/role entry to etc/user_attr if not present.
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# This defines user/role used by useradd or roleadd.
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna#
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnaadd_user_entries()
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna{
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna #
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna # Add entries to user_attr file, if needed.
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna #
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna $GREP 'solaris.vntsd.grant' ${USER_ATTR} >/dev/null 2>&1
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna if [ $? -ne 0 ] ; then
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna $GREP '^root' ${USER_ATTR} | $GREP 'auths=' >/dev/null 2>&1
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna if [ $? -eq 0 ] ; then
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna #
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna # Add vntsd attribute to an existing root entry.
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna #
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna $ED -s ${USER_ATTR} <<- EOF > /dev/null 2>&1
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna g/^root.*auths\=/s/^roo.*auths\=/&solaris.vntsd.grant,/
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna w
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna q
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna EOF
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna else
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna #
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna # Add a root entry with vntsd attribute.
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna #
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna $CAT >>${USER_ATTR} << EOF
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# Added by svc-vntsd
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnaroot::::type=normal;auths=solaris.vntsd.grant;lock_after_retries=0
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# End of svc-vntsd
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha BasavapatnaEOF
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna fi
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna fi
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna}
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna#
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# Update 'vntsd' authorizations in the relevant files. Note that adding these
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# entries from this smf script rather than from the pkg install scripts,
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# ensures that they are added only if the vntsd service is being enabled; and
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# hence avoids adding these entries unnecessarily into client guest domains.
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna# The functions check before adding, that the entries are not already present.
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna#
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnaadd_auth_entries
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnaadd_user_entries
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnavcc_device=`$SVCPROP -p vntsd/vcc_device $SMF_FMRI 2>/dev/null`
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoif [ -z "$vcc_device" ]; then
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo vcc_device="virtual-console-concentrator@0"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppofi
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoargs="-i $vcc_device"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnalisten_addr=`$SVCPROP -p vntsd/listen_addr $SMF_FMRI 2>/dev/null`
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoif [ -n "$listen_addr" ]; then
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo args="$args -p $listen_addr"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppofi
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnatimeout=`$SVCPROP -p vntsd/timeout_minutes $SMF_FMRI 2>/dev/null`
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoif [ -n "$timeout" ]; then
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo args="$args -t $timeout"
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppofi
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnaauth=`$SVCPROP -p vntsd/authorization $SMF_FMRI 2>/dev/null`
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnaif [ "$auth" = "true" ]; then
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna args="$args -A"
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatnafi
28b1e50e4eed7be353f9778497714aab53ef2a0dSriharsha Basavapatna
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel#
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel# If we don't have a vcc device we don't want to try to start vntsd. By default
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel# newer versions of the factory settings will try to start vntsd by default.
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel# Since we may be installed on a machine with an older firmware we need to make
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel# sure that we don't try to start if the virtual console concentrator is not
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel# present.
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel#
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach KisselVNTSD_DEV='/devices/virtual-devices@100/channel-devices@200/virtual-console-concentrator@0:ctl'
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kisselif [ ! -c "$VNTSD_DEV" ]; then
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel echo "The Virtual Network Terminal Server service has been disabled" \
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel "because the system has no virtual console concentrator (vcc)" \
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel "device."
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel /usr/sbin/svcadm disable -t "$SMF_FMRI"
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel sleep 5 &
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel exit $SMF_EXIT_OK
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kisselfi
25b895bc9d3dbeb672f8d067af54c94268c932e5Zach Kissel
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoif [ -x /usr/lib/ldoms/vntsd ]; then
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg /usr/lib/ldoms/vntsd $args
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg rc=$?
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg if [ $rc -ne 0 ]; then
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg # if vntsd exited in error with status 1, let SMF restart it
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg # otherwise we want it to go into maintenance.
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg if [ $rc -eq 1 ]; then
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg exit $SMF_ERR_OTHER
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg else
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg exit $SMF_ERR_FATAL
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg fi
4d39be2b45b5ac811d28452e6eb629ac64aebfc4sg fi
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoelse
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo echo "WARNING: /usr/lib/ldoms/vntsd is missing or not executable" >& 2
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo exit $SMF_EXIT_ERR_CONFIG
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppofi
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppo
1ae0874509b6811fdde1dfd46f0d93fd09867a3fheppoexit $SMF_EXIT_OK