summaryrefslogtreecommitdiffstats
path: root/etc/rc.d/encswap
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2004-02-03 11:26:08 +0000
committerdes <des@FreeBSD.org>2004-02-03 11:26:08 +0000
commitb48c64494255c2a975b3cfa00369aaf6bd6f28e7 (patch)
treecb66d62f409201d26f2df2bd5a436a1b77cfbe52 /etc/rc.d/encswap
parent69ab9ceec06f8c8729d512c71d4112ba47ebe594 (diff)
downloadFreeBSD-src-b48c64494255c2a975b3cfa00369aaf6bd6f28e7.zip
FreeBSD-src-b48c64494255c2a975b3cfa00369aaf6bd6f28e7.tar.gz
Add support for initializing swap devices with random one-shot keys. Note
that the keys are currently generated by computing the MD5 checksum of 512 bytes read from /dev/random, and are passed to gbde on the command line. Sponsored by: Teleplan AS
Diffstat (limited to 'etc/rc.d/encswap')
-rw-r--r--etc/rc.d/encswap54
1 files changed, 54 insertions, 0 deletions
diff --git a/etc/rc.d/encswap b/etc/rc.d/encswap
new file mode 100644
index 0000000..1c81d0b
--- /dev/null
+++ b/etc/rc.d/encswap
@@ -0,0 +1,54 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+
+# PROVIDE: disks
+# REQUIRE: random
+# KEYWORD: FreeBSD
+
+. /etc/rc.subr
+
+name="gbde_swap"
+start_cmd="gbde_swap_attach"
+stop_cmd="gbde_swap_detach"
+
+gbde_swap_attach()
+{
+ cat /etc/fstab |
+ while read device mountpoint type options rest ; do
+ case "${device}:${type}:${options}" in
+ *.bde:swap:sw)
+ ;;
+ *)
+ continue
+ ;;
+ esac
+ passphrase=`dd if=/dev/random count=1 2>/dev/null | md5 -q`
+ device="${device%.bde}"
+ lockfile="/var/run/${device##*/}.lock"
+ gbde init "${device}" -L "${lockfile}" -P "${passphrase}" ||
+ return 1
+ gbde attach "${device}" -l "${lockfile}" -p "${passphrase}" ||
+ return 1
+ done
+}
+
+gbde_swap_detach()
+{
+ cat /etc/fstab |
+ while read device mountpoint type options rest ; do
+ case "${device}:${type}:${options}" in
+ *.bde:swap:sw)
+ ;;
+ *)
+ continue
+ ;;
+ esac
+ device="${device%.bde}"
+ gbde detach "${device}"
+ done
+}
+
+load_rc_config $name
+run_rc_command "$1"
OpenPOWER on IntegriCloud