3e2a13
#!/bin/bash
3e2a13
#
3e2a13
# Launch the necessary OpenSM daemons for systemd
3e2a13
#
3e2a13
# sysconfig: /etc/sysconfig/opensm
3e2a13
# config: /etc/rdma/opensm.conf
3e2a13
#
3e2a13
3e2a13
shopt -s nullglob
3e2a13
3e2a13
prog=/usr/sbin/opensm
3e2a13
[ -f /etc/sysconfig/opensm ] && . /etc/sysconfig/opensm
3e2a13
3e2a13
[ -n "$PRIORITY" ] && prio="-p $PRIORITY"
3e2a13
3e2a13
if [ -z "$GUIDS" ]; then
3e2a13
	CONFIGS=""
3e2a13
	CONFIG_CNT=0
3e2a13
	for conf in /etc/rdma/opensm.conf.[0-9]*; do
3e2a13
		CONFIGS="$CONFIGS $conf"
3e2a13
		let CONFIG_CNT++
3e2a13
	done
3e2a13
else
3e2a13
	GUID_CNT=0
3e2a13
	for guid in $GUIDS; do
3e2a13
		let GUID_CNT++
3e2a13
	done
3e2a13
fi
3e2a13
# Start opensm
3e2a13
if [ -n "$GUIDS" ]; then
3e2a13
	SUBNET_COUNT=0
3e2a13
	for guid in $GUIDS; do
3e2a13
		SUBNET_PREFIX=`printf "0xfe800000000000%02d" $SUBNET_COUNT`
3e2a13
		(while true; do $prog $prio -g $guid --subnet_prefix $SUBNET_PREFIX; sleep 30; done) &
3e2a13
		let SUBNET_COUNT++
3e2a13
	done
3e2a13
elif [ -n "$CONFIGS" ]; then
3e2a13
	for config in $CONFIGS; do
3e2a13
		(while true; do $prog $prio -F $config; sleep 30; done) &
3e2a13
	done
3e2a13
else
3e2a13
	(while true; do $prog $prio; sleep 30; done) &
3e2a13
fi
3e2a13
exit 0