#!/bin/sh
#
# fx       Load and unload the FX driver 
#
# description: Starts or shuts down the FX network filter driver (before network)


# Source function library
. /etc/rc.d/init.d/functions

release=`uname --release`

# See how we were called.
case "$1" in
  start)
	action "Installing the F/X Network Filter Driver" /sbin/insmod fx

	rm -rf /tmp/.fx
	rm -f /tmp/PlutoRunning

	if [ -f /etc/fx.conf ]
	then
		for file in `cat /etc/fx.conf`
		do

			destfile=/lib/modules/"$release"/kernel/drivers/net/"$file"
			tempfile=/lib/modules/"$release"/kernel/drivers/net/tmp
			fxfile=/lib/modules/"$release"/kernel/drivers/net/fx.o
                        cp -a "$destfile".o "$destfile"_fx.o
                        for sym in unregister_netdev register_netdev netif_rx init_etherdev dev_alloc_name ei_open ei_close ei_interrupt ei_tx_timeout ethdev_init NS8390_init
                        do
                        	fxsymname=`/bin/findsym $fxfile fx_${sym}`
                                modsymname=`/bin/findsym ${destfile}_fx.o ${sym}`
				/bin/fx_objcopy --redefine-sym ${modsymname}=${fxsymname} "$destfile"_fx.o $tempfile
				mv $tempfile "$destfile"_fx.o
			done                        
			/sbin/insmod -q "$file"_fx
		done
	fi
        
	touch /var/lock/subsys/fx
        ;;
  stop)
	if [ -f /etc/fx.conf ]
	then
		for file in `cat /etc/fx.conf`
		do
			/sbin/rmmod "$file"_fx
		done
	fi
        
	action "Removing the F/X Network Filter Driver" /sbin/rmmod fx

	rm -f /var/lock/subsys/fx
        ;;
  status)

	if [ -f /var/lock/subsys/fx ] ; then
		echo "The F/X Network Filter Driver is loaded"
	else
		echo "The F/X Network Filter Driver has not been loaded"
	fi
	;;
  restart)
	cd $CWD
	$0 stop
	$0 start
	;;
  reload)
	rmmod fx
	insmod fx
	;;
  *)
	echo "Usage: fx {start|stop|restart|reload|status}"
	exit 1
esac

exit 0

