#!/bin/bash
#
# lc_modprobe - add lustre module options into modprobe.conf or 
#               modules.conf
#
#################################################################################

# Get the library of functions
. /usr/lib/lustre/lc_common

# Check the kernel version
KERNEL_VERSION=`uname -r`
KERNEL_VERSION=${KERNEL_VERSION:0:3}

if [ "${KERNEL_VERSION}" = "2.4" ]; then
	MODULE_CONF=/etc/modules.conf
else
	MODULE_CONF=/etc/modprobe.conf
fi

read -r NETWORKS
MODLINES_FILE=/tmp/modlines$$.txt
START_MARKER=$"# start lustre config"
END_MARKER=$"# end lustre config"

# Generate a temp file contains lnet options lines 
generate_lnet_lines() {
	local LNET_LINE TMP_LINE

	TMP_LINE="${NETWORKS}"

	echo ${START_MARKER} > ${MODLINES_FILE}
	echo "# Lustre module options added automatically by `basename $0`" >> ${MODLINES_FILE}
	while true; do
		LNET_LINE=${TMP_LINE%%\\n*}
        	echo ${LNET_LINE} >> ${MODLINES_FILE}

        	TMP_LINE=${TMP_LINE#*\\n}

		if [ "${TMP_LINE}" == "${LNET_LINE}" ]; then
                	break
        	fi
	done
	echo ${END_MARKER} >> ${MODLINES_FILE}

	#echo "--------------${MODLINES_FILE}--------------"
	#cat ${MODLINES_FILE}
	#echo -e "------------------------------------------\n"

	return 0
}

if ! generate_lnet_lines; then
	exit 1	
fi

MODULE_CONF=$(fcanon ${MODULE_CONF})
# Add lnet options lines to the module configuration file
if [ -e ${MODULE_CONF} ]; then
	# Delete the old options
	sed -i "/${START_MARKER}/,/${END_MARKER}/d" ${MODULE_CONF}
fi

cat ${MODLINES_FILE} >> ${MODULE_CONF}
rm -f ${MODLINES_FILE}
exit 0
