postinstall revision 1959748cbddf37d4734c107dadfa449e076045e3
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync#!/sbin/sh
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync#
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# CDDL HEADER START
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync#
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# The contents of this file are subject to the terms of the
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# Common Development and Distribution License (the "License").
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync# You may not use this file except in compliance with the License.
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync#
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# or http://www.opensolaris.org/os/licensing.
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# See the License for the specific language governing permissions
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# and limitations under the License.
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync#
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# When distributing Covered Code, include this CDDL HEADER in each
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync# If applicable, add the following below this CDDL HEADER, with the
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync# fields enclosed by brackets "[]" replaced with your own identifying
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync# information: Portions Copyright [yyyy] [name of copyright owner]
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync#
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# CDDL HEADER END
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync#
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync#
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# Copyright 2007 Sun Microsystems, Inc. All rights reserved.
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync# Use is subject to license terms.
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync#
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync# ident "%Z%%M% %I% %E% SMI"
f11c4bc0c52722d9487aed3b0b7353131bee87acvboxsync
f11c4bc0c52722d9487aed3b0b7353131bee87acvboxsync# Function: check_add_drv()
f11c4bc0c52722d9487aed3b0b7353131bee87acvboxsync#
f11c4bc0c52722d9487aed3b0b7353131bee87acvboxsync# This function will check if the module has an entry in etc/name_to_major
f11c4bc0c52722d9487aed3b0b7353131bee87acvboxsync# If not simply calls add_drv with the arguments given. If there is
f11c4bc0c52722d9487aed3b0b7353131bee87acvboxsync# such an entry in name_to_major file, it adds entries in driver_aliases
f11c4bc0c52722d9487aed3b0b7353131bee87acvboxsync# driver_classes and minor_perm if necessary.
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync# The syntax of this function is the same as add_drv.
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsynccheck_add_drv()
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync{
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync if [ "$BASEDIR" = "" ]
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync then
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync BASEDIR=/
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync fi
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync alias=""
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync class=""
0c1bdc5adae416967cb64e09f8ec81a5b77fe31dvboxsync ADD_ALIAS=0
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync ADD_CLASS=0
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync ADD_MINOR=0
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync OPTIND=1
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync IS_NET_DRIVER=0
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync cmd="add_drv"
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync NO_CMD=
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync while getopts i:b:m:c:N opt
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync do
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync case $opt in
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync N ) NO_CMD=1;;
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync i ) ADD_ALIAS=1
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync alias=$OPTARG
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync cmd=$cmd" -i '$alias'"
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync ;;
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync m ) ADD_MINOR=1
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync minor=$OPTARG
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync cmd=$cmd" -m '$minor'"
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync ;;
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync c) ADD_CLASS=1
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync class=$OPTARG
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync cmd=$cmd" -c $class"
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync ;;
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync b) BASEDIR=$OPTARG
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync cmd=$cmd" -b $BASEDIR"
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync ;;
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync \?) echo "check_add_drv can not handle this option"
0c1bdc5adae416967cb64e09f8ec81a5b77fe31dvboxsync return
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync ;;
55f72d08ca2ada22d085555ae1d6fafcdf82a320vboxsync esac
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync done
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync shift `/usr/bin/expr $OPTIND - 1`
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync
0c1bdc5adae416967cb64e09f8ec81a5b77fe31dvboxsync drvname=$1
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync cmd=$cmd" "$drvname
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync drvname=`echo $drvname | /usr/bin/sed 's;.*/;;g'`
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync
34822e8b7d00c04a0bc98c0d1a565a00d9bb1fd9vboxsync /usr/bin/grep "^$drvname[ ]" $BASEDIR/etc/name_to_major > /dev/null 2>&1
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync
083dd76e9fd7a829b1ed67ffc9003276643e7db1vboxsync #
# NB: We really would have liked to use update_drv here, but
# since we can't do that (see CR 6281386), we have this code.
# Note that if we've never added this driver before, the add_drv
# below takes care of worrying about conflicting entries in
# /etc/driver_aliases. (It will fail if there is a conflicting
# driver squatting on the alias.)
#
if [ "$NO_CMD" = "" -a $? -ne 0 ]
then
eval $cmd
else
# entry already in name_to_major, add alias, class, minorperm
# if necessary
if [ $ADD_ALIAS = 1 ]
then
for i in $alias
do
/usr/bin/egrep "^$drvname[ ]+$i" $BASEDIR/etc/driver_aliases>/dev/null 2>&1
if [ $? -ne 0 ]
then
echo "$drvname $i" >> $BASEDIR/etc/driver_aliases
fi
done
fi
if [ $ADD_CLASS = 1 ]
then
/usr/bin/egrep "^$drvname[ ]+$class( | |$)" $BASEDIR/etc/driver_classes > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo "$drvname\t$class" >> $BASEDIR/etc/driver_classes
fi
fi
if [ $ADD_MINOR = 1 ]
then
/usr/bin/grep "^$drvname:" $BASEDIR/etc/minor_perm > /dev/null 2>&1
if [ $? -ne 0 ]
then
minorentry="$drvname:$minor"
echo $minorentry >> $BASEDIR/etc/minor_perm
fi
fi
fi
}
check_add_drv -b "${BASEDIR}" -i \
'"pci10b7,9300"
"pci1113,1216"
"pci1317,981"
"pci1317,985"
"pci1317,1985"
"pci1317,9511"
"pci1317,9513"
"pci13d1,ab02"
"pci13d1,ab03"
"pci13d1,ab08"
"pci1737,ab08"' \
-m '* 0666 root root' afe