[proto] Remove unsupported FSP protocol
[people/pcmattman/gpxe.git] / src / include / nfs.h
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 } PACKED;
62
63 #endif  /* _NFS_H */