1 #ifndef _NFS_H 2 #define _NFS_H 3 4 #define SUNRPC_PORT 111 5 6 #define PROG_PORTMAP 100000 7 #define PROG_NFS 100003 8 #define PROG_MOUNT 100005 9 10 #define MSG_CALL 0 11 #define MSG_REPLY 1 12 13 #define PORTMAP_GETPORT 3 14 15 #define MOUNT_ADDENTRY 1 16 #define MOUNT_UMOUNTALL 4 17 18 #define NFS_LOOKUP 4 19 #define NFS_READLINK 5 20 #define NFS_READ 6 21 22 #define NFS_FHSIZE 32 23 24 #define NFSERR_PERM 1 25 #define NFSERR_NOENT 2 26 #define NFSERR_ACCES 13 27 #define NFSERR_ISDIR 21 28 #define NFSERR_INVAL 22 29 30 /* Block size used for NFS read accesses. A RPC reply packet (including all 31 * headers) must fit within a single Ethernet frame to avoid fragmentation. 32 * Chosen to be a power of two, as most NFS servers are optimized for this. */ 33 #define NFS_READ_SIZE 1024 34 35 #define NFS_MAXLINKDEPTH 16 36 37 struct rpc_t { 38 struct iphdr ip; 39 struct udphdr udp; 40 union { 41 uint8_t data[300]; /* longest RPC call must fit!!!! */ 42 struct { 43 uint32_t id; 44 uint32_t type; 45 uint32_t rpcvers; 46 uint32_t prog; 47 uint32_t vers; 48 uint32_t proc; 49 uint32_t data[1]; 50 } call; 51 struct { 52 uint32_t id; 53 uint32_t type; 54 uint32_t rstatus; 55 uint32_t verifier; 56 uint32_t v2; 57 uint32_t astatus; 58 uint32_t data[1]; 59 } reply; 60 } u; 61 }; 62 63 #endif /* _NFS_H */ 64