|
|
1.1 root 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: *
8: * Redistribution and use in source and binary forms, with or without
9: * modification, are permitted provided that the following conditions
10: * are met:
11: * 1. Redistributions of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: * 2. Redistributions in binary form must reproduce the above copyright
14: * notice, this list of conditions and the following disclaimer in the
15: * documentation and/or other materials provided with the distribution.
16: * 3. All advertising materials mentioning features or use of this software
17: * must display the following acknowledgement:
18: * This product includes software developed by the University of
19: * California, Berkeley and its contributors.
20: * 4. Neither the name of the University nor the names of its contributors
21: * may be used to endorse or promote products derived from this software
22: * without specific prior written permission.
23: *
24: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34: * SUCH DAMAGE.
35: *
36: * @(#)nfsv2.h 7.8 (Berkeley) 6/28/90
37: */
38:
39: /*
40: * nfs definitions as per the version 2 specs
41: */
42:
43: /*
44: * Constants as defined in the Sun NFS Version 2 spec.
45: * "NFS: Network File System Protocol Specification" RFC1094
46: */
47:
48: #define NFS_PORT 2049
49: #define NFS_PROG 100003
50: #define NFS_VER2 2
51: #define NFS_MAXDGRAMDATA 8192
52: #define NFS_MAXDATA 32768
53: #define NFS_MAXPATHLEN 1024
54: #define NFS_MAXNAMLEN 255
55: #define NFS_FHSIZE 32
56: #define NFS_MAXPKTHDR 404
57: #define NFS_MAXPACKET (NFS_MAXPKTHDR+NFS_MAXDATA)
58: #define NFS_NPROCS 18
59: #define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */
60:
61: /* Stat numbers for rpc returns */
62: #define NFS_OK 0
63: #define NFSERR_PERM 1
64: #define NFSERR_NOENT 2
65: #define NFSERR_IO 5
66: #define NFSERR_NXIO 6
67: #define NFSERR_ACCES 13
68: #define NFSERR_EXIST 17
69: #define NFSERR_NODEV 19
70: #define NFSERR_NOTDIR 20
71: #define NFSERR_ISDIR 21
72: #define NFSERR_FBIG 27
73: #define NFSERR_NOSPC 28
74: #define NFSERR_ROFS 30
75: #define NFSERR_NAMETOOLONG 63
76: #define NFSERR_NOTEMPTY 66
77: #define NFSERR_DQUOT 69
78: #define NFSERR_STALE 70
79: #define NFSERR_WFLUSH 99
80:
81: /* Sizes in bytes of various nfs rpc components */
82: #define NFSX_FH 32
83: #define NFSX_UNSIGNED 4
84: #define NFSX_FATTR 68
85: #define NFSX_SATTR 32
86: #define NFSX_COOKIE 4
87: #define NFSX_STATFS 20
88:
89: /* nfs rpc procedure numbers */
90: #define NFSPROC_NULL 0
91: #define NFSPROC_GETATTR 1
92: #define NFSPROC_SETATTR 2
93: #define NFSPROC_ROOT 3 /* Obsolete */
94: #define NFSPROC_LOOKUP 4
95: #define NFSPROC_READLINK 5
96: #define NFSPROC_READ 6
97: #define NFSPROC_WRITECACHE 7 /* Obsolete */
98: #define NFSPROC_WRITE 8
99: #define NFSPROC_CREATE 9
100: #define NFSPROC_REMOVE 10
101: #define NFSPROC_RENAME 11
102: #define NFSPROC_LINK 12
103: #define NFSPROC_SYMLINK 13
104: #define NFSPROC_MKDIR 14
105: #define NFSPROC_RMDIR 15
106: #define NFSPROC_READDIR 16
107: #define NFSPROC_STATFS 17
108:
109: /* Conversion macros */
110: extern int vttoif_tab[];
111: #define vtonfs_mode(t,m) \
112: txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \
113: MAKEIMODE((t), (m)))
114: #define nfstov_mode(a) (fxdr_unsigned(u_short, (a))&07777)
115: #define vtonfs_type(a) txdr_unsigned(nfs_type[((long)(a))])
116: #define nfstov_type(a) ntov_type[fxdr_unsigned(u_long,(a))&0x7]
117:
118: /* File types */
119: typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5 } nfstype;
120:
121: /* Structs for common parts of the rpc's */
122: struct nfsv2_time {
123: u_long tv_sec;
124: u_long tv_usec;
125: };
126:
127: struct nfsv2_fattr {
128: u_long fa_type;
129: u_long fa_mode;
130: u_long fa_nlink;
131: u_long fa_uid;
132: u_long fa_gid;
133: u_long fa_size;
134: u_long fa_blocksize;
135: u_long fa_rdev;
136: u_long fa_blocks;
137: u_long fa_fsid;
138: u_long fa_fileid;
139: struct nfsv2_time fa_atime;
140: struct nfsv2_time fa_mtime;
141: struct nfsv2_time fa_ctime;
142: };
143:
144: struct nfsv2_sattr {
145: u_long sa_mode;
146: u_long sa_uid;
147: u_long sa_gid;
148: u_long sa_size;
149: struct nfsv2_time sa_atime;
150: struct nfsv2_time sa_mtime;
151: };
152:
153: struct nfsv2_statfs {
154: u_long sf_tsize;
155: u_long sf_bsize;
156: u_long sf_blocks;
157: u_long sf_bfree;
158: u_long sf_bavail;
159: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.