postinstall revision 7c478bd95313f5f23a4c958a745db2134aa03244
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#!/sbin/sh
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# CDDL HEADER START
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# The contents of this file are subject to the terms of the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Common Development and Distribution License, Version 1.0 only
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# (the "License"). You may not use this file except in compliance
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# with the License.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# or http://www.opensolaris.org/os/licensing.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# See the License for the specific language governing permissions
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# and limitations under the License.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# When distributing Covered Code, include this CDDL HEADER in each
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# If applicable, add the following below this CDDL HEADER, with the
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# fields enclosed by brackets "[]" replaced with your own identifying
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# information: Portions Copyright [yyyy] [name of copyright owner]
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# CDDL HEADER END
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Use is subject to license terms.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# ident "%Z%%M% %I% %E% SMI"
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# Function: check_add_drv()
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen#
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# This function will check if the module has an entry in etc/name_to_major
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# If not simply calls add_drv with the arguments given. If there is
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# such an entry in name_to_major file, it adds entries in driver_aliases
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# driver_classes and minor_perm if necessary.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen# The syntax of this function is the same as add_drv.
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
4ec31c52242ebeacf67a0291c4f100e2b4a8c343Christian Braunercheck_add_drv()
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen{
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen if [ "$BASEDIR" = "" ]
dc259399a453b68811a9c62fcf739b8e77e3fbe8Tycho Andersen then
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen BASEDIR=/
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen fi
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen alias=""
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen class=""
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen ADD_ALIAS=0
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen ADD_CLASS=0
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen ADD_MINOR=0
3e4b0221c4a5f4e815fe2fed6ccef90d8df507f0Adrian Reber OPTIND=1
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen IS_NET_DRIVER=0
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen cmd="add_drv"
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber NO_CMD=
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber while getopts i:b:m:c:N opt
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen do
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen case $opt in
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen N ) NO_CMD=1;;
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen i ) ADD_ALIAS=1
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen alias=$OPTARG
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen cmd=$cmd" -i '$alias'"
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersen ;;
9d928ec50fd75f7f392c7978395ec755650587f3Tycho Andersen m ) ADD_MINOR=1
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen minor=$OPTARG
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen cmd=$cmd" -m '$minor'"
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen ;;
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen c) ADD_CLASS=1
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen class=$OPTARG
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen cmd=$cmd" -c $class"
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen ;;
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen b) BASEDIR=$OPTARG
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen cmd=$cmd" -b $BASEDIR"
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen ;;
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen \?) echo "check_add_drv can not handle this option"
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen return
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen ;;
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen esac
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen done
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen shift `/usr/bin/expr $OPTIND - 1`
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber drvname=$1
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber
2fdca63d45448ffaa602e696865e456744fc0752Adrian Reber cmd=$cmd" "$drvname
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen
73d467522b29983a4c0e1d806a460432870ac5ffTycho Andersen drvname=`echo $drvname | /usr/bin/sed 's;.*/;;g'`
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen /usr/bin/grep "^$drvname[ ]" $BASEDIR/etc/name_to_major > /dev/null 2>&1
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen if [ "$NO_CMD" = "" -a $? -ne 0 ]
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen then
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen eval $cmd
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen else
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen # entry already in name_to_major, add alias, class, minorperm
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen # if necessary
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen if [ $ADD_ALIAS = 1 ]
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen then
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen for i in $alias
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen do
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen /usr/bin/egrep "^$drvname[ ]+$i" $BASEDIR/etc/driver_aliases>/dev/null 2>&1
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen if [ $? -ne 0 ]
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen then
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen echo "$drvname $i" >> $BASEDIR/etc/driver_aliases
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen fi
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen done
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen fi
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen if [ $ADD_CLASS = 1 ]
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen then
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen /usr/bin/egrep "^$drvname[ ]+$class( | |$)" $BASEDIR/etc/driver_classes > /dev/null 2>&1
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen if [ $? -ne 0 ]
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen then
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen echo "$drvname\t$class" >> $BASEDIR/etc/driver_classes
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen fi
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen fi
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen if [ $ADD_MINOR = 1 ]
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen then
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen /usr/bin/grep "^$drvname:" $BASEDIR/etc/minor_perm > /dev/null 2>&1
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen if [ $? -ne 0 ]
4b54788e85a4e2f423133354f8141ed02f795d71Tycho Andersen then
9451eeffb0688b801034d963c455c8b31ccbf28cTycho Andersen minorentry="$drvname:$minor"
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen echo $minorentry >> $BASEDIR/etc/minor_perm
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen fi
c6c37c20326c7fcd8a2f072263188cc84c403955Tycho Andersen fi
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen fi
e29fe1dd21a58d1deddb3ca3bf3eaf260c525b10Tycho Andersen
a17fa3c081a2a2e2ec692ed8decaf54470d05dceNiklas Eiling
a17fa3c081a2a2e2ec692ed8decaf54470d05dceNiklas Eiling}
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen #
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen # It is quite possible that other aliases ar
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen check_add_drv -b "${BASEDIR}" -i \
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen '"pci10de,56" "pci10de,57"' \
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen -m '* 0666 root root' nge
e9195050b4abd0bc4c207457cb2f1f161b583fc8Tycho Andersen