summaryrefslogtreecommitdiff
path: root/usr/src/tools/scripts/bfu.sh
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/tools/scripts/bfu.sh')
-rw-r--r--usr/src/tools/scripts/bfu.sh29
1 files changed, 29 insertions, 0 deletions
diff --git a/usr/src/tools/scripts/bfu.sh b/usr/src/tools/scripts/bfu.sh
index 85a6406488..2dec0c1bc0 100644
--- a/usr/src/tools/scripts/bfu.sh
+++ b/usr/src/tools/scripts/bfu.sh
@@ -1909,6 +1909,7 @@ multiboot_archives=no
dca_to_multi=no
is_pcfs_boot=no
need_datalink=no
+new_dladm=no
test $# -ge 1 || usage
@@ -2130,6 +2131,15 @@ if $ZCAT $cpiodir/generic.root$ZFIX | cpio -it 2>/dev/null | \
need_datalink=yes
fi
+#
+# Check whether the archives have an etc/dladm directory; this is
+# later used to determine if aggregation.conf needs to be moved.
+#
+if $ZCAT $cpiodir/generic.root$ZFIX | cpio -it 2>/dev/null | \
+ grep etc/dladm > /dev/null 2>&1 ; then
+ new_dladm=yes
+fi
+
time_ref=/tmp/bfu.time_ref.$$
rm -f $time_ref
touch $time_ref || fail "$time_ref: Unable to create time reference."
@@ -6295,6 +6305,25 @@ mondo_loop() {
create_datalink_conf
fi
+ # Move existing /etc/aggregation.conf entries to
+ # /etc/dladm/aggregation.conf; or, if bfu'ing
+ # backwards, move aggregation.conf back to /etc
+ aggr_old=$rootprefix/etc/aggregation.conf
+ aggr_new=$rootprefix/etc/dladm/aggregation.conf
+ if [ $new_dladm = yes ]; then
+ if [ -f $aggr_old ]; then
+ # use cat instead of cp/mv to keep owner+group of dest
+ cat $aggr_old > $aggr_new
+ rm -f $aggr_old
+ fi
+ else
+ if [ -f $aggr_new ]; then
+ cp $aggr_new $aggr_old
+ chgrp sys $aggr_old
+ rm -rf $rootprefix/etc/dladm
+ fi
+ fi
+
print "\nRestoring configuration files.\n"
cd $root