X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=net%2Fnfs.h;h=a377c90088388b94e77cf23226e38a47ffd2021b;hb=26cbc0d663555b8af7d40ecfd0d0fefe960d9686;hp=d69b422f5209da05b6204183c3a59bd6e294c95f;hpb=b8d7652c81689a69bc6eaa206cf875bbe632831c;p=oweals%2Fu-boot.git diff --git a/net/nfs.h b/net/nfs.h index d69b422f52..a377c90088 100644 --- a/net/nfs.h +++ b/net/nfs.h @@ -1,7 +1,6 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Masami Komiya 2004 - * - * SPDX-License-Identifier: GPL-2.0+ */ #ifndef __NFS_H__ @@ -25,7 +24,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 @@ -33,22 +35,29 @@ #define NFSERR_ISDIR 21 #define NFSERR_INVAL 22 -/* Block size used for NFS read accesses. A RPC reply packet (including all +/* + * Block size used for NFS read accesses. A RPC reply packet (including all * headers) must fit within a single Ethernet frame to avoid fragmentation. - * However, if CONFIG_IP_DEFRAG is set, the config file may want to use a - * bigger value. In any case, most NFS servers are optimized for a power of 2. + * However, if CONFIG_IP_DEFRAG is set, a bigger value could be used. In any + * case, most NFS servers are optimized for a power of 2. */ -#ifdef CONFIG_NFS_READ_SIZE -#define NFS_READ_SIZE CONFIG_NFS_READ_SIZE -#else -#define NFS_READ_SIZE 1024 /* biggest power of two that fits Ether frame */ -#endif +#define NFS_READ_SIZE 1024 /* biggest power of two that fits Ether frame */ +#define NFS_MAX_ATTRS 26 -#define NFS_MAXLINKDEPTH 16 +/* 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]; + uint8_t data[NFS_READ_SIZE + (6 + NFS_MAX_ATTRS) * + sizeof(uint32_t)]; struct { uint32_t id; uint32_t type; @@ -65,10 +74,11 @@ struct rpc_t { uint32_t verifier; uint32_t v2; uint32_t astatus; - uint32_t data[19]; + uint32_t data[NFS_READ_SIZE / sizeof(uint32_t) + + NFS_MAX_ATTRS]; } reply; } u; -}; +} __attribute__((packed)); void nfs_start(void); /* Begin NFS */