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 */
|
---|