first bootable NFS from Rick Macklem
[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 *
20 * @(#)nfsproto.h 7.1 (Berkeley) %G%
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.
29 * "Network File System Protocol Specification" in the
30 * Manual "Networking on the Sun Workstation", Part #800-1324-03, Rev B
31 */
32
33#define NFS_PORT 2049
34#define NFS_PROG 100003
35#define NFS_VER2 2
36#define NFS_MAXDATA 8192
37#define NFS_MAXPATHLEN 1024
38#define NFS_MAXNAMLEN 255
39#define NFS_FHSIZE 32
40#define NFS_NPROCS 18
41
42/* Stat numbers for rpc returns */
43#define NFS_OK 0
44#define NFSERR_PERM 1
45#define NFSERR_NOENT 2
46#define NFSERR_IO 5
47#define NFSERR_NXIO 6
48#define NFSERR_ACCES 13
49#define NFSERR_EXIST 17
50#define NFSERR_NODEV 19
51#define NFSERR_NOTDIR 20
52#define NFSERR_ISDIR 21
53#define NFSERR_FBIG 27
54#define NFSERR_NOSPC 28
55#define NFSERR_ROFS 30
56#define NFSERR_NAMETOOLONG 63
57#define NFSERR_NOTEMPTY 66
58#define NFSERR_DQUOT 69
59#define NFSERR_STALE 70
60#define NFSERR_WFLUSH 99
61
62/* Sizes in bytes of various nfs rpc components */
63#define NFSX_FH 32
64#define NFSX_UNSIGNED 4
65#define NFSX_FATTR 68
66#define NFSX_SATTR 32
67#define NFSX_COOKIE 4
68#define NFSX_STATFS 20
69
70/* nfs rpc procedure numbers */
71#define NFSPROC_NULL 0
72#define NFSPROC_GETATTR 1
73#define NFSPROC_SETATTR 2
74#define NFSPROC_ROOT 3 /* Obsolete */
75#define NFSPROC_LOOKUP 4
76#define NFSPROC_READLINK 5
77#define NFSPROC_READ 6
78#define NFSPROC_WRITECACHE 7 /* Obsolete */
79#define NFSPROC_WRITE 8
80#define NFSPROC_CREATE 9
81#define NFSPROC_REMOVE 10
82#define NFSPROC_RENAME 11
83#define NFSPROC_LINK 12
84#define NFSPROC_SYMLINK 13
85#define NFSPROC_MKDIR 14
86#define NFSPROC_RMDIR 15
87#define NFSPROC_READDIR 16
88#define NFSPROC_STATFS 17
89
90/* Conversion macros */
91#define vtonfs_mode(t,m) txdr_unsigned(MAKEIMODE(t,m))
92#define nfstov_mode(a) (fxdr_unsigned(u_short, (a))&07777)
93#define vtonfs_type(a) txdr_unsigned(nfs_type[((long)(a))])
94#define nfstov_type(a) v_type[fxdr_unsigned(u_long, (a))]
95
96/* File types */
97typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5 } nfstype;