X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetlab%2Fipfw;fp=planetlab%2Fipfw;h=adec18f626952334eee1ab7de6cdcf587184c4f2;hb=ed25366da0e7a8cab426294c0b9b47176d2abdd7;hp=0000000000000000000000000000000000000000;hpb=bb0104c898ab07d1acf7a7531e7a9e0f3466ceb7;p=ipfw.git 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