diff --git a/GNUmakefile b/GNUmakefile index c28c00b0..69ff8acd 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -18,6 +18,8 @@ TARBALL_DIR = imunes_$(IMUNESDATE) RELEASE_DIR = imunes-$(IMUNESVER) UNAME_S = $(shell uname -s) VROOT_EXISTS = $(shell [ -d /var/imunes/vroot ] && echo 1 || echo 0 ) +SERVICEDIR=/usr/local/etc/rc.d +STARTUPDIR=/var/imunes-service BASEFILES = COPYRIGHT README VERSION CONFIGFILES = $(wildcard config/*.tcl) @@ -131,6 +133,8 @@ uninstall: for file in imunes $(notdir $(TOOLS)); do \ rm -f $(BINDIR)/$${file}; \ done ; + rm -rf $(STARTUPDIR) + rm -rf $(SERVICEDIR)/imunes-service.sh netgraph: ifeq ($(UNAME_S), FreeBSD) @@ -164,6 +168,25 @@ else @echo "/var/imunes/vroot does not exist, exiting..." endif +service: +ifeq ($(UNAME_S), FreeBSD) + cp scripts/imunes-service.sh $(SERVICEDIR) + chmod 755 $(SERVICEDIR)/imunes-service.sh + mkdir -p $(STARTUPDIR) + @echo "" + @echo "Created directory $(STARTUPDIR)" + @echo "To start the experiment on boot, copy a topology to this folder." +endif + +noservice: +ifeq ($(UNAME_S), FreeBSD) + rm -rf $(SERVICEDIR)/imunes-service.sh + @echo "" + @echo "Removed $(SERVICEDIR)/imunes-service.sh" + @echo "To remove startup topologies, remove $(STARTUPDIR)" +endif + + tarball: rm -f ../$(TARBALL_DIR).tar.gz diff --git a/scripts/imunes-service.sh b/scripts/imunes-service.sh new file mode 100755 index 00000000..97a6e38d --- /dev/null +++ b/scripts/imunes-service.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +. /etc/rc.subr + +name="imunes-service" +start_cmd="${name}_start" +stop_cmd=":" + +imunes-service_start() { + startupFolder="/var/imunes-service" + export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin + for topology in `ls $startupFolder`; do + imunes -b $startupFolder/$topology + done +} + +load_rc_config $name +run_rc_command "$1"