diff options
Diffstat (limited to 'libexec/rc/rc.d/mountd')
| -rwxr-xr-x | libexec/rc/rc.d/mountd | 79 | 
1 files changed, 79 insertions, 0 deletions
diff --git a/libexec/rc/rc.d/mountd b/libexec/rc/rc.d/mountd new file mode 100755 index 000000000000..dfd2431f9c35 --- /dev/null +++ b/libexec/rc/rc.d/mountd @@ -0,0 +1,79 @@ +#!/bin/sh +# +# + +# PROVIDE: mountd +# REQUIRE: NETWORKING rpcbind quota mountlate +# KEYWORD: nojailvnet shutdown + +. /etc/rc.subr + +name="mountd" +desc="Service remote NFS mount requests" +rcvar="mountd_enable" +command="/usr/sbin/${name}" +pidfile="/var/run/${name}.pid" +required_files="/etc/exports" +start_precmd="mountd_precmd" +extra_commands="reload" + +: ${mountd_svcj_options:="net_basic nfsd"} + +mountd_precmd() +{ + +	# Load the modules now, so that the vfs.nfsd sysctl +	# oids are available. +	load_kld nfsd || return 1 + +	# Do not force rpcbind to be running for an NFSv4 only server. +	# +	if checkyesno nfsv4_server_only; then +		echo 'NFSv4 only server' +		sysctl vfs.nfsd.server_min_nfsvers=4 > /dev/null +		sysctl vfs.nfsd.server_max_nfsvers=4 > /dev/null +		rc_flags="${rc_flags} -R" +	else +		force_depend rpcbind || return 1 +		if checkyesno nfsv4_server_enable; then +			sysctl vfs.nfsd.server_max_nfsvers=4 > /dev/null +		else +			sysctl vfs.nfsd.server_max_nfsvers=3 > /dev/null +		fi +	fi + +	# mountd flags will differ depending on rc.conf settings +	# +	if checkyesno nfs_server_enable || checkyesno nfsv4_server_only; then +		if checkyesno weak_mountd_authentication; then +			if checkyesno nfsv4_server_only; then +				echo -n 'weak_mountd_authentication ' +				echo -n 'incompatible with nfsv4_server_only, ' +				echo 'ignored' +			else +				rc_flags="${rc_flags} -n" +			fi +		fi +	else +		if checkyesno mountd_enable; then +			checkyesno weak_mountd_authentication && rc_flags="-n" +		fi +	fi + +	if checkyesno zfs_enable; then +		rc_flags="${rc_flags} /etc/exports /etc/zfs/exports" +	fi + +	rm -f /var/db/mountdtab +	( umask 022 ; > /var/db/mountdtab ) || +	    err 1 'Cannot create /var/db/mountdtab' +} + +load_rc_config $name +load_rc_config nfsd +load_rc_config zfs + +# precmd is not compatible with svcj +mountd_svcj="NO" + +run_rc_command "$1"  | 
