i.kcfconf revision 7c478bd95313f5f23a4c958a745db2134aa03244
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater# Use is subject to license terms.
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# CDDL HEADER START
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater# The contents of this file are subject to the terms of the
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# Common Development and Distribution License, Version 1.0 only
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# (the "License"). You may not use this file except in compliance
bef75d63d74f58abc0f834ed271526672777ba29Automatic Updater# with the License.
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# See the License for the specific language governing permissions
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# and limitations under the License.
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# When distributing Covered Code, include this CDDL HEADER in each
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater# If applicable, add the following below this CDDL HEADER, with the
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# fields enclosed by brackets "[]" replaced with your own identifying
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# information: Portions Copyright [yyyy] [name of copyright owner]
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# CDDL HEADER END
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# ident "%Z%%M% %I% %E% SMI"
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# Class action script for "kcfconf" class files.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# This script appends the input file from the package to the
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# The syntax of the input file for a kernel software provider package is
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <provider_name>:supportedlist=<mechlist>
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt# <provider_name> ::= the kernel software module base name
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <mechlist> ::= <mechanism>{,<mechanism>}*
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <mechanism> ::= a mechanism name as specified by the RSA PKCS#11 spec.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# The syntax of the input file for a cryptographic provider device driver(s)
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# driver_names=<driver_name_list>
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <driver_name_list> ::= <name>{,<name>}*
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User# <name> ::= a device driver name
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userpkg_start="# Start $PKGINST"
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userpkg_end="# End $PKGINST"
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Usertmpfile=/tmp/$$kcfconf
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox Userwhile read src dest
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User [ "$src" = /dev/null ] && continue
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ -f "$dest" ]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # For multiple input files; exit if error occurred in previous
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # input file.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ "$error" = yes ]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$0: failed to update $lastdest for $PKGINST."
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt lastdest=$dest
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # If the package has been already installed, remove old entries
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User egrep -s "$pkg_start" $dest && start=1
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt egrep -s "$pkg_end" $dest && end=1
553ead32ff5b00284e574dcabc39115d4d74ec66Evan Hunt if [ $start -ne $end ]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$0: missing Start or End delimiters for \
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater $PKGINST in $dest."
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater echo "$0: $dest may be corrupted and was not updated."
77dccf2a5d9327d16b4374a135cdb99bdd48620eAutomatic Updater if [ $start -eq 1 ]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User sed -e "/$pkg_start/,/$pkg_end/d" $dest > $tmpfile \
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User cp $dest $tmpfile || error=yes
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater # Check the input file syntax and append the input entries
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # with the package delimiters.
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater line_count=`wc -l $src | awk '{ print $1}'`
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater grep "driver_names" $src > /dev/null
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater if [ $? -eq 0 ]
7717ec7a6a898cdd3c35cbfba66010b7304ffd9bAutomatic Updater # This is a device driver package.
7717ec7a6a898cdd3c35cbfba66010b7304ffd9bAutomatic Updater # - $src should contain only one line.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # - If syntax of $src is correct, append the package
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # start delimiter with the driver_names string.
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ $line_count -ne 1 ]; then
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$0: Syntax Error - $src for $PKGINST."
a3f8c8e20780e488141d200acdfea6c5f3303513Automatic Updater echo "$pkg_start `cat $src`" >> $tmpfile \
a3f8c8e20780e488141d200acdfea6c5f3303513Automatic Updater # This is a kernel software provider package.
a3f8c8e20780e488141d200acdfea6c5f3303513Automatic Updater # - Each line in $src should contain "supportedlist".
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User # - If syntax of $src is correct, append the package
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User # start delimiter and the $src file.
ef8014e56f35bb36daa5fd2c313f5e7963e97aa1Tinderbox User supported_count=`grep supportedlist $src |wc -l`
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ $line_count -ne $supported_count ]
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater echo "$0: Syntax Error - $src for $PKGINST."
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$pkg_start" >> $tmpfile || error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User cat $src >> $tmpfile || error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$pkg_end" >> $tmpfile || error=yes
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User # Install the updated config file and clean up the tmp file
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User if [ "$error" = no ]
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User mv $tmpfile $dest || error=yes
0a7ed88633a680bb881868b75ded4d09a7bbbc50Automatic Updater rm -f $tmpfile
2eeb74d1cf5355dd98f6d507a10086e16bb08c4bTinderbox User echo "$0: ERROR - $dest doesn't exist for $PKGINST."
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox Userif [ "$error" = yes ]
6ea2385360e9e2167e65f9286447da9eea189457Tinderbox User echo "$0: ERROR - failed to update $lastdest for $PKGINST."