1#!/bin/bash 2# 3# Init file for the TrouSerS TCG Core Services daemon 4# 5# chkconfig: - 90 10 6# description: TrouSerS server daemon 7# 8# processname: tcsd 9# config: /etc/tcsd.conf 10# pidfile: /var/run/tcsd.pid 11# 12# Return values according to LSB for all commands but status: 13# 0 - success 14# 1 - generic or unspecified error 15# 2 - invalid or excess argument(s) 16# 3 - unimplemented feature (e.g. "reload") 17# 4 - insufficient privilege 18# 5 - program is not installed 19# 6 - program is not configured 20# 7 - program is not running 21# 22 23prog="tcsd" 24 25# source function library 26. /etc/rc.d/init.d/functions 27 28# Allow anyone to run status 29if [ "$1" = "status" ] ; then 30 status $prog 31 RETVAL=$? 32 exit $RETVAL 33fi 34 35# Check that we are root ... so non-root users stop here 36test $EUID = 0 || exit 4 37 38# pull in sysconfig settings 39test -f /etc/sysconfig/tcsd && . /etc/sysconfig/tcsd 40 41RETVAL=0 42 43# Some variables to make the below more readable 44TCSD=/usr/sbin/tcsd 45PID_FILE=/var/run/tcsd.pid 46INSMOD=/sbin/insmod 47LSMOD=/sbin/lsmod 48GREP=/bin/grep 49 50load_drivers() 51{ 52 for d in `echo /lib/modules/$(uname -r)/kernel/drivers/char/tpm/tpm_*`; do 53 $INSMOD $d 54 if test $? -eq 0; then 55 break; 56 fi 57 done 58} 59 60check_drivers() 61{ 62 $LSMOD | $GREP tpm_ 63} 64 65start() 66{ 67 test -x $TCSD || exit 5 68 test -f /etc/tcsd.conf || exit 6 69 check_drivers || load_drivers || failure 70 echo -n $"Starting $prog: " 71 $TCSD $OPTIONS && success || failure 72 RETVAL=$? 73 [ "$RETVAL" = 0 ] && touch /var/lock/subsys/tcsd 74 echo 75} 76 77stop() 78{ 79 echo -n $"Stopping $prog: " 80 killproc $prog 81 RETVAL=$? 82 [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/tcsd 83 echo 84} 85 86case "$1" in 87 start) 88 start 89 ;; 90 stop) 91 stop 92 ;; 93 restart) 94 test -f /etc/tcsd.conf || exit 6 95 stop 96 start 97 ;; 98 reload|force-reload) 99 restart 100 ;; 101 condrestart|try-restart) 102 if [ -f /var/lock/subsys/tcsd ] ; then 103 restart 104 fi 105 ;; 106 *) 107 echo $"Usage: $0 {start|stop|restart|reload|force-reload|condrestart|try-restart|status}" 108 RETVAL=3 109esac 110exit $RETVAL 111