xref: /netbsd-src/sys/lib/libsa/nfsv3.h (revision 10b25568d495aaa52750f5552977bbf6adc2d805)
1 /*	$NetBSD: nfsv3.h,v 1.1 2023/12/12 09:12:55 mlelstv Exp $	*/
2 
3 /*
4  * Copyright (c) 2023 Michael van Elst
5  *
6  * This code is derived from software contributed to Berkeley by
7  * Rick Macklem at The University of Guelph.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28  * SUCH DAMAGE.
29  */
30 
31 /*
32  * nfs definitions as per the version 3 specs
33  */
34 
35 #define NFS_VER3	3
36 #define	NFS_V3FHSIZE	64
37 
38 /* Sizes in bytes of various nfs rpc components */
39 #define	NFSX_V3FH	64
40 #define	NFSX_V3FATTR	84
41 
42 /* Different V3 procedure numbers that we need */
43 #define NFSV3PROC_LOOKUP          3
44 
45 /* Structs for common parts of the rpc's */
46 struct nfsv3_time {
47 	n_long	nfs_sec;
48 	n_long	nfs_nsec;
49 };
50 
51 struct nfsv3_spec {
52         n_long specdata1;
53         n_long specdata2;
54 };
55 
56 /*
57  * File attributes and setable attributes.
58  */
59 struct nfsv3_fattr {
60 	n_long	fa_type;
61 	n_long	fa_mode;
62 	n_long	fa_nlink;
63 	n_long	fa_uid;
64 	n_long	fa_gid;
65 	n_long	fa_size[2]; /* nfsuint64 */
66 	n_long	fa_used[2]; /* nfsuint64 */
67 	struct nfsv3_spec fa_rdev;
68 	n_long	fa_fsid[2]; /* nfsuint64 */
69 	n_long	fa_fileid[2]; /* nfsuint64 */
70 	struct nfsv3_time fa_atime;
71 	struct nfsv3_time fa_mtime;
72 	struct nfsv3_time fa_ctime;
73 };
74