]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/nfs/nfsmount.h
xnu-2782.1.97.tar.gz
[apple/xnu.git] / bsd / nfs / nfsmount.h
index 574b5a70ee584cfb5d2bb80e800b1fa63b6b54d5..4d28a97749b5a90cb6efa983f5e66f9af54c25bd 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000-2011 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2014 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  * 
@@ -199,6 +199,7 @@ struct nfs_socket_search {
        uint32_t                nss_protocol;           /* RPC protocol */
        uint32_t                nss_version;            /* RPC protocol version */
        uint32_t                nss_flags;              /* (see below) */
+       int                     nss_addrcnt;            /* Number addresses to try or left */
        int                     nss_timeo;              /* how long we are willing to wait */
        int                     nss_error;              /* best error we've gotten so far */
 };
@@ -213,7 +214,7 @@ struct nfs_funcs {
        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 **);
@@ -240,7 +241,7 @@ struct nfs_client_id {
        int                             nci_idlen;      /* length of client id buffer */
 };
 TAILQ_HEAD(nfsclientidlist, nfs_client_id);
-__private_extern__ struct nfsclientidlist nfsclientids;
+extern struct nfsclientidlist nfsclientids;
 
 /*
  * Mount structure.
@@ -254,15 +255,21 @@ struct nfsmount {
        uint32_t nm_mflags_mask[NFS_MFLAG_BITMAP_LEN]; /* mount flags mask in mount args */
        uint32_t nm_mflags[NFS_MFLAG_BITMAP_LEN]; /* mount flags in mount args */
        uint32_t nm_flags[NFS_MFLAG_BITMAP_LEN]; /* current mount flags (soft, intr, etc...) */
+       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 */
        struct nfs_funcs *nm_funcs;     /* version-specific functions */
-       kauth_cred_t nm_mcred;          /* credential used for the mount (v4) */
+       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 */
+       TAILQ_HEAD(, nfs_gss_clnt_ctx) nm_gssnccl;      /* GSS neg cache 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 */
@@ -376,6 +383,7 @@ struct nfsmount {
 #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 */