# Load the ipfw module, and initialize netconfig
start() {
# load the module
- modprobe $IPFW_MOD > /dev/null 2> /dev/null
+ modprobe $IPFW_MOD >& /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
+ echo "super dbcleanup" | ${IPFW_BACKEND} root >& /dev/null
+ echo "super init" | ${IPFW_BACKEND} root >& /dev/null
return $ret
}
stop() {
# clean netconfig stuff
- echo "super dbcleanup" | ${IPFW_BACKEND} root > /dev/null 2> /dev/null
+ echo "super dbcleanup" | ${IPFW_BACKEND} root >& /dev/null
echo "Unloading $IPFW_MOD module: "
# unload the ipfw module
# echo the ipfw status
status() {
# check for module presence
- LOADED=`cat /proc/modules | grep ^ipfw_mod`
- [ ! -n "$LOADED" ] && echo "ipfw not loaded" && return 0
+ grep '^ipfw_mod$' /proc/modules >& /dev/null || echo "ipfw not loaded" && return 0
# Show active users
- USERS=`cat /tmp/ff | grep BLOCK | wc -l`
+ USERS=$(grep BLOCK /tmp/ff | wc -l)
echo "ipfw is loaded and there are currently ${USERS} with active emulation."
return 0
}
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
+%clean
+rm -rf $RPM_BUILD_ROOT
+
%post
-# load the module
+### this script is also triggered while the node image is being created at build-time
+# some parts of the script do not make sense in this context
+# this is why the build exports PL_BOOTCD=1 in such cases
depmod -a
-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
+# start the service if not building
+[ -z "$PL_BOOTCD" ] && service ipfw start
-%clean
-rm -rf $RPM_BUILD_ROOT
+%postun
+# stop the service if not building
+[ -z "$PL_BOOTCD" ] && service ipfw stop
# here there is a list of the final installation directories
%files
%{_sysconfdir}/cron.d/ipfw.cron
/etc/rc.d/init.d/ipfw
-%postun
-# unload the module if present
-LOADED=`cat /proc/modules | grep ^ipfw_mod`; if [ -n "$LOADED" ] ; then rmmod ipfw_mod; fi
-
%changelog
* Mon Apr 12 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - ipfw-0.9-11
- add ipfw initialization script to chkconfig