xref: /freebsd/libexec/rc/rc.d/nfsd (revision a4e5e0106ac7145f56eb39a691e302cabb4635be)
1#!/bin/sh
2#
3#
4
5# PROVIDE: nfsd
6# REQUIRE: mountcritremote mountd hostname gssd nfsuserd
7# KEYWORD: nojailvnet shutdown
8
9. /etc/rc.subr
10
11name="nfsd"
12desc="Remote NFS server"
13rcvar="nfs_server_enable"
14command="/usr/sbin/${name}"
15nfs_server_vhost=""
16
17load_rc_config $name
18start_precmd="nfsd_precmd"
19sig_stop="USR1"
20
21nfsd_precmd()
22{
23	local	_vhost
24	rc_flags="${nfs_server_flags}"
25
26	# Load the modules now, so that the vfs.nfsd sysctl
27	# oids are available.
28	load_kld nfsd || return 1
29
30	if [ -n "${nfs_server_maxio}" ] && ! check_jail jailed; then
31		if ! sysctl vfs.nfsd.srvmaxio=${nfs_server_maxio} >/dev/null; then
32			warn "Failed to set server max I/O"
33		fi
34	fi
35
36	if checkyesno nfs_reserved_port_only; then
37		echo 'NFS on reserved port only=YES'
38		sysctl vfs.nfsd.nfs_privport=1 > /dev/null
39	else
40		sysctl vfs.nfsd.nfs_privport=0 > /dev/null
41	fi
42
43	if checkyesno nfs_server_managegids; then
44		force_depend nfsuserd || err 1 "Cannot run nfsuserd"
45	fi
46
47	if checkyesno nfsv4_server_enable; then
48		sysctl vfs.nfsd.server_max_nfsvers=4 > /dev/null
49	elif ! checkyesno nfsv4_server_only; then
50		echo 'NFSv4 is disabled'
51		sysctl vfs.nfsd.server_max_nfsvers=3 > /dev/null
52	fi
53
54	if ! checkyesno nfsv4_server_only; then
55		force_depend rpcbind || return 1
56	fi
57
58	force_depend mountd || return 1
59	if [ -n "${nfs_server_vhost}" ]; then
60		command_args="-V \"${nfs_server_vhost}\""
61	fi
62}
63
64run_rc_command "$1"
65