a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden#!/sbin/sh
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden#
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# CDDL HEADER START
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden#
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# The contents of this file are subject to the terms of the
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# Common Development and Distribution License, Version 1.0 only
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# (the "License"). You may not use this file except in compliance
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# with the License.
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden#
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# or http://www.opensolaris.org/os/licensing.
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# See the License for the specific language governing permissions
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# and limitations under the License.
e6c3a72a023407f5d1fface64356e1cc81f1af31Phill Cunnington#
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# When distributing Covered Code, include this CDDL HEADER in each
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# If applicable, add the following below this CDDL HEADER, with the
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# fields enclosed by brackets "[]" replaced with your own identifying
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# information: Portions Copyright [yyyy] [name of copyright owner]
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden#
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# CDDL HEADER END
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden#
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden#
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# Copyright 1999-2002 Sun Microsystems, Inc. All rights reserved.
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# Use is subject to license terms.
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden#
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden#ident "%Z%%M% %I% %E% SMI"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# Default config values used by script
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Maddennca=drv/nca
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Maddenncakmodconf=/etc/nca/ncakmod.conf
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Maddenncaifconf=/etc/nca/nca.if
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Maddentempdir=/tmp
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Maddendefault_miss_door=/var/run/nca_httpd_1.door
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden# Function used to parse the interface names from /etc/hostname.* entries
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Maddenreadifconf()
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden{
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden while read i; do
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden case "$i" in
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden '#'* | '') # Ignore comments, empty lines
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden continue ;;
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden '*') configinterfaces="`echo /etc/hostname.*[0-9] \
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden 2>/dev/null`"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden checkforvirt=false
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden break ;;
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden esac
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden configinterfaces="$configinterfaces $i"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden done
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden}
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Maddencase "$1" in
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden'start')
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden if [ ! -f $ncakmodconf ]; then
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden # If configuration file is missing, just exit
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden exit 0
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden fi
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden . $ncakmodconf
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden # Default is "disabled" so we want to exit
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden [ "x$status" != "xenabled" ] && exit 0
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden if [ -f "$ncaifconf" ]; then
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden readifconf < $ncaifconf
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden configinterfaces="`echo $configinterfaces | \
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden /bin/sed 's/.etc.hostname.//g'`"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden for i in $configinterfaces; do
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden findinterface="`echo $i | /bin/grep '[0-9][0-9]*'`"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden if [ $? -ne 0 ]; then
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden # Need to expand interface (ie. iprb)
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden interface="`echo /etc/hostname.$i*[0-9] \
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden 2>/dev/null | /bin/sed \
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden 's/.etc.hostname.//g'`"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden interfaces="$interfaces $interface"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden else
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden interfaces="$interfaces $i"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden fi
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden done
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden # If we don't have any interfaces configured, exit
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden [ -z "$interfaces" ] && exit 0
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden # Prevent multiple instances of ncaconfd
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden if /bin/pgrep ncaconfd > /dev/null 2>&1; then
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden echo "$0: ncaconfd is already running"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden exit 1
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden fi
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden /usr/sbin/modload -p $nca
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden # Insert NCA into the stream of all the interfaces configured.
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden interfaces="`echo $interfaces | /bin/tr ' ' '\012' | \
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden /bin/grep -v :`"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden if [ "x$nca_active" != xenabled ]; then
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden /usr/lib/inet/ncaconfd -l $interfaces
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden else
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden /usr/lib/inet/ncaconfd -al $interfaces
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden fi
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden if [ "$httpd_door_path" != "$default_miss_door" ]; then
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden # Set the default HTTPD door in NCA via ndd
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden /usr/sbin/ndd -set /dev/nca httpd_door_path \
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden $httpd_door_path
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden fi
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden fi
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden ;;
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden'stop')
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden # Need to reboot the system to stop
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden echo "System reset is required to stop NCA functionality"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden ;;
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden*)
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden echo "Usage: $0 { start | stop }"
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden exit 1
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden ;;
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Maddenesac
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Maddenexit 0
a82d04bc19fee9d5e34b41ccd7641da1f62ab634Neil Madden