162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ciconfig CIFS
362306a36Sopenharmony_ci	tristate "SMB3 and CIFS support (advanced network filesystem)"
462306a36Sopenharmony_ci	depends on INET
562306a36Sopenharmony_ci	select NLS
662306a36Sopenharmony_ci	select NLS_UCS2_UTILS
762306a36Sopenharmony_ci	select CRYPTO
862306a36Sopenharmony_ci	select CRYPTO_MD5
962306a36Sopenharmony_ci	select CRYPTO_SHA256
1062306a36Sopenharmony_ci	select CRYPTO_SHA512
1162306a36Sopenharmony_ci	select CRYPTO_CMAC
1262306a36Sopenharmony_ci	select CRYPTO_HMAC
1362306a36Sopenharmony_ci	select CRYPTO_AEAD2
1462306a36Sopenharmony_ci	select CRYPTO_CCM
1562306a36Sopenharmony_ci	select CRYPTO_GCM
1662306a36Sopenharmony_ci	select CRYPTO_ECB
1762306a36Sopenharmony_ci	select CRYPTO_AES
1862306a36Sopenharmony_ci	select KEYS
1962306a36Sopenharmony_ci	select DNS_RESOLVER
2062306a36Sopenharmony_ci	select ASN1
2162306a36Sopenharmony_ci	select OID_REGISTRY
2262306a36Sopenharmony_ci	select NETFS_SUPPORT
2362306a36Sopenharmony_ci	help
2462306a36Sopenharmony_ci	  This is the client VFS module for the SMB3 family of network file
2562306a36Sopenharmony_ci	  protocols (including the most recent, most secure dialect SMB3.1.1).
2662306a36Sopenharmony_ci	  This module also includes support for earlier dialects such as
2762306a36Sopenharmony_ci	  SMB2.1, SMB2 and even the old Common Internet File System (CIFS)
2862306a36Sopenharmony_ci	  protocol.  CIFS was the successor to the original network filesystem
2962306a36Sopenharmony_ci	  protocol, Server Message Block (SMB ie SMB1), the native file sharing
3062306a36Sopenharmony_ci	  mechanism for most early PC operating systems.
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci	  The SMB3.1.1 protocol is supported by most modern operating systems
3362306a36Sopenharmony_ci	  and NAS appliances (e.g. Samba, Windows 11, Windows Server 2022,
3462306a36Sopenharmony_ci	  MacOS) and even in the cloud (e.g. Microsoft Azure) and also by the
3562306a36Sopenharmony_ci	  Linux kernel server, ksmbd.  Support for the older CIFS protocol was
3662306a36Sopenharmony_ci	  included in Windows NT4, 2000 and XP (and later). Use of dialects
3762306a36Sopenharmony_ci	  older than SMB2.1 is often discouraged on public networks.
3862306a36Sopenharmony_ci	  This module also provides limited support for OS/2 and Windows ME
3962306a36Sopenharmony_ci	  and similar very old servers.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci	  This module provides an advanced network file system client for
4262306a36Sopenharmony_ci	  mounting to SMB3 (and CIFS) compliant servers.  It includes support
4362306a36Sopenharmony_ci	  for DFS (hierarchical name space), secure per-user session
4462306a36Sopenharmony_ci	  establishment via Kerberos or NTLMv2, RDMA (smbdirect), advanced
4562306a36Sopenharmony_ci	  security features, per-share encryption, packet-signing, snapshots,
4662306a36Sopenharmony_ci	  directory leases, safe distributed caching (leases), multichannel,
4762306a36Sopenharmony_ci	  Unicode and other internationalization improvements.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	  In general, the default dialects, SMB3 and later, enable better
5062306a36Sopenharmony_ci	  performance, security and features, than would be possible with CIFS.
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	  If you need to mount to Samba, Azure, ksmbd, Macs or Windows from this
5362306a36Sopenharmony_ci	  machine, say Y.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciconfig CIFS_STATS2
5662306a36Sopenharmony_ci	bool "Extended statistics"
5762306a36Sopenharmony_ci	depends on CIFS
5862306a36Sopenharmony_ci	default y
5962306a36Sopenharmony_ci	help
6062306a36Sopenharmony_ci	  Enabling this option will allow more detailed statistics on SMB
6162306a36Sopenharmony_ci	  request timing to be displayed in /proc/fs/cifs/DebugData and also
6262306a36Sopenharmony_ci	  allow optional logging of slow responses to dmesg (depending on the
6362306a36Sopenharmony_ci	  value of /proc/fs/cifs/cifsFYI). See Documentation/admin-guide/cifs/usage.rst
6462306a36Sopenharmony_ci	  for more details. These additional statistics may have a minor effect
6562306a36Sopenharmony_ci	  on performance and memory utilization.
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci	  If unsure, say Y.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ciconfig CIFS_ALLOW_INSECURE_LEGACY
7062306a36Sopenharmony_ci	bool "Support legacy servers which use less secure dialects"
7162306a36Sopenharmony_ci	depends on CIFS
7262306a36Sopenharmony_ci	default y
7362306a36Sopenharmony_ci	help
7462306a36Sopenharmony_ci	  Modern dialects, SMB2.1 and later (including SMB3 and 3.1.1), have
7562306a36Sopenharmony_ci	  additional security features, including protection against
7662306a36Sopenharmony_ci	  man-in-the-middle attacks and stronger crypto hashes, so the use
7762306a36Sopenharmony_ci	  of legacy dialects (SMB1/CIFS and SMB2.0) is discouraged.
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci	  Disabling this option prevents users from using vers=1.0 or vers=2.0
8062306a36Sopenharmony_ci	  on mounts with cifs.ko
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci	  If unsure, say Y.
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ciconfig CIFS_UPCALL
8562306a36Sopenharmony_ci	bool "Kerberos/SPNEGO advanced session setup"
8662306a36Sopenharmony_ci	depends on CIFS
8762306a36Sopenharmony_ci	help
8862306a36Sopenharmony_ci	  Enables an upcall mechanism for CIFS which accesses userspace helper
8962306a36Sopenharmony_ci	  utilities to provide SPNEGO packaged (RFC 4178) Kerberos tickets
9062306a36Sopenharmony_ci	  which are needed to mount to certain secure servers (for which more
9162306a36Sopenharmony_ci	  secure Kerberos authentication is required). If unsure, say Y.
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ciconfig CIFS_XATTR
9462306a36Sopenharmony_ci	bool "CIFS extended attributes"
9562306a36Sopenharmony_ci	depends on CIFS
9662306a36Sopenharmony_ci	help
9762306a36Sopenharmony_ci	  Extended attributes are name:value pairs associated with inodes by
9862306a36Sopenharmony_ci	  the kernel or by users (see the attr(5) manual page for details).
9962306a36Sopenharmony_ci	  CIFS maps the name of extended attributes beginning with the user
10062306a36Sopenharmony_ci	  namespace prefix to SMB/CIFS EAs.  EAs are stored on Windows
10162306a36Sopenharmony_ci	  servers without the user namespace prefix, but their names are
10262306a36Sopenharmony_ci	  seen by Linux cifs clients prefaced by the user namespace prefix.
10362306a36Sopenharmony_ci	  The system namespace (used by some filesystems to store ACLs) is
10462306a36Sopenharmony_ci	  not supported at this time.
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci	  If unsure, say Y.
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ciconfig CIFS_POSIX
10962306a36Sopenharmony_ci	bool "CIFS POSIX Extensions"
11062306a36Sopenharmony_ci	depends on CIFS && CIFS_ALLOW_INSECURE_LEGACY && CIFS_XATTR
11162306a36Sopenharmony_ci	help
11262306a36Sopenharmony_ci	  Enabling this option will cause the cifs client to attempt to
11362306a36Sopenharmony_ci	  negotiate a feature of the older cifs dialect with servers, such as
11462306a36Sopenharmony_ci	  Samba 3.0.5 or later, that optionally can handle more POSIX like
11562306a36Sopenharmony_ci	  (rather than Windows like) file behavior.  It also enables support
11662306a36Sopenharmony_ci	  for POSIX ACLs (getfacl and setfacl) to servers (such as Samba 3.10
11762306a36Sopenharmony_ci	  and later) which can negotiate CIFS POSIX ACL support.  This config
11862306a36Sopenharmony_ci	  option is not needed when mounting with SMB3.1.1. If unsure, say N.
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ciconfig CIFS_DEBUG
12162306a36Sopenharmony_ci	bool "Enable CIFS debugging routines"
12262306a36Sopenharmony_ci	default y
12362306a36Sopenharmony_ci	depends on CIFS
12462306a36Sopenharmony_ci	help
12562306a36Sopenharmony_ci	  Enabling this option adds helpful debugging messages to
12662306a36Sopenharmony_ci	  the cifs code which increases the size of the cifs module.
12762306a36Sopenharmony_ci	  If unsure, say Y.
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ciconfig CIFS_DEBUG2
13062306a36Sopenharmony_ci	bool "Enable additional CIFS debugging routines"
13162306a36Sopenharmony_ci	depends on CIFS_DEBUG
13262306a36Sopenharmony_ci	help
13362306a36Sopenharmony_ci	  Enabling this option adds a few more debugging routines
13462306a36Sopenharmony_ci	  to the cifs code which slightly increases the size of
13562306a36Sopenharmony_ci	  the cifs module and can cause additional logging of debug
13662306a36Sopenharmony_ci	  messages in some error paths, slowing performance. This
13762306a36Sopenharmony_ci	  option can be turned off unless you are debugging
13862306a36Sopenharmony_ci	  cifs problems.  If unsure, say N.
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ciconfig CIFS_DEBUG_DUMP_KEYS
14162306a36Sopenharmony_ci	bool "Dump encryption keys for offline decryption (Unsafe)"
14262306a36Sopenharmony_ci	depends on CIFS_DEBUG
14362306a36Sopenharmony_ci	help
14462306a36Sopenharmony_ci	  Enabling this will dump the encryption and decryption keys
14562306a36Sopenharmony_ci	  used to communicate on an encrypted share connection on the
14662306a36Sopenharmony_ci	  console. This allows Wireshark to decrypt and dissect
14762306a36Sopenharmony_ci	  encrypted network captures. Enable this carefully.
14862306a36Sopenharmony_ci	  If unsure, say N.
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ciconfig CIFS_DFS_UPCALL
15162306a36Sopenharmony_ci	bool "DFS feature support"
15262306a36Sopenharmony_ci	depends on CIFS
15362306a36Sopenharmony_ci	help
15462306a36Sopenharmony_ci	  Distributed File System (DFS) support is used to access shares
15562306a36Sopenharmony_ci	  transparently in an enterprise name space, even if the share
15662306a36Sopenharmony_ci	  moves to a different server.  This feature also enables
15762306a36Sopenharmony_ci	  an upcall mechanism for CIFS which contacts userspace helper
15862306a36Sopenharmony_ci	  utilities to provide server name resolution (host names to
15962306a36Sopenharmony_ci	  IP addresses) which is needed in order to reconnect to
16062306a36Sopenharmony_ci	  servers if their addresses change or for implicit mounts of
16162306a36Sopenharmony_ci	  DFS junction points. If unsure, say Y.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ciconfig CIFS_SWN_UPCALL
16462306a36Sopenharmony_ci	bool "SWN feature support"
16562306a36Sopenharmony_ci	depends on CIFS
16662306a36Sopenharmony_ci	help
16762306a36Sopenharmony_ci	  The Service Witness Protocol (SWN) is used to get notifications
16862306a36Sopenharmony_ci	  from a highly available server of resource state changes. This
16962306a36Sopenharmony_ci	  feature enables an upcall mechanism for CIFS which contacts a
17062306a36Sopenharmony_ci	  userspace daemon to establish the DCE/RPC connection to retrieve
17162306a36Sopenharmony_ci	  the cluster available interfaces and resource change notifications.
17262306a36Sopenharmony_ci	  If unsure, say Y.
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ciconfig CIFS_NFSD_EXPORT
17562306a36Sopenharmony_ci	bool "Allow nfsd to export CIFS file system"
17662306a36Sopenharmony_ci	depends on CIFS && BROKEN
17762306a36Sopenharmony_ci	help
17862306a36Sopenharmony_ci	  Allows NFS server to export a CIFS mounted share (nfsd over cifs)
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ciif CIFS
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ciconfig CIFS_SMB_DIRECT
18362306a36Sopenharmony_ci	bool "SMB Direct support"
18462306a36Sopenharmony_ci	depends on CIFS=m && INFINIBAND && INFINIBAND_ADDR_TRANS || CIFS=y && INFINIBAND=y && INFINIBAND_ADDR_TRANS=y
18562306a36Sopenharmony_ci	help
18662306a36Sopenharmony_ci	  Enables SMB Direct support for SMB 3.0, 3.02 and 3.1.1.
18762306a36Sopenharmony_ci	  SMB Direct allows transferring SMB packets over RDMA. If unsure,
18862306a36Sopenharmony_ci	  say Y.
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_ciconfig CIFS_FSCACHE
19162306a36Sopenharmony_ci	bool "Provide CIFS client caching support"
19262306a36Sopenharmony_ci	depends on CIFS=m && FSCACHE || CIFS=y && FSCACHE=y
19362306a36Sopenharmony_ci	help
19462306a36Sopenharmony_ci	  Makes CIFS FS-Cache capable. Say Y here if you want your CIFS data
19562306a36Sopenharmony_ci	  to be cached locally on disk through the general filesystem cache
19662306a36Sopenharmony_ci	  manager. If unsure, say N.
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_ciconfig CIFS_ROOT
19962306a36Sopenharmony_ci	bool "SMB root file system (Experimental)"
20062306a36Sopenharmony_ci	depends on CIFS=y && IP_PNP
20162306a36Sopenharmony_ci	help
20262306a36Sopenharmony_ci	  Enables root file system support over SMB protocol.
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci	  Most people say N here.
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ciendif
207