From ed25366da0e7a8cab426294c0b9b47176d2abdd7 Mon Sep 17 00:00:00 2001 From: marta Date: Fri, 5 Mar 2010 12:41:04 +0000 Subject: [PATCH] Added the ipfw init script. --- planetlab/ipfw | 85 +++++++++++++++++++++++++++++++++++++++++ planetlab/ipfwroot.spec | 6 +-- 2 files changed, 88 insertions(+), 3 deletions(-) create mode 100755 planetlab/ipfw diff --git a/planetlab/ipfw b/planetlab/ipfw new file mode 100755 index 0000000..adec18f --- /dev/null +++ b/planetlab/ipfw @@ -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 diff --git a/planetlab/ipfwroot.spec b/planetlab/ipfwroot.spec index 23bb721..ca0eeaa 100644 --- a/planetlab/ipfwroot.spec +++ b/planetlab/ipfwroot.spec @@ -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 - ipfw-0.9-10 - - Load module at installation - Marta -* Mon Mar 01 2010 Marta Carbone -- Load the module at installation time - * Mon Jan 11 2010 Thierry Parmentelat - ipfw-0.9-9 - consistent with vsys-scripts-0.95-13 -- 2.43.0