162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ciconfig NFSD
362306a36Sopenharmony_ci	tristate "NFS server support"
462306a36Sopenharmony_ci	depends on INET
562306a36Sopenharmony_ci	depends on FILE_LOCKING
662306a36Sopenharmony_ci	depends on FSNOTIFY
762306a36Sopenharmony_ci	select LOCKD
862306a36Sopenharmony_ci	select SUNRPC
962306a36Sopenharmony_ci	select EXPORTFS
1062306a36Sopenharmony_ci	select NFS_ACL_SUPPORT if NFSD_V2_ACL
1162306a36Sopenharmony_ci	select NFS_ACL_SUPPORT if NFSD_V3_ACL
1262306a36Sopenharmony_ci	depends on MULTIUSER
1362306a36Sopenharmony_ci	help
1462306a36Sopenharmony_ci	  Choose Y here if you want to allow other computers to access
1562306a36Sopenharmony_ci	  files residing on this system using Sun's Network File System
1662306a36Sopenharmony_ci	  protocol.  To compile the NFS server support as a module,
1762306a36Sopenharmony_ci	  choose M here: the module will be called nfsd.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci	  You may choose to use a user-space NFS server instead, in which
2062306a36Sopenharmony_ci	  case you can choose N here.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	  To export local file systems using NFS, you also need to install
2362306a36Sopenharmony_ci	  user space programs which can be found in the Linux nfs-utils
2462306a36Sopenharmony_ci	  package, available from http://linux-nfs.org/.  More detail about
2562306a36Sopenharmony_ci	  the Linux NFS server implementation is available via the
2662306a36Sopenharmony_ci	  exports(5) man page.
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	  Below you can choose which versions of the NFS protocol are
2962306a36Sopenharmony_ci	  available to clients mounting the NFS server on this system.
3062306a36Sopenharmony_ci	  Support for NFS version 3 (RFC 1813) is always available when
3162306a36Sopenharmony_ci	  CONFIG_NFSD is selected.
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	  If unsure, say N.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciconfig NFSD_V2
3662306a36Sopenharmony_ci	bool "NFS server support for NFS version 2 (DEPRECATED)"
3762306a36Sopenharmony_ci	depends on NFSD
3862306a36Sopenharmony_ci	default n
3962306a36Sopenharmony_ci	help
4062306a36Sopenharmony_ci	  NFSv2 (RFC 1094) was the first publicly-released version of NFS.
4162306a36Sopenharmony_ci	  Unless you are hosting ancient (1990's era) NFS clients, you don't
4262306a36Sopenharmony_ci	  need this.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	  If unsure, say N.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciconfig NFSD_V2_ACL
4762306a36Sopenharmony_ci	bool "NFS server support for the NFSv2 ACL protocol extension"
4862306a36Sopenharmony_ci	depends on NFSD_V2
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciconfig NFSD_V3_ACL
5162306a36Sopenharmony_ci	bool "NFS server support for the NFSv3 ACL protocol extension"
5262306a36Sopenharmony_ci	depends on NFSD
5362306a36Sopenharmony_ci	help
5462306a36Sopenharmony_ci	  Solaris NFS servers support an auxiliary NFSv3 ACL protocol that
5562306a36Sopenharmony_ci	  never became an official part of the NFS version 3 protocol.
5662306a36Sopenharmony_ci	  This protocol extension allows applications on NFS clients to
5762306a36Sopenharmony_ci	  manipulate POSIX Access Control Lists on files residing on NFS
5862306a36Sopenharmony_ci	  servers.  NFS servers enforce POSIX ACLs on local files whether
5962306a36Sopenharmony_ci	  this protocol is available or not.
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci	  This option enables support in your system's NFS server for the
6262306a36Sopenharmony_ci	  NFSv3 ACL protocol extension allowing NFS clients to manipulate
6362306a36Sopenharmony_ci	  POSIX ACLs on files exported by your system's NFS server.  NFS
6462306a36Sopenharmony_ci	  clients which support the Solaris NFSv3 ACL protocol can then
6562306a36Sopenharmony_ci	  access and modify ACLs on your NFS server.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci	  To store ACLs on your NFS server, you also need to enable ACL-
6862306a36Sopenharmony_ci	  related CONFIG options for your local file systems of choice.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci	  If unsure, say N.
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ciconfig NFSD_V4
7362306a36Sopenharmony_ci	bool "NFS server support for NFS version 4"
7462306a36Sopenharmony_ci	depends on NFSD && PROC_FS
7562306a36Sopenharmony_ci	select FS_POSIX_ACL
7662306a36Sopenharmony_ci	select RPCSEC_GSS_KRB5
7762306a36Sopenharmony_ci	select CRYPTO
7862306a36Sopenharmony_ci	select CRYPTO_MD5
7962306a36Sopenharmony_ci	select CRYPTO_SHA256
8062306a36Sopenharmony_ci	select GRACE_PERIOD
8162306a36Sopenharmony_ci	select NFS_V4_2_SSC_HELPER if NFS_V4_2
8262306a36Sopenharmony_ci	help
8362306a36Sopenharmony_ci	  This option enables support in your system's NFS server for
8462306a36Sopenharmony_ci	  version 4 of the NFS protocol (RFC 3530).
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci	  To export files using NFSv4, you need to install additional user
8762306a36Sopenharmony_ci	  space programs which can be found in the Linux nfs-utils package,
8862306a36Sopenharmony_ci	  available from http://linux-nfs.org/.
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci	  If unsure, say N.
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ciconfig NFSD_PNFS
9362306a36Sopenharmony_ci	bool
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ciconfig NFSD_BLOCKLAYOUT
9662306a36Sopenharmony_ci	bool "NFSv4.1 server support for pNFS block layouts"
9762306a36Sopenharmony_ci	depends on NFSD_V4 && BLOCK
9862306a36Sopenharmony_ci	select NFSD_PNFS
9962306a36Sopenharmony_ci	select EXPORTFS_BLOCK_OPS
10062306a36Sopenharmony_ci	help
10162306a36Sopenharmony_ci	  This option enables support for the exporting pNFS block layouts
10262306a36Sopenharmony_ci	  in the kernel's NFS server. The pNFS block layout enables NFS
10362306a36Sopenharmony_ci	  clients to directly perform I/O to block devices accessible to both
10462306a36Sopenharmony_ci	  the server and the clients.  See RFC 5663 for more details.
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci	  If unsure, say N.
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ciconfig NFSD_SCSILAYOUT
10962306a36Sopenharmony_ci	bool "NFSv4.1 server support for pNFS SCSI layouts"
11062306a36Sopenharmony_ci	depends on NFSD_V4 && BLOCK
11162306a36Sopenharmony_ci	select NFSD_PNFS
11262306a36Sopenharmony_ci	select EXPORTFS_BLOCK_OPS
11362306a36Sopenharmony_ci	help
11462306a36Sopenharmony_ci	  This option enables support for the exporting pNFS SCSI layouts
11562306a36Sopenharmony_ci	  in the kernel's NFS server. The pNFS SCSI layout enables NFS
11662306a36Sopenharmony_ci	  clients to directly perform I/O to SCSI devices accessible to both
11762306a36Sopenharmony_ci	  the server and the clients.  See draft-ietf-nfsv4-scsi-layout for
11862306a36Sopenharmony_ci	  more details.
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci	  If unsure, say N.
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ciconfig NFSD_FLEXFILELAYOUT
12362306a36Sopenharmony_ci	bool "NFSv4.1 server support for pNFS Flex File layouts"
12462306a36Sopenharmony_ci	depends on NFSD_V4
12562306a36Sopenharmony_ci	select NFSD_PNFS
12662306a36Sopenharmony_ci	help
12762306a36Sopenharmony_ci	  This option enables support for the exporting pNFS Flex File
12862306a36Sopenharmony_ci	  layouts in the kernel's NFS server. The pNFS Flex File  layout
12962306a36Sopenharmony_ci	  enables NFS clients to directly perform I/O to NFSv3 devices
13062306a36Sopenharmony_ci	  accessible to both the server and the clients.  See
13162306a36Sopenharmony_ci	  draft-ietf-nfsv4-flex-files for more details.
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci	  Warning, this server implements the bare minimum functionality
13462306a36Sopenharmony_ci	  to be a flex file server - it is for testing the client,
13562306a36Sopenharmony_ci	  not for use in production.
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci	  If unsure, say N.
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ciconfig NFSD_V4_2_INTER_SSC
14062306a36Sopenharmony_ci	bool "NFSv4.2 inter server to server COPY"
14162306a36Sopenharmony_ci	depends on NFSD_V4 && NFS_V4_2
14262306a36Sopenharmony_ci	help
14362306a36Sopenharmony_ci	  This option enables support for NFSv4.2 inter server to
14462306a36Sopenharmony_ci	  server copy where the destination server calls the NFSv4.2
14562306a36Sopenharmony_ci	  client to read the data to copy from the source server.
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci	  If unsure, say N.
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ciconfig NFSD_V4_SECURITY_LABEL
15062306a36Sopenharmony_ci	bool "Provide Security Label support for NFSv4 server"
15162306a36Sopenharmony_ci	depends on NFSD_V4 && SECURITY
15262306a36Sopenharmony_ci	help
15362306a36Sopenharmony_ci
15462306a36Sopenharmony_ci	Say Y here if you want enable fine-grained security label attribute
15562306a36Sopenharmony_ci	support for NFS version 4.  Security labels allow security modules like
15662306a36Sopenharmony_ci	SELinux and Smack to label files to facilitate enforcement of their policies.
15762306a36Sopenharmony_ci	Without this an NFSv4 mount will have the same label on each file.
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci	If you do not wish to enable fine-grained security labels SELinux or
16062306a36Sopenharmony_ci	Smack policies on NFSv4 files, say N.
161