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