keep those hash chains and LRU chains separate
[unix-history] / usr / src / sys / nfs / nfsproto.h
CommitLineData
a2907882
KM
1/*
2 * Copyright (c) 1989 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * Rick Macklem at The University of Guelph.
7 *
dbf0c423 8 * %sccs.include.redist.c%
a2907882 9 *
e420cd72 10 * @(#)nfsproto.h 7.10 (Berkeley) %G%
a2907882
KM
11 */
12
13/*
14 * nfs definitions as per the version 2 specs
15 */
16
17/*
18 * Constants as defined in the Sun NFS Version 2 spec.
66435314 19 * "NFS: Network File System Protocol Specification" RFC1094
a2907882
KM
20 */
21
22#define NFS_PORT 2049
23#define NFS_PROG 100003
24#define NFS_VER2 2
170bfd05
KM
25#define NFS_MAXDGRAMDATA 8192
26#define NFS_MAXDATA 32768
a2907882
KM
27#define NFS_MAXPATHLEN 1024
28#define NFS_MAXNAMLEN 255
29#define NFS_FHSIZE 32
f0f1cbaa
KM
30#define NFS_MAXPKTHDR 404
31#define NFS_MAXPACKET (NFS_MAXPKTHDR+NFS_MAXDATA)
2c5b44a2 32#define NFS_MINPACKET 20
d4e5799e 33#define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */
a2907882
KM
34
35/* Stat numbers for rpc returns */
36#define NFS_OK 0
37#define NFSERR_PERM 1
38#define NFSERR_NOENT 2
39#define NFSERR_IO 5
40#define NFSERR_NXIO 6
41#define NFSERR_ACCES 13
42#define NFSERR_EXIST 17
43#define NFSERR_NODEV 19
44#define NFSERR_NOTDIR 20
45#define NFSERR_ISDIR 21
46#define NFSERR_FBIG 27
47#define NFSERR_NOSPC 28
48#define NFSERR_ROFS 30
2c5b44a2 49#define NFSERR_NAMETOL 63
a2907882
KM
50#define NFSERR_NOTEMPTY 66
51#define NFSERR_DQUOT 69
52#define NFSERR_STALE 70
53#define NFSERR_WFLUSH 99
54
55/* Sizes in bytes of various nfs rpc components */
56#define NFSX_FH 32
57#define NFSX_UNSIGNED 4
58#define NFSX_FATTR 68
59#define NFSX_SATTR 32
60#define NFSX_COOKIE 4
61#define NFSX_STATFS 20
62
63/* nfs rpc procedure numbers */
64#define NFSPROC_NULL 0
65#define NFSPROC_GETATTR 1
66#define NFSPROC_SETATTR 2
2c5b44a2
KM
67#define NFSPROC_NOOP 3
68#define NFSPROC_ROOT NFSPROC_NOOP /* Obsolete */
a2907882
KM
69#define NFSPROC_LOOKUP 4
70#define NFSPROC_READLINK 5
71#define NFSPROC_READ 6
2c5b44a2 72#define NFSPROC_WRITECACHE NFSPROC_NOOP /* Obsolete */
a2907882
KM
73#define NFSPROC_WRITE 8
74#define NFSPROC_CREATE 9
75#define NFSPROC_REMOVE 10
76#define NFSPROC_RENAME 11
77#define NFSPROC_LINK 12
78#define NFSPROC_SYMLINK 13
79#define NFSPROC_MKDIR 14
80#define NFSPROC_RMDIR 15
81#define NFSPROC_READDIR 16
82#define NFSPROC_STATFS 17
83
2c5b44a2
KM
84/* NQ nfs numbers */
85#define NQNFSPROC_READDIRLOOK 18
86#define NQNFSPROC_GETLEASE 19
87#define NQNFSPROC_VACATED 20
88#define NQNFSPROC_EVICTED 21
89
90#define NFS_NPROCS 22
a2907882 91/* Conversion macros */
c083d08d 92extern int vttoif_tab[];
d4e5799e
KM
93#define vtonfs_mode(t,m) \
94 txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \
95 MAKEIMODE((t), (m)))
a2907882
KM
96#define nfstov_mode(a) (fxdr_unsigned(u_short, (a))&07777)
97#define vtonfs_type(a) txdr_unsigned(nfs_type[((long)(a))])
d4e5799e 98#define nfstov_type(a) ntov_type[fxdr_unsigned(u_long,(a))&0x7]
a2907882
KM
99
100/* File types */
101typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5 } nfstype;
9238aa59
RM
102
103/* Structs for common parts of the rpc's */
104struct nfsv2_time {
105 u_long tv_sec;
106 u_long tv_usec;
107};
108
109struct nfsv2_fattr {
110 u_long fa_type;
111 u_long fa_mode;
112 u_long fa_nlink;
113 u_long fa_uid;
114 u_long fa_gid;
115 u_long fa_size;
116 u_long fa_blocksize;
117 u_long fa_rdev;
118 u_long fa_blocks;
119 u_long fa_fsid;
120 u_long fa_fileid;
121 struct nfsv2_time fa_atime;
122 struct nfsv2_time fa_mtime;
123 struct nfsv2_time fa_ctime;
124};
125
126struct nfsv2_sattr {
127 u_long sa_mode;
128 u_long sa_uid;
129 u_long sa_gid;
130 u_long sa_size;
131 struct nfsv2_time sa_atime;
132 struct nfsv2_time sa_mtime;
133};
134
135struct nfsv2_statfs {
136 u_long sf_tsize;
137 u_long sf_bsize;
138 u_long sf_blocks;
139 u_long sf_bfree;
140 u_long sf_bavail;
141};