diff options
Diffstat (limited to 'sys-apps/util-linux/files/crypto-loop.initd')
-rwxr-xr-x | sys-apps/util-linux/files/crypto-loop.initd | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/sys-apps/util-linux/files/crypto-loop.initd b/sys-apps/util-linux/files/crypto-loop.initd new file mode 100755 index 0000000..2886982 --- /dev/null +++ b/sys-apps/util-linux/files/crypto-loop.initd @@ -0,0 +1,70 @@ +#!/sbin/runscript +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-apps/util-linux/files/crypto-loop.initd,v 1.3 2008/02/01 12:36:44 flameeyes Exp $ + +depend() { + if [ -x /etc/init.d/root ]; then + need root + else + need checkroot + fi + need modules + before localmount +} + +start() { + local status="0" + + ebegin "Starting crypto loop devices" + + if [[ -e /etc/conf.d/crypto-loop ]] ; then + egrep "^loop" /etc/conf.d/crypto-loop | \ + while read loopline ; do + eval ${loopline} + + local configured=$(awk -v MOUNT="${device}" \ + '($2 == MOUNT) { print "yes" }' /proc/mounts) + + if [[ ${configured} != "yes" ]] ; then + einfo " Loop ${loop} on device ${device} (cipher ${cipher}, key size ${keysize}): " + + if [[ -n ${hash} ]] ; then + /usr/sbin/hashalot -n ${keysize} ${hash} </dev/tty|\ + /sbin/losetup -p 0 -e ${cipher}-${keysize} ${loop} ${device} ${other} + else + /sbin/losetup -e ${cipher}-${keysize} ${loop} ${device} ${other} + fi + + if [[ $? -ne 0 ]] ; then + ewarn "Failure configuring ${loop}. Skipping." + status=1 + fi + else + ewarn " Loop ${loop} on device ${device} are already configured" + fi + done + fi + ewend ${status} "Failed to start some loop devices." + + # We do not fail if some loop devices did not start ... + return 0 +} + +stop() { + local status="0" + for loop in $(ls /dev/loop[0-9]) ; do + losetup ${loop} &> /dev/null + if [[ $? == 0 ]] ; then + umount ${loop} &>/dev/null || swapoff "${loop}" &>/dev/null + if ! /sbin/losetup -d ${loop} &> /dev/null ; then + ewarn "Failure deconfiguring ${loop}." + status=1 + fi + fi + done + ewend ${status} +} + + +# vim:ts=4 |