1*0696600cSBjoern A. Zeeb#!/bin/sh 2*0696600cSBjoern A. Zeeb# 3*0696600cSBjoern A. Zeeb# $FreeBSD$ 4*0696600cSBjoern A. Zeeb# 5*0696600cSBjoern A. Zeeb 6*0696600cSBjoern A. Zeeb# PROVIDE: mountcritremote 7*0696600cSBjoern A. Zeeb# REQUIRE: NETWORKING FILESYSTEMS ipsec netwait 8*0696600cSBjoern A. Zeeb# KEYWORD: nojail 9*0696600cSBjoern A. Zeeb 10*0696600cSBjoern A. Zeeb. /etc/rc.subr 11*0696600cSBjoern A. Zeeb 12*0696600cSBjoern A. Zeebname="mountcritremote" 13*0696600cSBjoern A. Zeebdesc="Mount critical remote filesystems" 14*0696600cSBjoern A. Zeebstop_cmd=":" 15*0696600cSBjoern A. Zeebstart_cmd="mountcritremote_start" 16*0696600cSBjoern A. Zeebstart_precmd="mountcritremote_precmd" 17*0696600cSBjoern A. Zeeb 18*0696600cSBjoern A. Zeeb# Mount NFS filesystems if present in /etc/fstab 19*0696600cSBjoern A. Zeeb# 20*0696600cSBjoern A. Zeeb# XXX When the vfsload() issues with nfsclient support and related sysctls 21*0696600cSBjoern A. Zeeb# have been resolved, this block can be removed, and the condition that 22*0696600cSBjoern A. Zeeb# skips nfs in the following block (for "other network filesystems") can 23*0696600cSBjoern A. Zeeb# be removed. 24*0696600cSBjoern A. Zeeb# 25*0696600cSBjoern A. Zeebmountcritremote_precmd() 26*0696600cSBjoern A. Zeeb{ 27*0696600cSBjoern A. Zeeb case "`mount -d -a -t nfs 2> /dev/null`" in 28*0696600cSBjoern A. Zeeb *mount_nfs*) 29*0696600cSBjoern A. Zeeb # Handle absent nfs client support 30*0696600cSBjoern A. Zeeb load_kld -m nfs nfscl || return 1 31*0696600cSBjoern A. Zeeb ;; 32*0696600cSBjoern A. Zeeb esac 33*0696600cSBjoern A. Zeeb return 0 34*0696600cSBjoern A. Zeeb} 35*0696600cSBjoern A. Zeeb 36*0696600cSBjoern A. Zeebmountcritremote_start() 37*0696600cSBjoern A. Zeeb{ 38*0696600cSBjoern A. Zeeb local mounted_remote_filesystem=false 39*0696600cSBjoern A. Zeeb 40*0696600cSBjoern A. Zeeb # Mount nfs filesystems. 41*0696600cSBjoern A. Zeeb # 42*0696600cSBjoern A. Zeeb case "`/sbin/mount -d -a -t nfs`" in 43*0696600cSBjoern A. Zeeb '') 44*0696600cSBjoern A. Zeeb ;; 45*0696600cSBjoern A. Zeeb *) 46*0696600cSBjoern A. Zeeb mounted_remote_filesystem=true 47*0696600cSBjoern A. Zeeb echo -n 'Mounting NFS filesystems:' 48*0696600cSBjoern A. Zeeb mount -a -t nfs 49*0696600cSBjoern A. Zeeb echo '.' 50*0696600cSBjoern A. Zeeb ;; 51*0696600cSBjoern A. Zeeb esac 52*0696600cSBjoern A. Zeeb 53*0696600cSBjoern A. Zeeb # Mount other network filesystems if present in /etc/fstab. 54*0696600cSBjoern A. Zeeb case ${extra_netfs_types} in 55*0696600cSBjoern A. Zeeb [Nn][Oo]) 56*0696600cSBjoern A. Zeeb ;; 57*0696600cSBjoern A. Zeeb *) 58*0696600cSBjoern A. Zeeb netfs_types="${netfs_types} ${extra_netfs_types}" 59*0696600cSBjoern A. Zeeb ;; 60*0696600cSBjoern A. Zeeb esac 61*0696600cSBjoern A. Zeeb 62*0696600cSBjoern A. Zeeb for i in ${netfs_types}; do 63*0696600cSBjoern A. Zeeb fstype=${i%:*} 64*0696600cSBjoern A. Zeeb fsdecr=${i#*:} 65*0696600cSBjoern A. Zeeb 66*0696600cSBjoern A. Zeeb [ "${fstype}" = "nfs" ] && continue 67*0696600cSBjoern A. Zeeb 68*0696600cSBjoern A. Zeeb case "`mount -d -a -t ${fstype}`" in 69*0696600cSBjoern A. Zeeb *mount_${fstype}*) 70*0696600cSBjoern A. Zeeb mounted_remote_filesystem=true 71*0696600cSBjoern A. Zeeb echo -n "Mounting ${fsdecr} filesystems:" 72*0696600cSBjoern A. Zeeb mount -a -t ${fstype} 73*0696600cSBjoern A. Zeeb echo '.' 74*0696600cSBjoern A. Zeeb ;; 75*0696600cSBjoern A. Zeeb esac 76*0696600cSBjoern A. Zeeb done 77*0696600cSBjoern A. Zeeb 78*0696600cSBjoern A. Zeeb if $mounted_remote_filesystem; then 79*0696600cSBjoern A. Zeeb # Cleanup /var again just in case it's a network mount. 80*0696600cSBjoern A. Zeeb /etc/rc.d/cleanvar quietreload 81*0696600cSBjoern A. Zeeb rm -f /var/run/clean_var /var/spool/lock/clean_var 82*0696600cSBjoern A. Zeeb 83*0696600cSBjoern A. Zeeb # Regenerate the ldconfig hints in case there are additional 84*0696600cSBjoern A. Zeeb # library paths on remote file systems 85*0696600cSBjoern A. Zeeb /etc/rc.d/ldconfig quietstart 86*0696600cSBjoern A. Zeeb fi 87*0696600cSBjoern A. Zeeb} 88*0696600cSBjoern A. Zeeb 89*0696600cSBjoern A. Zeebload_rc_config $name 90*0696600cSBjoern A. Zeebrun_rc_command "$1" 91