#!/bin/bash -x
#
# Copyright (c) 2017 Mellanox Technologies. All rights reserved.
#
# This Software is licensed under one of the following licenses:
#
# 1) under the terms of the "Common Public License 1.0" a copy of which is
#    available from the Open Source Initiative, see
#    http://www.opensource.org/licenses/cpl.php.
#
# 2) under the terms of the "The BSD License" a copy of which is
#    available from the Open Source Initiative, see
#    http://www.opensource.org/licenses/bsd-license.php.
#
# 3) under the terms of the "GNU General Public License (GPL) Version 2" a
#    copy of which is available from the Open Source Initiative, see
#    http://www.opensource.org/licenses/gpl-license.php.
#
# Licensee has the right to choose one of the above licenses.
#
# Redistributions of source code must retain the above copyright
# notice and one of the license notices.
#
# Redistributions in binary form must reproduce both the above copyright
# notice, one of the license notices in the documentation
# and/or other materials provided with the distribution.
#

DEST_DIR=$1

# is systemd supported and systemctl exists
if (systemctl 2>/dev/null | grep -qw "\\-\.mount" 2>/dev/null); then
	install -d ${DEST_DIR}/lib/systemd/system
	install -d ${DEST_DIR}/etc/systemd/system
	install -m 0644 ofed_scripts/openibd.service ${DEST_DIR}/lib/systemd/system
	# Prevent ordering cycle on sysinit.target/start
	sed -i 's/ sysinit.target//g' ${DEST_DIR}/lib/systemd/system/openibd.service
	install -m 0644 ofed_scripts/mlnx_interface_mgr\@.service  ${DEST_DIR}/etc/systemd/system
	echo 'DRIVERS=="*mlx*", SUBSYSTEM=="net", ACTION=="add",RUN+="/bin/systemctl --no-block start mlnx_interface_mgr@$env{INTERFACE}.service"' >> ${DEST_DIR}/etc/udev/rules.d/90-ib.rules
	echo 'DRIVERS=="*mlx*", SUBSYSTEM=="net", ACTION=="remove",RUN+="/bin/systemctl stop mlnx_interface_mgr@$env{INTERFACE}.service"' >> ${DEST_DIR}/etc/udev/rules.d/90-ib.rules
	echo '# For IPoIB Pkeys' >> ${DEST_DIR}/etc/udev/rules.d/90-ib.rules
	echo 'KERNEL=="ib[0-9]*\.*|*nfiniband[0-9]*\.*", DRIVERS=="", SUBSYSTEM=="net", ACTION=="add",RUN+="/bin/systemctl --no-block start mlnx_interface_mgr@$env{INTERFACE}.service"' >> ${DEST_DIR}/etc/udev/rules.d/90-ib.rules
	echo 'KERNEL=="ib[0-9]*\.*|*nfiniband[0-9]*\.*", DRIVERS=="", SUBSYSTEM=="net", ACTION=="remove",RUN+="/bin/systemctl stop mlnx_interface_mgr@$env{INTERFACE}.service"' >> ${DEST_DIR}/etc/udev/rules.d/90-ib.rules
else
	# no systemd support
	echo 'DRIVERS=="*mlx*", SUBSYSTEM=="net", ACTION=="add", RUN+="/bin/mlnx_interface_mgr.sh $env{INTERFACE} <&- >/dev/null 2>&1 &"' >> ${DEST_DIR}/etc/udev/rules.d/90-ib.rules
	echo '# For IPoIB Pkeys' >> ${DEST_DIR}/etc/udev/rules.d/90-ib.rules
	echo 'KERNEL=="ib[0-9]*\.*|*nfiniband[0-9]*\.*", DRIVERS=="", SUBSYSTEM=="net", ACTION=="add", RUN+="/bin/mlnx_interface_mgr.sh $env{INTERFACE} <&- >/dev/null 2>&1 &"' >> ${DEST_DIR}/etc/udev/rules.d/90-ib.rules
fi
