1 #! /bin/sh 2 # 3 # CDDL HEADER START 4 # 5 # The contents of this file are subject to the terms of the 6 # Common Development and Distribution License (the "License"). 7 # You may not use this file except in compliance with the License. 8 # 9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 # or http://www.opensolaris.org/os/licensing. 11 # See the License for the specific language governing permissions 12 # and limitations under the License. 13 # 14 # When distributing Covered Code, include this CDDL HEADER in each 15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 # If applicable, add the following below this CDDL HEADER, with the 17 # fields enclosed by brackets "[]" replaced with your own identifying 18 # information: Portions Copyright [yyyy] [name of copyright owner] 19 # 20 # CDDL HEADER END 21 # 22 23 # 24 # Copyright 2006 Sun Microsystems, Inc. All rights reserved. 25 # Use is subject to license terms. 26 # 27 #pragma ident "%Z%%M% %I% %E% SMI" 28 # 29 30 # 31 # install the Sun Crypto Accelerator 1000 device drivers. 32 # 33 34 PATH="/usr/bin:/usr/sbin:${PATH}" 35 export PATH 36 37 # Add hardware provider section for the dca driver 38 # to /etc/crypto/kcf.conf 39 40 pkg_start="# Start $PKGINST" 41 pkg_end="# End $PKGINST" 42 kcfconf=${BASEDIR}/etc/crypto/kcf.conf 43 tmpfile=/tmp/$$kcfconf 44 error=no 45 46 # 47 # If /etc/crypto/kcf.conf doesn't exist, bail immediately 48 # 49 if [ ! -f "$kcfconf" ] 50 then 51 echo "$0: ERROR - $kcfconf doesn't exist" 52 exit 2 53 fi 54 55 # 56 # If the package has been already installed, remove old entries 57 # 58 start=0 59 end=0 60 egrep -s "$pkg_start" $kcfconf && start=1 61 egrep -s "$pkg_end" $kcfconf && end=1 62 63 if [ $start -ne $end ] ; then 64 echo "$0: missing Start or End delimiters for $PKGINST in $kcfconf." 65 echo "$0: $kcfconf may be corrupted and was not updated." 66 error=yes 67 exit 2 68 fi 69 70 # to preserve the gid 71 cp -p $kcfconf $tmpfile || error=yes 72 if [ $start -eq 1 ] 73 then 74 sed -e "/$pkg_start/,/$pkg_end/d" $kcfconf > $tmpfile || error=yes 75 fi 76 77 # 78 # Append the delimiters for this package 79 # 80 echo "$pkg_start driver_names=dca" >> $tmpfile || error=yes 81 echo "$pkg_end" >> $tmpfile || error=yes 82 83 # 84 # Install the updated config file and clean up the tmp file 85 # 86 if [ "$error" = no ] 87 then 88 mv $tmpfile $kcfconf || error=yes 89 fi 90 rm -f $tmpfile 91 92 # 93 # All done, if any of the steps above fail, report the error 94 # 95 if [ "$error" = yes ] 96 then 97 echo "$0: ERROR - failed to update $kcfconf." 98 exit 2 99 fi 100 101 NAMEMAJOR="${BASEDIR}/etc/name_to_major" 102 103 # 104 # Is the hardware there? 105 # 106 check_hardware() 107 { 108 for i in "pci14e4,5820" "pci14e4,5821" "pci14e4,5822" "pci14e4,5825" \ 109 "pci108e,5454" "pci108e,5455" "pci108e,5456" "pci108e,5457" 110 do 111 prtconf -pv | egrep -s "$i" 112 if [ $? -eq 0 ] 113 then 114 return 1 115 fi 116 done 117 return 0 118 } 119 120 hw_opt= 121 check_hardware 122 if [ $? -eq 0 ] 123 then 124 hw_opt="-n" 125 fi 126 127 if [ "${BASEDIR:=/}" = "/" ] 128 then 129 ADD_DRV="/usr/sbin/add_drv $hw_opt" 130 else 131 ADD_DRV="/usr/sbin/add_drv $hw_opt -b ${BASEDIR}" 132 fi 133 134 grep -w dca ${NAMEMAJOR} > /dev/null 2>&1 135 if [ $? -ne 0 ] 136 then 137 $ADD_DRV -i '"pci14e4,5820" "pci14e4,5821" "pci14e4,5822" "pci14e4,5825" "pci108e,5454" "pci108e,5455" "pci108e,5456" "pci108e,5457"' \ 138 dca || exit 1 139 fi 140 141 exit 0