avoid attempting to run anything at build-time & cleaned up
authorthierry <thierry@8c455092-636d-4788-adf5-e71def0336e8>
Tue, 13 Apr 2010 14:54:12 +0000 (14:54 +0000)
committerthierry <thierry@8c455092-636d-4788-adf5-e71def0336e8>
Tue, 13 Apr 2010 14:54:12 +0000 (14:54 +0000)
planetlab/ipfw
planetlab/ipfwroot.spec

index adec18f..114cafb 100755 (executable)
@@ -21,20 +21,20 @@ fi
 # Load the ipfw module, and initialize netconfig
 start() {
        # load the module
 # 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
        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
 
        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 "Unloading $IPFW_MOD module: "
 
        # unload the ipfw module
@@ -48,11 +48,10 @@ stop() {
 # echo the ipfw status
 status() {
        # check for module presence
 # 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
 
        # 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
 }
        echo "ipfw is loaded and there are currently ${USERS} with active emulation."
        return 0
 }
index d0da641..30da96e 100644 (file)
@@ -61,18 +61,21 @@ 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
 
 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
 %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
 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
 /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
 
 # here there is a list of the final installation directories
 %files
@@ -83,10 +86,6 @@ rm -rf $RPM_BUILD_ROOT
 %{_sysconfdir}/cron.d/ipfw.cron
 /etc/rc.d/init.d/ipfw
 
 %{_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
 %changelog
 * Mon Apr 12 2010 Thierry Parmentelat <thierry.parmentelat@sophia.inria.fr> - ipfw-0.9-11
 - add ipfw initialization script to chkconfig