1#!/bin/sh
2#
3# $FreeBSD$
4#
5
6# PROVIDE: dumpon
7# BEFORE: disks
8# KEYWORD: nojail
9
10. /etc/rc.subr
11
12name="dumpon"
13start_cmd="dumpon_start"
14stop_cmd="dumpon_stop"
15
16dumpon_try()
17{
18	if /sbin/dumpon "${1}" ; then
19		# Make a symlink in devfs for savecore
20		ln -fs "${1}" /dev/dumpdev
21		return 0
22	fi
23	warn "unable to specify $1 as a dump device"
24	return 1
25}
26
27dumpon_start()
28{
29	# Enable dumpdev so that savecore can see it. Enable it
30	# early so a crash early in the boot process can be caught.
31	#
32	case ${dumpdev} in
33	[Nn][Oo] | '')
34		;;
35	[Aa][Uu][Tt][Oo])
36		dev=$(/bin/kenv -q dumpdev)
37		if [ -n "${dev}" ] ; then
38			dumpon_try "${dev}"
39			return $?
40		fi
41		while read dev mp type more ; do
42			[ "${type}" = "swap" ] || continue
43			[ -c "${dev}" ] || continue
44			dumpon_try "${dev}" 2>/dev/null && return 0
45		done </etc/fstab
46		echo "No suitable dump device was found." 1>&2
47		return 1
48		;;
49	*)
50		dumpon_try "${dumpdev}"
51		;;
52	esac
53}
54
55dumpon_stop()
56{
57	case ${dumpdev} in
58	[Nn][Oo] | '')
59		;;
60	*)
61		rm -f /dev/dumpdev
62		/sbin/dumpon -v off
63		;;
64	esac
65}
66
67load_rc_config $name
68run_rc_command "$1"
69