#!/bin/bash
#$Header: /usr/local/cvsroot/3GNetworkEmulator/Source/UUInterface/Load.Nistnet,v 1.1 2003/11/17 16:17:02 penuser Exp $
# Script to load the kernel module, saving the rtc if possible
#
# Mark Carson, NIST/UMCP
#  1/2001

# Surely there's a better way to do this...
versionstring=`uname -r | sed 's/\./ /g'`
read version0 version1 version2 << below
$versionstring
below

case $version0 in
	2)
		;;
	*)
		echo Sorry, NIST Net runs only on 2.0.xx or 2.2.xx kernels
		exit 1
		;;
esac

# This no doubt is not the way to find the system map
# for the current kernel, but hopefully it will do.
if [ -r /System.map ] ; then
	map=/System.map
elif [ -r /boot/System.map ] ; then
	map=/boot/System.map
elif [ -r /usr/src/linux/System.map ] ; then
	map=/usr/src/linux/System.map
fi

case $version1 in
	0)
		# Look for irq_action - why doesn't a pipe work? Sheesh...
		grep irq_action $map > /tmp/j$$
		read irq_action junk < /tmp/j$$
		rm /tmp/j$$
		if [ "$irq_action" != "" ] ; then
			insmod nistnet irq_desc_addr=0x$irq_action
		else
			insmod nistnet
		fi
		;;
	2)
		# Look for irq_desc - why doesn't a pipe work? Sheesh...
		grep irq_desc $map > /tmp/j$$
		read irq_desc junk < /tmp/j$$
		rm /tmp/j$$
		if [ "$irq_desc" != "" ] ; then
			insmod nistnet irq_desc_addr=0x$irq_desc
		else
			insmod nistnet
		fi
		;;
	4)
		# Try to remove rtc module
		rmmod rtc
		if [ $? != 0 ] ; then
		    echo "Couldn't find rtc module - /dev/rtc will be mostly"
		    echo "unusable after running nistnet.  Sorry about that...."
		    echo "To prevent this message, recompile rtc"
		    echo "(Enhanced Real Time Clock Support, under"
		    echo "character devices) as a module."
		else
		    echo "rtc module removed - you may want to reinstall it"
		    echo "(with insmod rtc) after you are done with nistnet"
		fi

		insmod nistnet
		echo "nistnet module installed"
		;;
	*)
		echo Sorry, NIST Net runs only on 2.0, 2.2 or 2.4 kernels
		exit 1
		;;
esac

exit 0
