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