xref: /dragonfly/etc/rc.d/mountcritremote (revision 0bb9290e)
1#!/bin/sh
2#
3# $NetBSD: mountcritremote,v 1.7 2002/04/29 12:29:53 lukem Exp $
4# $FreeBSD: src/etc/rc.d/mountcritremote,v 1.6 2003/06/01 01:43:37 gordon Exp $
5# $DragonFly: src/etc/rc.d/mountcritremote,v 1.6 2005/11/19 21:47:32 swildner Exp $
6#
7
8# PROVIDE: mountcritremote
9# REQUIRE: NETWORKING root mountcritlocal
10
11. /etc/rc.subr
12
13name="mountcritremote"
14stop_cmd=":"
15
16start_cmd="mountcritremote_start"
17start_precmd="mountcritremote_precmd"
18
19# Mount NFS filesystems if present in /etc/fstab
20#
21# XXX When the vfsload() issues with nfsclient support and related sysctls
22# have been resolved, this block can be removed, and the condition that
23# skips nfs in the following block (for "other network filesystems") can
24# be removed.
25#
26mountcritremote_precmd()
27{
28	case "`mount -d -a -t nfs 2> /dev/null`" in
29	*mount_nfs*)
30		# Handle absent nfs client support
31		if ! sysctl vfs.nfs >/dev/null 2>&1; then
32			kldload nfs || warn 'nfs mount ' \
33			    'requested, but no nfs client in kernel' \
34			return 1
35		fi
36		;;
37	esac
38	return 0
39}
40
41mountcritremote_start()
42{
43	# Mount nfs filesystems.
44	#
45	echo -n 'Mounting NFS file systems:'
46	mount -a -t nfs
47	echo '.'
48	# Mount other network filesystems if present in /etc/fstab.
49	case ${extra_netfs_types} in
50	[Nn][Oo])
51		;;
52	*)
53		netfs_types="${netfs_types} ${extra_netfs_types}"
54		;;
55	esac
56	for i in ${netfs_types}; do
57		fstype=${i%:*}
58		fsdecr=${i#*:}
59		[ "${fstype}" = "nfs" ] && continue
60		case "`mount -d -a -t ${fstype}`" in
61		*mount_${fstype}*)
62			echo -n "Mounting ${fsdecr} file systems:"
63			mount -a -t ${fstype}
64			echo '.'
65			;;
66		esac
67	done
68
69	# Cleanup /var again just in case it's a network mount.
70	/etc/rc.d/cleanvar reload
71	rm -f /var/run/clean_var /var/spool/lock/clean_var
72}
73
74load_rc_config $name
75run_rc_command "$1"
76