1*53ee8cc1Swenshuai.xi #ifndef _LINUX_NFS4_MOUNT_H 2*53ee8cc1Swenshuai.xi #define _LINUX_NFS4_MOUNT_H 3*53ee8cc1Swenshuai.xi 4*53ee8cc1Swenshuai.xi /* 5*53ee8cc1Swenshuai.xi * linux/include/linux/nfs4_mount.h 6*53ee8cc1Swenshuai.xi * 7*53ee8cc1Swenshuai.xi * Copyright (C) 2002 Trond Myklebust 8*53ee8cc1Swenshuai.xi * 9*53ee8cc1Swenshuai.xi * structure passed from user-space to kernel-space during an nfsv4 mount 10*53ee8cc1Swenshuai.xi */ 11*53ee8cc1Swenshuai.xi 12*53ee8cc1Swenshuai.xi /* 13*53ee8cc1Swenshuai.xi * WARNING! Do not delete or change the order of these fields. If 14*53ee8cc1Swenshuai.xi * a new field is required then add it to the end. The version field 15*53ee8cc1Swenshuai.xi * tracks which fields are present. This will ensure some measure of 16*53ee8cc1Swenshuai.xi * mount-to-kernel version compatibility. Some of these aren't used yet 17*53ee8cc1Swenshuai.xi * but here they are anyway. 18*53ee8cc1Swenshuai.xi */ 19*53ee8cc1Swenshuai.xi #define NFS4_MOUNT_VERSION 1 20*53ee8cc1Swenshuai.xi 21*53ee8cc1Swenshuai.xi struct nfs_string { 22*53ee8cc1Swenshuai.xi unsigned int len; 23*53ee8cc1Swenshuai.xi const char * data; 24*53ee8cc1Swenshuai.xi }; 25*53ee8cc1Swenshuai.xi 26*53ee8cc1Swenshuai.xi struct nfs4_mount_data { 27*53ee8cc1Swenshuai.xi int version; /* 1 */ 28*53ee8cc1Swenshuai.xi int flags; /* 1 */ 29*53ee8cc1Swenshuai.xi int rsize; /* 1 */ 30*53ee8cc1Swenshuai.xi int wsize; /* 1 */ 31*53ee8cc1Swenshuai.xi int timeo; /* 1 */ 32*53ee8cc1Swenshuai.xi int retrans; /* 1 */ 33*53ee8cc1Swenshuai.xi int acregmin; /* 1 */ 34*53ee8cc1Swenshuai.xi int acregmax; /* 1 */ 35*53ee8cc1Swenshuai.xi int acdirmin; /* 1 */ 36*53ee8cc1Swenshuai.xi int acdirmax; /* 1 */ 37*53ee8cc1Swenshuai.xi 38*53ee8cc1Swenshuai.xi /* see the definition of 'struct clientaddr4' in RFC3010 */ 39*53ee8cc1Swenshuai.xi struct nfs_string client_addr; /* 1 */ 40*53ee8cc1Swenshuai.xi 41*53ee8cc1Swenshuai.xi /* Mount path */ 42*53ee8cc1Swenshuai.xi struct nfs_string mnt_path; /* 1 */ 43*53ee8cc1Swenshuai.xi 44*53ee8cc1Swenshuai.xi /* Server details */ 45*53ee8cc1Swenshuai.xi struct nfs_string hostname; /* 1 */ 46*53ee8cc1Swenshuai.xi /* Server IP address */ 47*53ee8cc1Swenshuai.xi unsigned int host_addrlen; /* 1 */ 48*53ee8cc1Swenshuai.xi struct sockaddr * host_addr; /* 1 */ 49*53ee8cc1Swenshuai.xi 50*53ee8cc1Swenshuai.xi /* Transport protocol to use */ 51*53ee8cc1Swenshuai.xi int proto; /* 1 */ 52*53ee8cc1Swenshuai.xi 53*53ee8cc1Swenshuai.xi /* Pseudo-flavours to use for authentication. See RFC2623 */ 54*53ee8cc1Swenshuai.xi int auth_flavourlen; /* 1 */ 55*53ee8cc1Swenshuai.xi int *auth_flavours; /* 1 */ 56*53ee8cc1Swenshuai.xi }; 57*53ee8cc1Swenshuai.xi 58*53ee8cc1Swenshuai.xi /* bits in the flags field */ 59*53ee8cc1Swenshuai.xi /* Note: the fields that correspond to existing NFSv2/v3 mount options 60*53ee8cc1Swenshuai.xi * should mirror the values from include/linux/nfs_mount.h 61*53ee8cc1Swenshuai.xi */ 62*53ee8cc1Swenshuai.xi 63*53ee8cc1Swenshuai.xi #define NFS4_MOUNT_SOFT 0x0001 /* 1 */ 64*53ee8cc1Swenshuai.xi #define NFS4_MOUNT_INTR 0x0002 /* 1 */ 65*53ee8cc1Swenshuai.xi #define NFS4_MOUNT_NOCTO 0x0010 /* 1 */ 66*53ee8cc1Swenshuai.xi #define NFS4_MOUNT_NOAC 0x0020 /* 1 */ 67*53ee8cc1Swenshuai.xi #define NFS4_MOUNT_STRICTLOCK 0x1000 /* 1 */ 68*53ee8cc1Swenshuai.xi #define NFS4_MOUNT_UNSHARED 0x8000 /* 1 */ 69*53ee8cc1Swenshuai.xi #define NFS4_MOUNT_FLAGMASK 0x9033 70*53ee8cc1Swenshuai.xi 71*53ee8cc1Swenshuai.xi #endif 72