#!/sbin/sh # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License (the "License"). # You may not use this file except in compliance with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # # # Copyright 2009 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Function: check_add_drv() # # This function will check if the module has an entry in etc/name_to_major # If not simply calls add_drv with the arguments given. If there is # such an entry in name_to_major file, it adds entries in driver_aliases # driver_classes and minor_perm if necessary. # The syntax of this function is the same as add_drv. check_add_drv() { if [ "$BASEDIR" = "" ] then BASEDIR=/ fi alias="" class="" ADD_ALIAS=0 ADD_CLASS=0 ADD_MINOR=0 OPTIND=1 IS_NET_DRIVER=0 cmd="add_drv" NO_CMD= while getopts i:b:m:c:N opt do case $opt in N ) NO_CMD=1;; i ) ADD_ALIAS=1 alias=$OPTARG cmd=$cmd" -i '$alias'" ;; m ) ADD_MINOR=1 minor=$OPTARG cmd=$cmd" -m '$minor'" ;; c) ADD_CLASS=1 class=$OPTARG cmd=$cmd" -c $class" ;; b) BASEDIR=$OPTARG cmd=$cmd" -b $BASEDIR" ;; \?) echo "check_add_drv can not handle this option" return ;; esac done shift `/usr/bin/expr $OPTIND - 1` drvname=$1 cmd=$cmd" "$drvname drvname=`echo $drvname | /usr/bin/sed 's;.*/;;g'` /usr/bin/grep "^$drvname[ ]" $BASEDIR/etc/name_to_major > /dev/null 2>&1 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 \ '"pci8086,1000" "pci8086,1001" "pci8086,1004.8086.1004" "pci8086,1004.8086.2004" "pci8086,1004.1014.10f2" "pci8086,1004.0e11.49" "pci8086,1004.0e11.b1a4" "pci8086,1008" "pci8086,1009" "pci8086,100c" "pci8086,100d" "pci8086,100e" "pci8086,100f" "pci8086,1010" "pci8086,1011" "pci8086,1012" "pci8086,1013" "pci8086,1014" "pci8086,1015" "pci8086,1016" "pci8086,1017" "pci8086,1018" "pci8086,1019" "pci8086,101a" "pci8086,101d" "pci8086,101e" "pci8086,1026" "pci8086,1027" "pci8086,1028" "pci8086,1049" "pci8086,104a" "pci8086,104b" "pci8086,104c" "pci8086,104d" "pci8086,105a" "pci8086,105b" "pci8086,105c" "pci8086,105e" "pci8086,105f" "pci8086,1060" "pci8086,1061" "pci8086,1062" "pci8086,1063" "pci8086,1075" "pci8086,1076" "pci8086,1077" "pci8086,1078" "pci8086,1079" "pci8086,107a" "pci8086,107b" "pci8086,107c" "pci8086,107d" "pci8086,107e" "pci8086,107f" "pci8086,108a" "pci8086,108b" "pci8086,108c" "pci8086,1096" "pci8086,1098" "pci8086,1099" "pci8086,109a" "pci8086,10a4" "pci8086,10a5" "pci8086,10b5" "pci8086,10b9" "pci8086,10ba" "pci8086,10bb" "pci8086,10bc" "pci8086,10bd" "pci8086,10bf" "pci8086,10c0" "pci8086,10c2" "pci8086,10c3" "pci8086,10c4" "pci8086,10c5" "pci8086,10cb" "pci8086,10cc" "pci8086,10cd" "pci8086,10ce" "pci8086,10d3" "pci8086,10d5" "pci8086,10d9" "pci8086,10da" "pci8086,10de" "pci8086,10df" "pci8086,10e5" "pci8086,10ea" "pci8086,10eb" "pci8086,10ef" "pci8086,10f0" "pci8086,10f5" "pci8086,10f6" "pci8086,150c" "pci8086,294c" "pci8086,f0fe" "pciex8086,1049" "pciex8086,104a" "pciex8086,104b" "pciex8086,104c" "pciex8086,104d" "pciex8086,105e" "pciex8086,105f" "pciex8086,1060" "pciex8086,107d" "pciex8086,107e" "pciex8086,107f" "pciex8086,108b" "pciex8086,108c" "pciex8086,1096" "pciex8086,1098" "pciex8086,109a" "pciex8086,10a4" "pciex8086,10a5" "pciex8086,10b9" "pciex8086,10ba" "pciex8086,10bb" "pciex8086,10bc" "pciex8086,10bd" "pciex8086,10bf" "pciex8086,10c0" "pciex8086,10c2" "pciex8086,10c3" "pciex8086,10c4" "pciex8086,10c5" "pciex8086,10cb" "pciex8086,10cc" "pciex8086,10cd" "pciex8086,10ce" "pciex8086,10d3" "pciex8086,10d5" "pciex8086,10d9" "pciex8086,10da" "pciex8086,10de" "pciex8086,10df" "pciex8086,10e5" "pciex8086,10ea" "pciex8086,10eb" "pciex8086,10ef" "pciex8086,10f0" "pciex8086,10f5" "pciex8086,10f6" "pciex8086,150c" "pciex8086,294c" "pciex8086,f0fe"' \ -m '* 0666 root sys' e1000g