postinstall revision 4eaa471005973e11a6110b69fe990530b3b95a38
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# CDDL HEADER START
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# The contents of this file are subject to the terms of the
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# Common Development and Distribution License (the "License").
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# You may not use this file except in compliance with the License.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# See the License for the specific language governing permissions
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# and limitations under the License.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# When distributing Covered Code, include this CDDL HEADER in each
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# If applicable, add the following below this CDDL HEADER, with the
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# fields enclosed by brackets "[]" replaced with your own identifying
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# information: Portions Copyright [yyyy] [name of copyright owner]
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# CDDL HEADER END
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# Use is subject to license terms.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# Convert datalink configuration into a series of dladm(1M) commands and
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# keep them in an upgrade script. This script will then be run in the
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# network-physical service.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# Note that we cannot use the /var/svc/profile/upgrade script because
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# that script is run during manifest-import which is too late for
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# datalink configuration.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny MayerORIG=$BASEDIR/$AGGR_CONF
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayerif [ ! -f "${ORIG}" ]; then
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # Try the alternate location.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer ORIG=$BASEDIR/$AGGR_CONF
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# Now upgrade aggregation.conf to the new format.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayerif [ -f "${ORIG}" ]; then
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # Strip off comments, then each remaining line defines an
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # aggregation the admnistrator configured on the old system.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # Each line corresponds to one dladm command that is appended
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # to the upgrade script.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer cat $ORIG | grep '^[^#]' | while read line; do
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer echo $line | while read aggr_index rest
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer policy=`echo $rest | /usr/bin/awk '{print $1}'`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer nports=`echo $rest | /usr/bin/awk '{print $2}'`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer ports=`echo $rest | /usr/bin/awk '{print $3}'`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer mac=`echo $rest | /usr/bin/awk '{print $4}'`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer lacp_mode=`echo $rest | /usr/bin/awk '{print $5}'`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer lacp_timer=`echo $rest | /usr/bin/awk '{print $6}'`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer dladm_string="dladm create-aggr -P $policy -l \
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer $lacp_mode -T $lacp_timer"
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # A fixed MAC address
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer if [ "${mac}" != "auto" ]; then
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer dladm_string="$dladm_string -u $mac"
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer while [ $i -le "${nports}" ]; do
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer device=`echo $ports | cut -d, -f$i`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # Older aggregation.conf files have the format
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # of device_name/port_number. We don't need
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # the port number, so get rid of it if it is
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer device=`echo $device | cut -d/ -f1`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer i=`expr $i + 1`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer dladm_string="$dladm_string -d $device"
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer dladm_string="$dladm_string $aggr_index"
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer echo $dladm_string >> \
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer ${PKG_INSTALL_ROOT}/$UPGRADE_SCRIPT
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # no longer needed, get rid of it.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer removef $PKGINST $AGGR_CONF > /dev/null
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer removef -f $PKGINST > /dev/null 2>&1
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayerif [ -f "${ORIG}" ]; then
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # Strip off comments, then each remaining line lists properties
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # the administrator configured for a particular interface.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # Each line includes several properties, but we can only set
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # one property per dladm invocation.
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer cat $ORIG | grep '^[^#]' | while read line; do
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer echo $line | while read link rest
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer while [ -n "${rest}" ]; do
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer linkprop=`echo $rest | cut -d";" -f1`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer rest=`echo $rest | cut -d";" -f2-`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer echo dladm set-linkprop -p $linkprop $link >> \
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer ${PKG_INSTALL_ROOT}/$UPGRADE_SCRIPT
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer # no longer needed, get rid of it
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer removef $PKGINST /etc/dladm/linkprop.conf > /dev/null
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer removef -f $PKGINST > /dev/null 2>&1
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer# Convert (hostname|hostname6|dhcp).xxx and zonecfg vlan entries
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayerfor iftype in hostname hostname6 dhcp
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer interface_names="`echo $rootprefix/etc/$iftype.*[0-9] 2>/dev/null`"
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer if [ "$interface_names" != "$rootprefix/etc/$iftype.*[0-9]" ]; then
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer ORIGIFS="$IFS"
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer set -- $interface_names
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer IFS="$ORIGIFS"
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer while [ $# -ge 2 ]; do
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer if [ $# -gt 1 -a \
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer "$2" != "$rootprefix/etc/$iftype" ]; then
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer while [ $# -gt 1 -a \
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer "$1" != "$rootprefix/etc/$iftype" ]; do
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer host_ifs="$host_ifs $1"
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayerzones=`zoneadm list -c | grep -v global`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayerfor zone in $zones
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer zonecfg -z $zone info ip-type | grep exclusive >/dev/null
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer if [ $? -eq 0 ]; then
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer zif=`zonecfg -z $zone info net | grep physical | \
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer nawk '{print $2}'`
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayer zone_ifs="$zone_ifs $zif"
602f0b8e489620b9ca711428f5317cb0025a5f3bDanny Mayerfor ifname in $host_ifs $zone_ifs
grep $ifname $ORIG >/dev/null
for file in `ls ${PKG_INSTALL_ROOT}/etc/inet/ike/crls/* \
if dd if=$file count=2 bs=1 2>/dev/null | cat -v | \
grep "0M-^B" >/dev/null 2>&1