xref: /OK3568_Linux_fs/buildroot/package/tpm2-abrmd/S80tpm2-abrmd (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1#!/bin/sh
2
3my_name="$0"
4
5check_required_files() {
6	[ -f "$1" ] || {
7		echo "$my_name: $1 is missing"
8		exit 1
9	}
10}
11
12check_device() {
13	ls -1 /dev/tpm[0-9]* > /dev/null 2>&1 || {
14		echo "device driver not loaded, skipping."
15		exit 0
16	}
17	chown tss:tss /dev/tpm[0-9]* && chmod 600 /dev/tpm*
18}
19
20rm_stale_pidfile() {
21	if [ -e "$1" ]; then
22		exe="/proc/$(cat "$1")/exe"
23		{ [ -s "$exe" ] && [ "$(readlink -f "$exe")" = "$2" ]; } || rm -f "$1"
24	fi
25}
26
27start() {
28	printf "Starting tpm2-abrmd: "
29	check_device
30	rm_stale_pidfile /var/run/tpm2-abrmd.pid /usr/sbin/tpm2-abrmd
31	start-stop-daemon -S -q -o -b -m -p /var/run/tpm2-abrmd.pid -c tss:tss -x /usr/sbin/tpm2-abrmd -- ${DAEMON_OPTS} || {
32		echo "FAIL"
33		exit 1
34	}
35	pidof /usr/sbin/tpm2-abrmd > /var/run/tpm2-abrmd.pid
36	echo "OK"
37}
38
39stop() {
40	printf "Stopping tpm2-abrmd: "
41	start-stop-daemon -K -q -o -p /var/run/tpm2-abrmd.pid -u tss -x /usr/sbin/tpm2-abrmd || {
42		echo "FAIL"
43		exit 1
44	}
45	rm_stale_pidfile /var/run/tpm2-abrmd.pid /usr/sbin/tpm2-abrmd
46	echo "OK"
47}
48
49check_required_files /etc/dbus-1/system.d/tpm2-abrmd.conf
50
51# defaults
52DAEMON_OPTS="--tcti=device --logger=syslog --max-connections=20"
53
54# Read configuration variable file if it is present
55[ -r /etc/default/tpm2-abrmd ] && . /etc/default/tpm2-abrmd
56
57case "$1" in
58	start)
59		start
60	       	;;
61	stop)
62	   	stop
63		;;
64	restart|reload)
65		stop
66		sleep 1
67		start
68		;;
69	*)
70		echo "Usage: tpm2-abrmd {start|stop|restart|reload}" >&2
71		exit 1
72esac
73
74exit 0
75