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