1110290Sgordon#!/bin/sh
2110290Sgordon#
3110290Sgordon# $FreeBSD$
4110290Sgordon#
5110290Sgordon
6110290Sgordon# PROVIDE: nfsd
7110290Sgordon# REQUIRE: mountd hostname gssd nfsuserd
8110290Sgordon# KEYWORD: nojail shutdown
9110290Sgordon
10110290Sgordon. /etc/rc.subr
11110290Sgordon
12110290Sgordonname="nfsd"
13110290Sgordonrcvar="nfs_server_enable"
14110290Sgordoncommand="/usr/sbin/${name}"
15110290Sgordon
16110290Sgordonload_rc_config $name
17110290Sgordonstart_precmd="nfsd_precmd"
18110290Sgordonsig_stop="USR1"
19110290Sgordon
20110290Sgordonnfsd_precmd()
21110290Sgordon{
22110290Sgordon	if checkyesno oldnfs_server_enable; then
23110290Sgordon		rc_flags="-o ${nfs_server_flags}"
24110290Sgordon
25110290Sgordon		# Load the module now, so that the vfs.nfsrv sysctl
26110290Sgordon		# oids are available.
27116196Sobrien		load_kld nfsserver
28116196Sobrien
29116196Sobrien		if checkyesno nfs_reserved_port_only; then
30110290Sgordon			echo 'NFS on reserved port only=YES'
31110290Sgordon			sysctl vfs.nfsrv.nfs_privport=1 > /dev/null
32110290Sgordon		else
33219029Snetchild			sysctl vfs.nfsrv.nfs_privport=0 > /dev/null
34110290Sgordon		fi
35110290Sgordon	else
36110290Sgordon		rc_flags="${nfs_server_flags}"
37110290Sgordon
38110290Sgordon		# Load the modules now, so that the vfs.nfsd sysctl
39110290Sgordon		# oids are available.
40110290Sgordon		load_kld nfsd
41110290Sgordon
42110290Sgordon		if checkyesno nfs_reserved_port_only; then
43110290Sgordon			echo 'NFS on reserved port only=YES'
44110290Sgordon			sysctl vfs.nfsd.nfs_privport=1 > /dev/null
45110290Sgordon		else
46219029Snetchild			sysctl vfs.nfsd.nfs_privport=0 > /dev/null
47219029Snetchild		fi
48110290Sgordon
49110290Sgordon		if checkyesno nfsv4_server_enable || \
50110290Sgordon		    checkyesno nfs_server_managegids; then
51110290Sgordon			force_depend nfsuserd || err 1 "Cannot run nfsuserd"
52110290Sgordon		fi
53110290Sgordon
54110290Sgordon		if checkyesno nfsv4_server_enable; then
55110290Sgordon			sysctl vfs.nfsd.server_max_nfsvers=4 > /dev/null
56110290Sgordon		else
57110290Sgordon			echo 'NFSv4 is disabled'
58110290Sgordon			sysctl vfs.nfsd.server_max_nfsvers=3 > /dev/null
59110290Sgordon		fi
60110290Sgordon	fi
61110290Sgordon
62110290Sgordon	force_depend rpcbind || return 1
63110290Sgordon	force_depend mountd || return 1
64110290Sgordon}
65110290Sgordon
66110290Sgordonrun_rc_command "$1"
67110290Sgordon