Initial import from FreeBSD RELENG_4:
[dragonfly.git] / contrib / amd / conf / nfs_prot / nfs_prot_freebsd3.h
1 /*
2  * Copyright (c) 1997-1999 Erez Zadok
3  * Copyright (c) 1990 Jan-Simon Pendry
4  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
5  * Copyright (c) 1990 The Regents of the University of California.
6  * All rights reserved.
7  *
8  * This code is derived from software contributed to Berkeley by
9  * Jan-Simon Pendry at Imperial College, London.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  *    notice, this list of conditions and the following disclaimer in the
18  *    documentation and/or other materials provided with the distribution.
19  * 3. All advertising materials mentioning features or use of this software
20  *    must display the following acknowledgment:
21  *      This product includes software developed by the University of
22  *      California, Berkeley and its contributors.
23  * 4. Neither the name of the University nor the names of its contributors
24  *    may be used to endorse or promote products derived from this software
25  *    without specific prior written permission.
26  *
27  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
28  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
31  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37  * SUCH DAMAGE.
38  *
39  *      %W% (Berkeley) %G%
40  *
41  * $Id: nfs_prot_freebsd3.h,v 1.4 1999/03/30 17:22:54 ezk Exp $
42  * $FreeBSD: src/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h,v 1.7 1999/09/15 05:45:14 obrien Exp $
43  *
44  */
45
46 #ifndef _AMU_NFS_PROT_H
47 #define _AMU_NFS_PROT_H
48
49 #ifdef COMMENT_OUT
50 #ifdef HAVE_RPCSVC_NFS_PROT_H
51 # include <rpcsvc/nfs_prot.h>
52 #endif /* HAVE_RPCSVC_NFS_PROT_H */
53 #endif  /* COMMENT_OUT */
54 /* nfs_prot.h defines struct `nfs_fh3', but it is a ``dmr "unwarranted
55  * chumminess with the C implementation".  We need the more complete
56  * structure, which is defined below.  So get the stock `nfs_fh3'
57  * out of the way.
58  */
59 struct nfs_fh3;
60 #define nfs_fh3 nfs_fh3_fbsd_
61 # include "nfs_prot.h"
62 #undef nfs_fh3
63
64 #ifdef HAVE_NFS_RPCV2_H
65 # include <nfs/rpcv2.h>
66 #endif /* HAVE_NFS_RPCV2_H */
67 #ifdef HAVE_NFS_NFS_H
68 # include <nfs/nfs.h>
69 #endif /* HAVE_NFS_NFS_H */
70 #ifdef  HAVE_UFS_UFS_UFSMOUNT_H
71 # include <ufs/ufs/ufsmount.h>
72 #endif  /* HAVE_UFS_UFS_UFSMOUNT_H */
73
74 /*
75  * MACROS:
76  */
77 #define dr_drok_u       diropres
78 #define ca_where        where
79 #define da_fhandle      dir
80 #define da_name         name
81 #define dl_entries      entries
82 #define dl_eof          eof
83 #define dr_status       status
84 #define dr_u            diropres_u
85 #define drok_attributes attributes
86 #define drok_fhandle    file
87 #define fh_data         data
88 #define la_fhandle      from
89 #define la_to           to
90 #define na_atime        atime
91 #define na_ctime        ctime
92 #define na_fileid       fileid
93 #define na_fsid         fsid
94 #define na_mode         mode
95 #define na_mtime        mtime
96 #define na_nlink        nlink
97 #define na_size         size
98 #define na_type         type
99 #define ne_cookie       cookie
100 #define ne_fileid       fileid
101 #define ne_name         name
102 #define ne_nextentry    nextentry
103 #define ns_attr_u       attributes
104 #define ns_status       status
105 #define ns_u            attrstat_u
106 #define nt_seconds      seconds
107 #define nt_useconds     useconds
108 #define rda_cookie      cookie
109 #define rda_count       count
110 #define rda_fhandle     dir
111 #define rdr_reply_u     reply
112 #define rdr_status      status
113 #define rdr_u           readdirres_u
114 #define rlr_data_u      data
115 #define rlr_status      status
116 #define rlr_u           readlinkres_u
117 #define rna_from        from
118 #define rna_to          to
119 #define rr_status       status
120 #define sag_fhandle     file
121 #define sfr_reply_u     reply
122 #define sfr_status      status
123 #define sfr_u           statfsres_u
124 #define sfrok_bavail    bavail
125 #define sfrok_bfree     bfree
126 #define sfrok_blocks    blocks
127 #define sfrok_bsize     bsize
128 #define sfrok_tsize     tsize
129 #define sla_from        from
130 #define wra_fhandle     file
131
132
133 /*
134  * TYPEDEFS:
135  */
136 typedef attrstat nfsattrstat;
137 typedef createargs nfscreateargs;
138 typedef dirlist nfsdirlist;
139 typedef diropargs nfsdiropargs;
140 typedef diropres nfsdiropres;
141 typedef entry nfsentry;
142 typedef fattr nfsfattr;
143 typedef ftype nfsftype;
144 typedef linkargs nfslinkargs;
145 typedef readargs nfsreadargs;
146 typedef readdirargs nfsreaddirargs;
147 typedef readdirres nfsreaddirres;
148 typedef readlinkres nfsreadlinkres;
149 typedef readres nfsreadres;
150 typedef renameargs nfsrenameargs;
151 typedef sattrargs nfssattrargs;
152 typedef statfsokres nfsstatfsokres;
153 typedef statfsres nfsstatfsres;
154 typedef symlinkargs nfssymlinkargs;
155 typedef writeargs nfswriteargs;
156
157
158 /*
159  *
160  * FreeBSD-3.0-RELEASE has NFS V3.  Older versions had it only defined
161  * in the rpcgen source file.  If you are on an older system, and you
162  * want NFSv3 support, you need to regenerate the rpcsvc header files as
163  * follows:
164  *      cd /usr/include/rpcsvc
165  *      rpcgen -h -C -DWANT_NFS3 mount.x
166  *      rpcgen -h -C -DWANT_NFS3 nfs_prot.x
167  * If you don't want NFSv3, then you will have to turn off the NFSMNT_NFSV3
168  * macro below.  If the code doesn't compile, upgrade to the latest 3.0
169  * version...
170  */
171 #ifdef NFSMNT_NFSV3
172
173 # define MOUNT_NFS3 MOUNT_NFS
174 # define MNTOPT_NFS3 "nfs"
175
176 /*
177  * as of 3.0-RELEASE the nfs_fh3 that is defined in the system headers
178  * (or the one generated by rpcgen) lacks the proper full definition,
179  * listed below.  A special macro (aux/macros/struct_nfs_fh3.m4) searches
180  * for this special name before other names.
181  */
182 struct nfs_fh3_freebsd3 {
183   u_int fh3_length;
184   union nfs_fh3_u {
185     struct nfs_fh3_i {
186       fhandle_t fh3_i;
187     } nfs_fh3_i;
188     char data[NFS3_FHSIZE];
189   } fh3_u;
190 };
191 typedef struct nfs_fh3_freebsd3 nfs_fh3_freebsd3;
192
193 /* since we don't use Am-utils's aux/macros/struct_nfs_fh3.m4, we don't get
194    their special searching.  So restore the standard name. */
195 typedef struct nfs_fh3_freebsd3 nfs_fh3;
196
197 #endif /* NFSMNT_NFSV3 */
198
199 #endif /* not _AMU_NFS_PROT_H */