/*
- * Copyright (c) 2000-2013 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2015 Apple Inc. All rights reserved.
*
* @APPLE_OSREFERENCE_LICENSE_HEADER_START@
*
uint32_t nso_protocol; /* RPC protocol */
uint32_t nso_version; /* RPC protocol version */
uint32_t nso_pingxid; /* RPC XID of NULL ping request */
+ uint32_t nso_nfs_min_vers; /* minimum nfs version for connecting sockets */
+ uint32_t nso_nfs_max_vers; /* maximum nfs version for connecting sockets */
int nso_error; /* saved error/status */
struct nfs_rpc_record_state nso_rrs; /* RPC record parsing state (TCP) */
};
/* nss_flags */
#define NSS_VERBOSE 0x00000001 /* OK to log info about socket search */
#define NSS_WARNED 0x00000002 /* logged warning about socket search taking a while */
+#define NSS_FALLBACK2PMAP 0x00000004 /* Try V4 on NFS_PORT first, if that fails fall back to portmapper */
/*
* function table for calling version-specific NFS functions
int (*nf_mount)(struct nfsmount *, vfs_context_t, nfsnode_t *);
int (*nf_update_statfs)(struct nfsmount *, vfs_context_t);
int (*nf_getquota)(struct nfsmount *, vfs_context_t, uid_t, int, struct dqblk *);
- int (*nf_access_rpc)(nfsnode_t, u_int32_t *, vfs_context_t);
+ int (*nf_access_rpc)(nfsnode_t, u_int32_t *, int, vfs_context_t);
int (*nf_getattr_rpc)(nfsnode_t, mount_t, u_char *, size_t, int, vfs_context_t, struct nfs_vattr *, u_int64_t *);
int (*nf_setattr_rpc)(nfsnode_t, struct vnode_attr *, vfs_context_t);
int (*nf_read_rpc_async)(nfsnode_t, off_t, size_t, thread_t, kauth_cred_t, struct nfsreq_cbinfo *, struct nfsreq **);
char * nm_realm; /* Kerberos realm to use */
char * nm_principal; /* GSS principal to use on initial mount */
char * nm_sprinc; /* Kerberos principal of the server */
+ int nm_ref; /* Reference count on this mount */
int nm_state; /* Internal state flags */
int nm_vers; /* NFS version */
+ uint32_t nm_minor_vers; /* minor version of above */
+ uint32_t nm_min_vers; /* minimum packed version to try */
+ uint32_t nm_max_vers; /* maximum packed version to try */
struct nfs_funcs *nm_funcs; /* version-specific functions */
kauth_cred_t nm_mcred; /* credential used for the mount */
mount_t nm_mountp; /* VFS structure for this filesystem */
nfsnode_t nm_dnp; /* root directory nfsnode pointer */
struct nfs_fs_locations nm_locations; /* file system locations */
uint32_t nm_numgrps; /* Max. size of groupslist */
- TAILQ_HEAD(, nfs_gss_clnt_ctx) nm_gsscl; /* GSS user contexts */
+ TAILQ_HEAD(, nfs_gss_clnt_ctx) nm_gsscl; /* GSS user contexts */
+ uint32_t nm_ncentries; /* GSS expired negative cache entries */
int nm_timeo; /* Init timer for NFSMNT_DUMBTIMR */
int nm_retry; /* Max retries */
uint32_t nm_rsize; /* Max size of read rpc */
uint32_t nm_mappers; /* Number of nodes that have mmapped */
struct nfs_sec nm_sec; /* acceptable security mechanism flavors */
struct nfs_sec nm_servsec; /* server's acceptable security mechanism flavors */
+ struct nfs_etype nm_etype; /* If using kerberos, the support session key encryption types */
fhandle_t *nm_fh; /* initial file handle */
uint8_t nm_lockmode; /* advisory file locking mode */
/* mount info */
#define NFSSTA_RECOVER_EXPIRED 0x10000000 /* mount state expired */
#define NFSSTA_REVOKE 0x20000000 /* need to scan for revoked nodes */
#define NFSSTA_SQUISHY 0x40000000 /* we can ask to be forcibly unmounted */
+#define NFSSTA_MOUNT_DRAIN 0x80000000 /* mount is draining references */
/* flags for nm_sockflags */
#define NMSOCK_READY 0x0001 /* socket is ready for use */