From b0baca9820485507a3ec0e5b403a6bf0a57ff2fc Mon Sep 17 00:00:00 2001 From: Guillaume GARDET Date: Fri, 29 Jul 2016 11:31:00 +0200 Subject: net: NFS: Add NFSv3 support This patch enables NFSv3 support. If NFSv2 is available use it as usual. If NFSv2 is not available, but NFSv3 is available, use NFSv3. If NFSv2 and NFSv3 are not available, print an error message since NFSv4 is not supported. Tested on iMX6 sabrelite with 4 Linux NFS servers: * NFSv2 + NFSv3 + NFSv4 server: use NFSv2 protocol * NFSv2 + NFSv3 server: use NFSv2 protocol * NFSv3 + NFSv4 server: use NFSv3 protocol * NFSv3 server: use NFSv3 protocol Signed-off-by: Guillaume GARDET Cc: Tom Rini Cc: joe.hershberger@ni.com Acked-by: Joe Hershberger --- net/nfs.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'net/nfs.h') diff --git a/net/nfs.h b/net/nfs.h index 2a1f4db9b4..45da246aa1 100644 --- a/net/nfs.h +++ b/net/nfs.h @@ -25,7 +25,10 @@ #define NFS_READLINK 5 #define NFS_READ 6 +#define NFS3PROC_LOOKUP 3 + #define NFS_FHSIZE 32 +#define NFS3_FHSIZE 64 #define NFSERR_PERM 1 #define NFSERR_NOENT 2 @@ -44,6 +47,16 @@ #define NFS_READ_SIZE 1024 /* biggest power of two that fits Ether frame */ #endif +/* Values for Accept State flag on RPC answers (See: rfc1831) */ +enum rpc_accept_stat { + NFS_RPC_SUCCESS = 0, /* RPC executed successfully */ + NFS_RPC_PROG_UNAVAIL = 1, /* remote hasn't exported program */ + NFS_RPC_PROG_MISMATCH = 2, /* remote can't support version # */ + NFS_RPC_PROC_UNAVAIL = 3, /* program can't support procedure */ + NFS_RPC_GARBAGE_ARGS = 4, /* procedure can't decode params */ + NFS_RPC_SYSTEM_ERR = 5 /* errors like memory allocation failure */ +}; + struct rpc_t { union { uint8_t data[2048]; @@ -63,7 +76,7 @@ struct rpc_t { uint32_t verifier; uint32_t v2; uint32_t astatus; - uint32_t data[19]; + uint32_t data[NFS_READ_SIZE]; } reply; } u; }; -- cgit v1.2.3