]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/nfs/nfsmount.h
xnu-2422.1.72.tar.gz
[apple/xnu.git] / bsd / nfs / nfsmount.h
index 97f955e2fcf3cf145e2a4018a931c9bf57ed04ac..4e9e88e6c090b95c117b1ed713a78c026c18abf8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2000-2011 Apple Inc. All rights reserved.
+ * Copyright (c) 2000-2013 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 */
 };
@@ -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,14 +255,17 @@ 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_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 */
-       int     nm_numgrps;             /* Max. size of groupslist */
+       uint32_t nm_numgrps;            /* Max. size of groupslist */
        TAILQ_HEAD(, nfs_gss_clnt_ctx) nm_gsscl; /* GSS user contexts */
        int     nm_timeo;               /* Init timer for NFSMNT_DUMBTIMR */
        int     nm_retry;               /* Max retries */
@@ -275,6 +279,8 @@ struct nfsmount {
        uint32_t nm_acdirmin;           /* dir min attr cache timeout */
        uint32_t nm_acdirmax;           /* dir max attr cache timeout */
        uint32_t nm_auth;               /* security mechanism flavor being used */
+       uint32_t nm_writers;            /* Number of nodes open for writing */
+       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 */
        fhandle_t *nm_fh;               /* initial file handle */
@@ -330,7 +336,8 @@ struct nfsmount {
        time_t  nm_reconnect_start;     /* reconnect start time */
        int     nm_tprintf_initial_delay;       /* delay first "server down" */
        int     nm_tprintf_delay;       /* delay between "server down" */
-       int     nm_deadtimeout;         /* delay between first "server down" and dead */
+       int     nm_deadtimeout;         /* delay between first "server down" and dead set at mount time */
+       int     nm_curdeadtimeout;      /* current dead timeout. Adjusted by mount state and mobility */
        int     nm_srtt[4];             /* Timers for RPCs */
        int     nm_sdrtt[4];
        int     nm_timeouts;            /* Request timeouts */
@@ -372,6 +379,7 @@ struct nfsmount {
 #define NFSSTA_RECOVER         0x08000000  /* mount state needs to be recovered */
 #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 */
 
 /* flags for nm_sockflags */
 #define NMSOCK_READY           0x0001  /* socket is ready for use */