#!/bin/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. # # SUNWses postinstall script # PATH="/usr/bin:/usr/sbin:${PATH}" export PATH EXIT=0 ADDDRV=/usr/sbin/add_drv REMDRV=/usr/sbin/rem_drv DRVALS=${BASEDIR}/etc/driver_aliases DEVLINKTB="$BASEDIR/etc/devlink.tab" if test ! -f ${DEVLINKTB} -o ! -w ${DEVLINKTB}; then echo "SUNWses: file ${DEVLINKTB} is missing/inacessible." >&2 exit 1 fi trap "rm -f /tmp/$$.*;exit" 0 1 2 3 13 15 TMP=/tmp/$$ # # rem_devlink - removes an entry from ${DEVLINKTB} # rem_devlink() { PATTERN="$1" LINK="$2" grep -v "^$PATTERN $LINK$" ${DEVLINKTB} >$TMP.devlink # # Must use 'cp' here in order to preserve the original # mode, owner and group of devlink.tab # cp $TMP.devlink ${DEVLINKTB} rm -f $TMP.devlink } # Returns 1 if an item is already on the list on_the_list() { NEEDLE="$1" HAYSTACK="$2" for item in $HAYSTACK do if [ $item = $NEEDLE ] then return 1 fi done return 0 } merged_aliases="" dev_aliases='"scsiclass,0d" "scsiclass,03S"' obsolete_aliases='"scsiclass,00.vSUN.pUniversal_Xport" "scsiclass,00.vSTK.pUniversal_Xport"' current_aliases=`grep \^ses ${DRVALS} | sed -e 's/^ses //g'` rem_devlink 'type=ddi_pseudo;name=ses' 'es/ses\\N0' if [ -n "$current_aliases" ] then $REMDRV -b $BASEDIR ses for current in $current_aliases do on_the_list $current "$merged_aliases" if [ $? -eq 0 ] then on_the_list $current "$obsolete_aliases" if [ $? -eq 0 ] then merged_aliases=`echo $merged_aliases $current` fi fi done for alias in $dev_aliases do on_the_list $alias "$merged_aliases" if [ $? -eq 0 ] then merged_aliases=`echo $merged_aliases $alias` fi done else merged_aliases=$dev_aliases fi ${ADDDRV} -b ${BASEDIR} -n -m '* 0666 bin bin' -i "${merged_aliases}" ses touch ${BASEDIR}/reconfigure rm -f $TMP.devlink exit ${EXIT}