2020-10-21 03:22:33 +03:00
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Copyright ( C ) 2020 , Microsoft Corporation .
*
* Author ( s ) : Steve French < stfrench @ microsoft . com >
* David Howells < dhowells @ redhat . com >
*/
# ifndef _FS_CONTEXT_H
# define _FS_CONTEXT_H
2020-10-21 03:37:11 +03:00
# include <linux/parser.h>
# include "cifsglob.h"
2020-10-21 03:22:33 +03:00
2020-10-21 05:10:44 +03:00
enum smb_version {
Smb_1 = 1 ,
Smb_20 ,
Smb_21 ,
Smb_30 ,
Smb_302 ,
Smb_311 ,
Smb_3any ,
Smb_default ,
Smb_version_err
} ;
2020-12-10 08:07:12 +03:00
int cifs_parse_smb_version ( char * value , struct smb3_fs_context * ctx , bool is_smb3 ) ;
2020-10-21 05:10:44 +03:00
2020-10-21 04:30:35 +03:00
enum {
Opt_cache_loose ,
Opt_cache_strict ,
Opt_cache_none ,
Opt_cache_ro ,
Opt_cache_rw ,
Opt_cache_err
} ;
2020-12-10 08:07:12 +03:00
int cifs_parse_cache_flavor ( char * value , struct smb3_fs_context * ctx ) ;
2020-10-21 04:30:35 +03:00
2020-10-21 03:37:11 +03:00
enum cifs_sec_param {
Opt_sec_krb5 ,
Opt_sec_krb5i ,
Opt_sec_krb5p ,
Opt_sec_ntlmsspi ,
Opt_sec_ntlmssp ,
Opt_ntlm ,
Opt_sec_ntlmi ,
Opt_sec_ntlmv2 ,
Opt_sec_ntlmv2i ,
Opt_sec_lanman ,
Opt_sec_none ,
2020-10-21 03:22:33 +03:00
2020-10-21 03:37:11 +03:00
Opt_sec_err
} ;
2020-11-02 03:59:55 +03:00
enum cifs_param {
/* Mount options that take no arguments */
Opt_user_xattr , Opt_nouser_xattr ,
Opt_forceuid , Opt_noforceuid ,
Opt_forcegid , Opt_noforcegid ,
Opt_noblocksend ,
Opt_noautotune ,
Opt_nolease ,
Opt_hard , Opt_nohard ,
Opt_soft , Opt_nosoft ,
Opt_perm , Opt_noperm ,
Opt_nodelete ,
Opt_mapposix , Opt_nomapposix ,
Opt_mapchars ,
Opt_nomapchars ,
Opt_sfu , Opt_nosfu ,
Opt_nodfs ,
Opt_posixpaths , Opt_noposixpaths ,
Opt_unix , Opt_nounix ,
Opt_nocase ,
Opt_brl , Opt_nobrl ,
Opt_handlecache , Opt_nohandlecache ,
Opt_forcemandatorylock ,
Opt_setuidfromacl ,
Opt_setuids , Opt_nosetuids ,
Opt_dynperm , Opt_nodynperm ,
Opt_intr , Opt_nointr ,
Opt_strictsync , Opt_nostrictsync ,
Opt_serverino , Opt_noserverino ,
Opt_rwpidforward ,
Opt_cifsacl , Opt_nocifsacl ,
Opt_acl , Opt_noacl ,
Opt_locallease ,
Opt_sign ,
Opt_ignore_signature ,
Opt_seal ,
Opt_noac ,
Opt_fsc ,
Opt_mfsymlinks ,
Opt_multiuser ,
Opt_sloppy ,
Opt_nosharesock ,
Opt_persistent , Opt_nopersistent ,
Opt_resilient , Opt_noresilient ,
Opt_domainauto ,
Opt_rdma ,
Opt_modesid ,
Opt_rootfs ,
Opt_multichannel , Opt_nomultichannel ,
Opt_compress ,
/* Mount options which take numeric value */
Opt_backupuid ,
Opt_backupgid ,
Opt_uid ,
Opt_cruid ,
Opt_gid ,
Opt_port ,
Opt_file_mode ,
Opt_dirmode ,
Opt_min_enc_offload ,
Opt_blocksize ,
Opt_rsize ,
Opt_wsize ,
Opt_actimeo ,
Opt_echo_interval ,
Opt_max_credits ,
Opt_snapshot ,
Opt_max_channels ,
Opt_handletimeout ,
/* Mount options which take string value */
Opt_source ,
Opt_user ,
Opt_pass ,
Opt_ip ,
Opt_domain ,
Opt_srcaddr ,
Opt_iocharset ,
Opt_netbiosname ,
Opt_servern ,
Opt_ver ,
Opt_vers ,
Opt_sec ,
Opt_cache ,
/* Mount options to be ignored */
Opt_ignore ,
/* Options which could be blank */
Opt_blank_pass ,
Opt_blank_user ,
Opt_blank_ip ,
Opt_err
} ;
2020-12-10 08:07:12 +03:00
struct smb3_fs_context {
bool uid_specified ;
bool gid_specified ;
bool sloppy ;
char * nodename ;
bool got_ip ;
bool got_version ;
unsigned short port ;
char * username ;
char * password ;
char * domainname ;
char * UNC ;
char * iocharset ; /* local code page for mapping to and from Unicode */
char source_rfc1001_name [ RFC1001_NAME_LEN_WITH_NULL ] ; /* clnt nb name */
char target_rfc1001_name [ RFC1001_NAME_LEN_WITH_NULL ] ; /* srvr nb name */
kuid_t cred_uid ;
kuid_t linux_uid ;
kgid_t linux_gid ;
kuid_t backupuid ;
kgid_t backupgid ;
umode_t file_mode ;
umode_t dir_mode ;
enum securityEnum sectype ; /* sectype requested via mnt opts */
bool sign ; /* was signing requested via mnt opts? */
bool ignore_signature : 1 ;
bool retry : 1 ;
bool intr : 1 ;
bool setuids : 1 ;
bool setuidfromacl : 1 ;
bool override_uid : 1 ;
bool override_gid : 1 ;
bool dynperm : 1 ;
bool noperm : 1 ;
bool nodelete : 1 ;
bool mode_ace : 1 ;
bool no_psx_acl : 1 ; /* set if posix acl support should be disabled */
bool cifs_acl : 1 ;
bool backupuid_specified ; /* mount option backupuid is specified */
bool backupgid_specified ; /* mount option backupgid is specified */
bool no_xattr : 1 ; /* set if xattr (EA) support should be disabled*/
bool server_ino : 1 ; /* use inode numbers from server ie UniqueId */
bool direct_io : 1 ;
bool strict_io : 1 ; /* strict cache behavior */
bool cache_ro : 1 ;
bool cache_rw : 1 ;
bool remap : 1 ; /* set to remap seven reserved chars in filenames */
bool sfu_remap : 1 ; /* remap seven reserved chars ala SFU */
bool posix_paths : 1 ; /* unset to not ask for posix pathnames. */
bool no_linux_ext : 1 ;
bool linux_ext : 1 ;
bool sfu_emul : 1 ;
bool nullauth : 1 ; /* attempt to authenticate with null user */
bool nocase : 1 ; /* request case insensitive filenames */
bool nobrl : 1 ; /* disable sending byte range locks to srv */
bool nohandlecache : 1 ; /* disable caching dir handles if srvr probs */
bool mand_lock : 1 ; /* send mandatory not posix byte range lock reqs */
bool seal : 1 ; /* request transport encryption on share */
bool nodfs : 1 ; /* Do not request DFS, even if available */
bool local_lease : 1 ; /* check leases only on local system, not remote */
bool noblocksnd : 1 ;
bool noautotune : 1 ;
bool nostrictsync : 1 ; /* do not force expensive SMBflush on every sync */
bool no_lease : 1 ; /* disable requesting leases */
bool fsc : 1 ; /* enable fscache */
bool mfsymlinks : 1 ; /* use Minshall+French Symlinks */
bool multiuser : 1 ;
bool rwpidforward : 1 ; /* pid forward for read/write operations */
bool nosharesock : 1 ;
bool persistent : 1 ;
bool nopersistent : 1 ;
bool resilient : 1 ; /* noresilient not required since not fored for CA */
bool domainauto : 1 ;
bool rdma : 1 ;
bool multichannel : 1 ;
bool use_client_guid : 1 ;
/* reuse existing guid for multichannel */
u8 client_guid [ SMB2_CLIENT_GUID_SIZE ] ;
unsigned int bsize ;
unsigned int rsize ;
unsigned int wsize ;
unsigned int min_offload ;
bool sockopt_tcp_nodelay : 1 ;
unsigned long actimeo ; /* attribute cache timeout (jiffies) */
struct smb_version_operations * ops ;
struct smb_version_values * vals ;
char * prepath ;
struct sockaddr_storage dstaddr ; /* destination address */
struct sockaddr_storage srcaddr ; /* allow binding to a local IP */
struct nls_table * local_nls ;
unsigned int echo_interval ; /* echo interval in secs */
__u64 snapshot_time ; /* needed for timewarp tokens */
__u32 handle_timeout ; /* persistent and durable handle timeout in ms */
unsigned int max_credits ; /* smb3 max_credits 10 < credits < 60000 */
unsigned int max_channels ;
__u16 compression ; /* compression algorithm 0xFFFF default 0=disabled */
bool rootfs : 1 ; /* if it's a SMB root file system */
} ;
2020-11-02 02:36:24 +03:00
extern int cifs_parse_security_flavors ( char * value , struct smb3_fs_context * ctx ) ;
extern int smb3_fs_context_dup ( struct smb3_fs_context * new_ctx , struct smb3_fs_context * ctx ) ;
2020-10-21 03:22:33 +03:00
2020-10-21 03:37:11 +03:00
# endif