1cbd8a35cSwdenk /* 2cbd8a35cSwdenk * (C) Masami Komiya <mkomiya@sonare.it> 2004 3cbd8a35cSwdenk * 4cbd8a35cSwdenk * This program is free software; you can redistribute it and/or 5cbd8a35cSwdenk * modify it under the terms of the GNU General Public License as 6cbd8a35cSwdenk * published by the Free Software Foundation; either version 2, or (at 7cbd8a35cSwdenk * your option) any later version. 8cbd8a35cSwdenk */ 9cbd8a35cSwdenk 10cbd8a35cSwdenk #ifndef __NFS_H__ 11cbd8a35cSwdenk #define __NFS_H__ 12cbd8a35cSwdenk 13cbd8a35cSwdenk #define SUNRPC_PORT 111 14cbd8a35cSwdenk 15cbd8a35cSwdenk #define PROG_PORTMAP 100000 16cbd8a35cSwdenk #define PROG_NFS 100003 17cbd8a35cSwdenk #define PROG_MOUNT 100005 18cbd8a35cSwdenk 19cbd8a35cSwdenk #define MSG_CALL 0 20cbd8a35cSwdenk #define MSG_REPLY 1 21cbd8a35cSwdenk 22cbd8a35cSwdenk #define PORTMAP_GETPORT 3 23cbd8a35cSwdenk 24cbd8a35cSwdenk #define MOUNT_ADDENTRY 1 25cbd8a35cSwdenk #define MOUNT_UMOUNTALL 4 26cbd8a35cSwdenk 27cbd8a35cSwdenk #define NFS_LOOKUP 4 28cbd8a35cSwdenk #define NFS_READLINK 5 29cbd8a35cSwdenk #define NFS_READ 6 30cbd8a35cSwdenk 31cbd8a35cSwdenk #define NFS_FHSIZE 32 32cbd8a35cSwdenk 33cbd8a35cSwdenk #define NFSERR_PERM 1 34cbd8a35cSwdenk #define NFSERR_NOENT 2 35cbd8a35cSwdenk #define NFSERR_ACCES 13 36cbd8a35cSwdenk #define NFSERR_ISDIR 21 37cbd8a35cSwdenk #define NFSERR_INVAL 22 38cbd8a35cSwdenk 39cbd8a35cSwdenk /* Block size used for NFS read accesses. A RPC reply packet (including all 40cbd8a35cSwdenk * headers) must fit within a single Ethernet frame to avoid fragmentation. 41*bd931ca6SAlessandro Rubini * However, if CONFIG_IP_DEFRAG is set, the config file may want to use a 42*bd931ca6SAlessandro Rubini * bigger value. In any case, most NFS servers are optimized for a power of 2. 43*bd931ca6SAlessandro Rubini */ 44*bd931ca6SAlessandro Rubini #ifdef CONFIG_NFS_READ_SIZE 45*bd931ca6SAlessandro Rubini #define NFS_READ_SIZE CONFIG_NFS_READ_SIZE 46*bd931ca6SAlessandro Rubini #else 47*bd931ca6SAlessandro Rubini #define NFS_READ_SIZE 1024 /* biggest power of two that fits Ether frame */ 48*bd931ca6SAlessandro Rubini #endif 49cbd8a35cSwdenk 50cbd8a35cSwdenk #define NFS_MAXLINKDEPTH 16 51cbd8a35cSwdenk 52cbd8a35cSwdenk struct rpc_t { 53cbd8a35cSwdenk union { 54cbd8a35cSwdenk uint8_t data[2048]; 55cbd8a35cSwdenk struct { 56cbd8a35cSwdenk uint32_t id; 57cbd8a35cSwdenk uint32_t type; 58cbd8a35cSwdenk uint32_t rpcvers; 59cbd8a35cSwdenk uint32_t prog; 60cbd8a35cSwdenk uint32_t vers; 61cbd8a35cSwdenk uint32_t proc; 62cbd8a35cSwdenk uint32_t data[1]; 63cbd8a35cSwdenk } call; 64cbd8a35cSwdenk struct { 65cbd8a35cSwdenk uint32_t id; 66cbd8a35cSwdenk uint32_t type; 67cbd8a35cSwdenk uint32_t rstatus; 68cbd8a35cSwdenk uint32_t verifier; 69cbd8a35cSwdenk uint32_t v2; 70cbd8a35cSwdenk uint32_t astatus; 7111dadd54Swdenk uint32_t data[19]; 72cbd8a35cSwdenk } reply; 73cbd8a35cSwdenk } u; 74cbd8a35cSwdenk }; 75cbd8a35cSwdenk extern void NfsStart (void); /* Begin NFS */ 76cbd8a35cSwdenk 77cbd8a35cSwdenk 78cbd8a35cSwdenk /**********************************************************************/ 79cbd8a35cSwdenk 80cbd8a35cSwdenk #endif /* __NFS_H__ */ 81