Added the ipfw init script.
authormarta <marta@8c455092-636d-4788-adf5-e71def0336e8>
Fri, 5 Mar 2010 12:41:04 +0000 (12:41 +0000)
committermarta <marta@8c455092-636d-4788-adf5-e71def0336e8>
Fri, 5 Mar 2010 12:41:04 +0000 (12:41 +0000)
planetlab/ipfw [new file with mode: 0755]
planetlab/ipfwroot.spec

diff --git a/planetlab/ipfw b/planetlab/ipfw
new file mode 100755 (executable)
index 0000000..adec18f
--- /dev/null
@@ -0,0 +1,85 @@
+#!/bin/sh
+#
+# ipfw init the emulation service
+#
+# chkconfig: 2345 09 91
+# description: ipfw init and shutdown
+#
+
+# Source function library.
+. /etc/init.d/functions
+
+IPFW=ipfw
+IPFW_BACKEND=/vsys/ipfw-be
+IPFW_MOD=ipfw_mod
+
+if [ ! -x /sbin/$IPFW ] || [ ! -x ${IPFW_BACKEND} ]; then
+    echo -n "/sbin/$IPFW does not exist."; warning; echo
+    exit 0
+fi
+
+# Load the ipfw module, and initialize netconfig
+start() {
+       # load the module
+       modprobe $IPFW_MOD > /dev/null 2> /dev/null
+       let ret=$?;
+        [ $ret -eq 0 ] && success || failure
+
+       # init netconfig
+       echo "super dbcleanup" | ${IPFW_BACKEND} root > /dev/null 2> /dev/null
+       echo "super init" | ${IPFW_BACKEND} root > /dev/null 2> /dev/null
+
+       return $ret
+}
+
+stop() {
+       # clean netconfig stuff
+       echo "super dbcleanup" | ${IPFW_BACKEND} root > /dev/null 2> /dev/null
+       echo "Unloading $IPFW_MOD module: "
+
+       # unload the ipfw module
+       rmmod ${IPFW_MOD}
+       let ret=$?;
+       [ $ret -eq 0 ] && success || failure
+
+       return $ret
+}
+
+# echo the ipfw status
+status() {
+       # check for module presence
+       LOADED=`cat /proc/modules | grep ^ipfw_mod`
+       [ ! -n "$LOADED" ] && echo "ipfw not loaded" && return 0
+
+       # Show active users
+       USERS=`cat /tmp/ff | grep BLOCK | wc -l`
+       echo "ipfw is loaded and there are currently ${USERS} with active emulation."
+       return 0
+}
+
+# main
+case "$1" in
+    start)
+       start
+       RETVAL=$?
+       ;;
+    stop)
+       stop
+       RETVAL=$?
+       ;;
+    restart)
+       stop
+       start
+       RETVAL=$?
+       ;;
+    status)
+       status
+       RETVAL=$?
+       ;;
+    *)
+       echo $"Usage: $0 {start|stop|restart|status}"
+       exit 1
+       ;;
+esac
+
+exit $RETVAL
index 23bb721..ca0eeaa 100644 (file)
@@ -59,6 +59,7 @@ rm -rf $RPM_BUILD_ROOT
 install -D -m 755 dummynet2/ipfw_mod.ko $RPM_BUILD_ROOT/lib/modules/%{kernel_id}/net/netfilter/ipfw_mod.ko
 install -D -m 755 ipfw/ipfw $RPM_BUILD_ROOT/sbin/ipfw
 install -D -m 644 planetlab/ipfw.cron $RPM_BUILD_ROOT/%{_sysconfdir}/cron.d/ipfw.cron
+install -D -m 755 planetlab/ipfw $RPM_BUILD_ROOT/etc/rc.d/init.d/ipfw
 
 %post
 # load the module
@@ -67,6 +68,8 @@ modprobe ipfw_mod
 # clean the old database and initialize the firewall
 echo "super dbcleanup" | /vsys/ipfw-be root
 echo "super init" | /vsys/ipfw-be root
+# add ipfw to chkconfig
+/sbin/chkconfig --add ipfw
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -87,9 +90,6 @@ LOADED=`cat /proc/modules | grep ^ipfw_mod`; if [ -n "$LOADED" ] ; then rmmod ip
 * Wed Mar 03 2010 Talip Baris Metin <Talip-Baris.Metin@sophia.inria.fr> - ipfw-0.9-10
 - - Load module at installation - Marta
 
-* Mon Mar 01 2010 Marta Carbone <marta.carbone@iet.unipi.it>
-- Load the module at installation time
-
 * Mon Jan 11 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - ipfw-0.9-9
 - consistent with vsys-scripts-0.95-13