|
|
1.1 root 1: /*
2: * $Id: nfs_prot.h,v 5.2 90/06/23 22:20:24 jsp Rel $
3: *
4: * Copyright (c) 1990 Jan-Simon Pendry
5: * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
6: * Copyright (c) 1990 The Regents of the University of California.
7: * All rights reserved.
8: *
9: * This code is derived from software contributed to Berkeley by
10: * Jan-Simon Pendry at Imperial College, London.
11: *
12: * Redistribution and use in source and binary forms are permitted provided
13: * that: (1) source distributions retain this entire copyright notice and
14: * comment, and (2) distributions including binaries display the following
15: * acknowledgement: ``This product includes software developed by the
16: * University of California, Berkeley and its contributors'' in the
17: * documentation or other materials provided with the distribution and in
18: * all advertising materials mentioning features or use of this software.
19: * Neither the name of the University nor the names of its contributors may
20: * be used to endorse or promote products derived from this software without
21: * specific prior written permission.
22: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
23: * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
24: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
25: *
26: * @(#)nfs_prot.h 5.1 (Berkeley) 7/19/90
27: */
28:
29: #define xdr_nfsstat xdr_enum
30: #define xdr_ftype xdr_enum
31:
32: #define NFS_PORT 2049
33: #define NFS_MAXDATA 8192
34: #define NFS_MAXPATHLEN 1024
35: #define NFS_MAXNAMLEN 255
36: #define NFS_FHSIZE 32
37: #define NFS_COOKIESIZE 4
38: #define NFS_FIFO_DEV -1
39: #define NFSMODE_FMT 0170000
40: #define NFSMODE_DIR 0040000
41: #define NFSMODE_CHR 0020000
42: #define NFSMODE_BLK 0060000
43: #define NFSMODE_REG 0100000
44: #define NFSMODE_LNK 0120000
45: #define NFSMODE_SOCK 0140000
46: #define NFSMODE_FIFO 0010000
47:
48: enum nfsstat {
49: NFS_OK = 0,
50: NFSERR_PERM = 1,
51: NFSERR_NOENT = 2,
52: NFSERR_IO = 5,
53: NFSERR_NXIO = 6,
54: NFSERR_ACCES = 13,
55: NFSERR_EXIST = 17,
56: NFSERR_NODEV = 19,
57: NFSERR_NOTDIR = 20,
58: NFSERR_ISDIR = 21,
59: NFSERR_FBIG = 27,
60: NFSERR_NOSPC = 28,
61: NFSERR_ROFS = 30,
62: NFSERR_NAMETOOLONG = 63,
63: NFSERR_NOTEMPTY = 66,
64: NFSERR_DQUOT = 69,
65: NFSERR_STALE = 70,
66: NFSERR_WFLUSH = 99
67: };
68: typedef enum nfsstat nfsstat;
69: bool_t xdr_nfsstat();
70:
71:
72: enum ftype {
73: NFNON = 0,
74: NFREG = 1,
75: NFDIR = 2,
76: NFBLK = 3,
77: NFCHR = 4,
78: NFLNK = 5,
79: NFSOCK = 6,
80: NFBAD = 7,
81: NFFIFO = 8
82: };
83: typedef enum ftype ftype;
84: /* static bool_t xdr_ftype(); */
85:
86:
87: struct nfs_fh {
88: char data[NFS_FHSIZE];
89: };
90: typedef struct nfs_fh nfs_fh;
91: bool_t xdr_nfs_fh();
92:
93:
94: struct nfstime {
95: u_int seconds;
96: u_int useconds;
97: };
98: typedef struct nfstime nfstime;
99: /* static bool_t xdr_nfstime(); */
100:
101:
102: struct fattr {
103: ftype type;
104: u_int mode;
105: u_int nlink;
106: u_int uid;
107: u_int gid;
108: u_int size;
109: u_int blocksize;
110: u_int rdev;
111: u_int blocks;
112: u_int fsid;
113: u_int fileid;
114: nfstime atime;
115: nfstime mtime;
116: nfstime ctime;
117: };
118: typedef struct fattr fattr;
119: /* static bool_t xdr_fattr(); */
120:
121:
122: struct sattr {
123: u_int mode;
124: u_int uid;
125: u_int gid;
126: u_int size;
127: nfstime atime;
128: nfstime mtime;
129: };
130: typedef struct sattr sattr;
131: /* static bool_t xdr_sattr(); */
132:
133:
134: typedef char *filename;
135: /* static bool_t xdr_filename(); */
136:
137:
138: typedef char *nfspath;
139: bool_t xdr_nfspath();
140:
141:
142: struct attrstat {
143: nfsstat status;
144: union {
145: fattr attributes;
146: } attrstat_u;
147: };
148: typedef struct attrstat attrstat;
149: bool_t xdr_attrstat();
150:
151:
152: struct sattrargs {
153: nfs_fh file;
154: sattr attributes;
155: };
156: typedef struct sattrargs sattrargs;
157: bool_t xdr_sattrargs();
158:
159:
160: struct diropargs {
161: nfs_fh dir;
162: filename name;
163: };
164: typedef struct diropargs diropargs;
165: bool_t xdr_diropargs();
166:
167:
168: struct diropokres {
169: nfs_fh file;
170: fattr attributes;
171: };
172: typedef struct diropokres diropokres;
173: bool_t xdr_diropokres();
174:
175:
176: struct diropres {
177: nfsstat status;
178: union {
179: diropokres diropres;
180: } diropres_u;
181: };
182: typedef struct diropres diropres;
183: bool_t xdr_diropres();
184:
185:
186: struct readlinkres {
187: nfsstat status;
188: union {
189: nfspath data;
190: } readlinkres_u;
191: };
192: typedef struct readlinkres readlinkres;
193: bool_t xdr_readlinkres();
194:
195:
196: struct readargs {
197: nfs_fh file;
198: u_int offset;
199: u_int count;
200: u_int totalcount;
201: };
202: typedef struct readargs readargs;
203: bool_t xdr_readargs();
204:
205:
206: struct readokres {
207: fattr attributes;
208: struct {
209: u_int data_len;
210: char *data_val;
211: } data;
212: };
213: typedef struct readokres readokres;
214: bool_t xdr_readokres();
215:
216:
217: struct readres {
218: nfsstat status;
219: union {
220: readokres reply;
221: } readres_u;
222: };
223: typedef struct readres readres;
224: bool_t xdr_readres();
225:
226:
227: struct writeargs {
228: nfs_fh file;
229: u_int beginoffset;
230: u_int offset;
231: u_int totalcount;
232: struct {
233: u_int data_len;
234: char *data_val;
235: } data;
236: };
237: typedef struct writeargs writeargs;
238: bool_t xdr_writeargs();
239:
240:
241: struct createargs {
242: diropargs where;
243: sattr attributes;
244: };
245: typedef struct createargs createargs;
246: bool_t xdr_createargs();
247:
248:
249: struct renameargs {
250: diropargs from;
251: diropargs to;
252: };
253: typedef struct renameargs renameargs;
254: bool_t xdr_renameargs();
255:
256:
257: struct linkargs {
258: nfs_fh from;
259: diropargs to;
260: };
261: typedef struct linkargs linkargs;
262: bool_t xdr_linkargs();
263:
264:
265: struct symlinkargs {
266: diropargs from;
267: nfspath to;
268: sattr attributes;
269: };
270: typedef struct symlinkargs symlinkargs;
271: bool_t xdr_symlinkargs();
272:
273:
274: typedef char nfscookie[NFS_COOKIESIZE];
275: /* static bool_t xdr_nfscookie(); */
276:
277:
278: struct readdirargs {
279: nfs_fh dir;
280: nfscookie cookie;
281: u_int count;
282: };
283: typedef struct readdirargs readdirargs;
284: bool_t xdr_readdirargs();
285:
286:
287: struct entry {
288: u_int fileid;
289: filename name;
290: nfscookie cookie;
291: struct entry *nextentry;
292: };
293: typedef struct entry entry;
294: /* static bool_t xdr_entry(); */
295:
296:
297: struct dirlist {
298: entry *entries;
299: bool_t eof;
300: };
301: typedef struct dirlist dirlist;
302: /* static bool_t xdr_dirlist(); */
303:
304:
305: struct readdirres {
306: nfsstat status;
307: union {
308: dirlist reply;
309: } readdirres_u;
310: };
311: typedef struct readdirres readdirres;
312: bool_t xdr_readdirres();
313:
314:
315: struct statfsokres {
316: u_int tsize;
317: u_int bsize;
318: u_int blocks;
319: u_int bfree;
320: u_int bavail;
321: };
322: typedef struct statfsokres statfsokres;
323: bool_t xdr_statfsokres();
324:
325:
326: struct statfsres {
327: nfsstat status;
328: union {
329: statfsokres reply;
330: } statfsres_u;
331: };
332: typedef struct statfsres statfsres;
333: bool_t xdr_statfsres();
334:
335:
336: #define NFS_PROGRAM ((u_long)100003)
337: #define NFS_VERSION ((u_long)2)
338: #define NFSPROC_NULL ((u_long)0)
339: extern voidp nfsproc_null_2();
340: #define NFSPROC_GETATTR ((u_long)1)
341: extern attrstat *nfsproc_getattr_2();
342: #define NFSPROC_SETATTR ((u_long)2)
343: extern attrstat *nfsproc_setattr_2();
344: #define NFSPROC_ROOT ((u_long)3)
345: extern voidp nfsproc_root_2();
346: #define NFSPROC_LOOKUP ((u_long)4)
347: extern diropres *nfsproc_lookup_2();
348: #define NFSPROC_READLINK ((u_long)5)
349: extern readlinkres *nfsproc_readlink_2();
350: #define NFSPROC_READ ((u_long)6)
351: extern readres *nfsproc_read_2();
352: #define NFSPROC_WRITECACHE ((u_long)7)
353: extern voidp nfsproc_writecache_2();
354: #define NFSPROC_WRITE ((u_long)8)
355: extern attrstat *nfsproc_write_2();
356: #define NFSPROC_CREATE ((u_long)9)
357: extern diropres *nfsproc_create_2();
358: #define NFSPROC_REMOVE ((u_long)10)
359: extern nfsstat *nfsproc_remove_2();
360: #define NFSPROC_RENAME ((u_long)11)
361: extern nfsstat *nfsproc_rename_2();
362: #define NFSPROC_LINK ((u_long)12)
363: extern nfsstat *nfsproc_link_2();
364: #define NFSPROC_SYMLINK ((u_long)13)
365: extern nfsstat *nfsproc_symlink_2();
366: #define NFSPROC_MKDIR ((u_long)14)
367: extern diropres *nfsproc_mkdir_2();
368: #define NFSPROC_RMDIR ((u_long)15)
369: extern nfsstat *nfsproc_rmdir_2();
370: #define NFSPROC_READDIR ((u_long)16)
371: extern readdirres *nfsproc_readdir_2();
372: #define NFSPROC_STATFS ((u_long)17)
373: extern statfsres *nfsproc_statfs_2();
374:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.