aboutsummaryrefslogtreecommitdiff
path: root/libexec/rc/rc.d/ipfs
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/rc/rc.d/ipfs')
-rwxr-xr-xlibexec/rc/rc.d/ipfs56
1 files changed, 56 insertions, 0 deletions
diff --git a/libexec/rc/rc.d/ipfs b/libexec/rc/rc.d/ipfs
new file mode 100755
index 000000000000..2ec4ad3b1d00
--- /dev/null
+++ b/libexec/rc/rc.d/ipfs
@@ -0,0 +1,56 @@
+#!/bin/sh
+#
+#
+
+# PROVIDE: ipfs
+# REQUIRE: ipnat
+# BEFORE: netif
+# KEYWORD: nojail shutdown
+
+. /etc/rc.subr
+
+name="ipfs"
+desc="Saves and restores information for NAT and state tables"
+rcvar="ipfs_enable"
+start_cmd="ipfs_start"
+stop_cmd="ipfs_stop"
+start_precmd="ipfs_prestart"
+
+ipfs_prestart()
+{
+ # Do not continue if either ipnat or ipfilter is not enabled or
+ # if the ipfilter module is not loaded.
+ #
+ if ! checkyesno ipfilter_enable -o ! checkyesno ipnat_enable ; then
+ err 1 "${name} requires either ipfilter or ipnat enabled"
+ fi
+ if ! ${ipfilter_program:-/sbin/ipf} -V | grep -q 'Running: yes' >/dev/null 2>&1; then
+ err 1 "ipfilter module is not loaded"
+ fi
+ return 0
+}
+
+ipfs_start()
+{
+ if [ -r /var/db/ipf/ipstate.ipf -a -r /var/db/ipf/ipnat.ipf ]; then
+ ${ipfs_program} -R ${rc_flags}
+ rm -f /var/db/ipf/ipstate.ipf /var/db/ipf/ipnat.ipf
+ fi
+}
+
+ipfs_stop()
+{
+ if [ ! -d /var/db/ipf ]; then
+ mkdir /var/db/ipf
+ chmod 700 /var/db/ipf
+ chown root:wheel /var/db/ipf
+ fi
+ ${ipfs_program} -W ${rc_flags}
+}
+
+load_rc_config $name
+
+# doesn't make sense to run in a svcj: config setting
+ipfs_svcj="NO"
+
+run_rc_command "$1"