line mode telnet mods
[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 *
8 * Redistribution and use in source and binary forms are permitted
9 * provided that the above copyright notice and this paragraph are
10 * duplicated in all such forms and that any documentation,
11 * advertising materials, and other materials related to such
12 * distribution and use acknowledge that the software was developed
13 * by the University of California, Berkeley. The name of the
14 * University may not be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
19 *
f0f1cbaa 20 * @(#)nfsproto.h 7.5 (Berkeley) %G%
a2907882
KM
21 */
22
23/*
24 * nfs definitions as per the version 2 specs
25 */
26
27/*
28 * Constants as defined in the Sun NFS Version 2 spec.
66435314 29 * "NFS: Network File System Protocol Specification" RFC1094
a2907882
KM
30 */
31
32#define NFS_PORT 2049
33#define NFS_PROG 100003
34#define NFS_VER2 2
35#define NFS_MAXDATA 8192
36#define NFS_MAXPATHLEN 1024
37#define NFS_MAXNAMLEN 255
38#define NFS_FHSIZE 32
f0f1cbaa
KM
39#define NFS_MAXPKTHDR 404
40#define NFS_MAXPACKET (NFS_MAXPKTHDR+NFS_MAXDATA)
a2907882
KM
41#define NFS_NPROCS 18
42
43/* Stat numbers for rpc returns */
44#define NFS_OK 0
45#define NFSERR_PERM 1
46#define NFSERR_NOENT 2
47#define NFSERR_IO 5
48#define NFSERR_NXIO 6
49#define NFSERR_ACCES 13
50#define NFSERR_EXIST 17
51#define NFSERR_NODEV 19
52#define NFSERR_NOTDIR 20
53#define NFSERR_ISDIR 21
54#define NFSERR_FBIG 27
55#define NFSERR_NOSPC 28
56#define NFSERR_ROFS 30
57#define NFSERR_NAMETOOLONG 63
58#define NFSERR_NOTEMPTY 66
59#define NFSERR_DQUOT 69
60#define NFSERR_STALE 70
61#define NFSERR_WFLUSH 99
62
63/* Sizes in bytes of various nfs rpc components */
64#define NFSX_FH 32
65#define NFSX_UNSIGNED 4
66#define NFSX_FATTR 68
67#define NFSX_SATTR 32
68#define NFSX_COOKIE 4
69#define NFSX_STATFS 20
70
71/* nfs rpc procedure numbers */
72#define NFSPROC_NULL 0
73#define NFSPROC_GETATTR 1
74#define NFSPROC_SETATTR 2
75#define NFSPROC_ROOT 3 /* Obsolete */
76#define NFSPROC_LOOKUP 4
77#define NFSPROC_READLINK 5
78#define NFSPROC_READ 6
79#define NFSPROC_WRITECACHE 7 /* Obsolete */
80#define NFSPROC_WRITE 8
81#define NFSPROC_CREATE 9
82#define NFSPROC_REMOVE 10
83#define NFSPROC_RENAME 11
84#define NFSPROC_LINK 12
85#define NFSPROC_SYMLINK 13
86#define NFSPROC_MKDIR 14
87#define NFSPROC_RMDIR 15
88#define NFSPROC_READDIR 16
89#define NFSPROC_STATFS 17
90
91/* Conversion macros */
c083d08d
KM
92extern int vttoif_tab[];
93#define vtonfs_mode(t,m) txdr_unsigned((int)(vttoif_tab[(int)(t)] | (m)))
a2907882
KM
94#define nfstov_mode(a) (fxdr_unsigned(u_short, (a))&07777)
95#define vtonfs_type(a) txdr_unsigned(nfs_type[((long)(a))])
96#define nfstov_type(a) v_type[fxdr_unsigned(u_long, (a))]
97
98/* File types */
99typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5 } nfstype;
9238aa59
RM
100
101/* Structs for common parts of the rpc's */
102struct nfsv2_time {
103 u_long tv_sec;
104 u_long tv_usec;
105};
106
107struct nfsv2_fattr {
108 u_long fa_type;
109 u_long fa_mode;
110 u_long fa_nlink;
111 u_long fa_uid;
112 u_long fa_gid;
113 u_long fa_size;
114 u_long fa_blocksize;
115 u_long fa_rdev;
116 u_long fa_blocks;
117 u_long fa_fsid;
118 u_long fa_fileid;
119 struct nfsv2_time fa_atime;
120 struct nfsv2_time fa_mtime;
121 struct nfsv2_time fa_ctime;
122};
123
124struct nfsv2_sattr {
125 u_long sa_mode;
126 u_long sa_uid;
127 u_long sa_gid;
128 u_long sa_size;
129 struct nfsv2_time sa_atime;
130 struct nfsv2_time sa_mtime;
131};
132
133struct nfsv2_statfs {
134 u_long sf_tsize;
135 u_long sf_bsize;
136 u_long sf_blocks;
137 u_long sf_bfree;
138 u_long sf_bavail;
139};