]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/include/nfs/nfs.h
nfsd: allow choosing server 41 support at runtime
[nfs-utils.git] / support / include / nfs / nfs.h
index 937c1be633eeabb65555dd86b5d12ce039a782e1..320880ea7bc9c9f38d2f8a9dfa44ca744ed19c9d 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef _NFS_NFS_H
 #define _NFS_NFS_H
 
+#include <config.h>
+
 #include <linux/posix_types.h>
 #include <sys/types.h>
 #include <netinet/in.h>
@@ -10,6 +12,9 @@
 #define        NFS3_FHSIZE     64
 #define        NFS_FHSIZE      32
 
+#define NFSD_MINVERS 2
+#define NFSD_MAXVERS 4
+
 struct nfs_fh_len {
        int             fh_size;
        u_int8_t        fh_handle[NFS3_FHSIZE];
@@ -36,11 +41,22 @@ struct nfs_fh_old {
 #define NFSCTL_GETFD           7       /* get an fh by path (used by mountd) */
 #define NFSCTL_GETFS           8       /* get an fh by path with max size (used by mountd) */
 
-/* Above this is for lockd. */
-#define NFSCTL_LOCKD           0x10000
-#define LOCKDCTL_SVC           NFSCTL_LOCKD
+#define NFSCTL_UDPBIT                (1 << (17 - 1))
+#define NFSCTL_TCPBIT                (1 << (18 - 1))
+
+#define NFSCTL_VERUNSET(_cltbits, _v) ((_cltbits) &= ~(1 << ((_v) - 1))) 
+#define NFSCTL_UDPUNSET(_cltbits)     ((_cltbits) &= ~NFSCTL_UDPBIT) 
+#define NFSCTL_TCPUNSET(_cltbits)     ((_cltbits) &= ~NFSCTL_TCPBIT) 
 
+#define NFSCTL_VERISSET(_cltbits, _v) ((_cltbits) & (1 << ((_v) - 1))) 
+#define NFSCTL_UDPISSET(_cltbits)     ((_cltbits) & NFSCTL_UDPBIT) 
+#define NFSCTL_TCPISSET(_cltbits)     ((_cltbits) & NFSCTL_TCPBIT) 
 
+#define NFSCTL_UDPSET(_cltbits)       ((_cltbits) |= NFSCTL_UDPBIT)
+#define NFSCTL_TCPSET(_cltbits)       ((_cltbits) |= NFSCTL_TCPBIT)
+
+#define NFSCTL_ANYPROTO(_cltbits)     ((_cltbits) & (NFSCTL_UDPBIT | NFSCTL_TCPBIT))
+#define NFSCTL_ALLBITS (~0)
 
 /* SVC */
 struct nfsctl_svc {
@@ -58,11 +74,22 @@ struct nfsctl_client {
        unsigned char           cl_fhkey[NFSCLNT_KEYMAX];
 };
 
+/* IN 2.5.6? __kernel_dev_t changed size, and __kernel_old_dev_t was left
+ * with the old value.  We need to make sure we use the right one.
+ *
+ */
+#include <linux/version.h>
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,70)
+# define __nfsd_dev_t  __kernel_old_dev_t
+#else
+# define __nfsd_dev_t  __kernel_dev_t
+#endif
+
 /* EXPORT/UNEXPORT */
 struct nfsctl_export {
        char                    ex_client[NFSCLNT_IDMAX+1];
        char                    ex_path[NFS_MAXPATHLEN+1];
-       __kernel_dev_t          ex_dev;
+       __nfsd_dev_t            ex_dev;
        __kernel_ino_t          ex_ino;
        int                     ex_flags;
        __kernel_uid_t          ex_anon_uid;
@@ -83,7 +110,7 @@ struct nfsctl_uidmap {
 /* GETFH */
 struct nfsctl_fhparm {
        struct sockaddr         gf_addr;
-       __kernel_dev_t          gf_dev;
+       __nfsd_dev_t            gf_dev;
        __kernel_ino_t          gf_ino;
        int                     gf_version;
 };