Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/fs/nfs/nfs_var.h
107769 views
1
/*-
2
* SPDX-License-Identifier: BSD-3-Clause
3
*
4
* Copyright (c) 1989, 1993
5
* The Regents of the University of California. All rights reserved.
6
*
7
* This code is derived from software contributed to Berkeley by
8
* Rick Macklem at The University of Guelph.
9
*
10
* Redistribution and use in source and binary forms, with or without
11
* modification, are permitted provided that the following conditions
12
* are met:
13
* 1. Redistributions of source code must retain the above copyright
14
* notice, this list of conditions and the following disclaimer.
15
* 2. Redistributions in binary form must reproduce the above copyright
16
* notice, this list of conditions and the following disclaimer in the
17
* documentation and/or other materials provided with the distribution.
18
* 3. Neither the name of the University nor the names of its contributors
19
* may be used to endorse or promote products derived from this software
20
* without specific prior written permission.
21
*
22
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32
* SUCH DAMAGE.
33
*/
34
35
/*
36
* XXX needs <nfs/rpcv2.h> and <nfs/nfs.h> because of typedefs
37
*/
38
39
struct uio;
40
struct ucred;
41
struct nfscred;
42
NFSPROC_T;
43
struct buf;
44
struct sockaddr_in;
45
struct nfs_dlmount;
46
struct file;
47
struct nfsmount;
48
struct socket;
49
struct nfsreq;
50
struct nfssockreq;
51
struct vattr;
52
struct nameidata;
53
struct nfsnode;
54
struct nfsfh;
55
struct sillyrename;
56
struct componentname;
57
struct nfsd_srvargs;
58
struct nfsrv_descript;
59
struct nfs_fattr;
60
union nethostaddr;
61
struct nfsstate;
62
struct nfslock;
63
struct nfsclient;
64
struct nfslayout;
65
struct nfsdsession;
66
struct nfslockconflict;
67
struct nfsd_idargs;
68
struct nfsd_clid;
69
struct nfsusrgrp;
70
struct nfsclowner;
71
struct nfsclopen;
72
struct nfsclopenhead;
73
struct nfsclclient;
74
struct nfsclsession;
75
struct nfscllockowner;
76
struct nfscllock;
77
struct nfscldeleg;
78
struct nfscllayout;
79
struct nfscldevinfo;
80
struct nfsv4lock;
81
struct nfsvattr;
82
struct nfs_vattr;
83
struct NFSSVCARGS;
84
struct nfsdevice;
85
struct pnfsdsfile;
86
struct pnfsdsattr;
87
#ifdef __FreeBSD__
88
NFS_ACCESS_ARGS;
89
NFS_OPEN_ARGS;
90
NFS_GETATTR_ARGS;
91
NFS_LOOKUP_ARGS;
92
NFS_READDIR_ARGS;
93
#endif
94
95
/* nfs_nfsdstate.c */
96
int nfsrv_setclient(struct nfsrv_descript *, struct nfsclient **,
97
nfsquad_t *, nfsquad_t *, NFSPROC_T *);
98
int nfsrv_getclient(nfsquad_t, int, struct nfsclient **, struct nfsdsession *,
99
nfsquad_t, uint32_t, struct nfsrv_descript *, NFSPROC_T *);
100
int nfsrv_destroyclient(struct nfsrv_descript *, nfsquad_t, NFSPROC_T *);
101
int nfsrv_destroysession(struct nfsrv_descript *, uint8_t *);
102
int nfsrv_bindconnsess(struct nfsrv_descript *, uint8_t *, int *);
103
int nfsrv_freestateid(struct nfsrv_descript *, nfsv4stateid_t *, NFSPROC_T *);
104
int nfsrv_teststateid(struct nfsrv_descript *, nfsv4stateid_t *, NFSPROC_T *);
105
int nfsrv_adminrevoke(struct nfsd_clid *, NFSPROC_T *);
106
void nfsrv_dumpclients(struct nfsd_dumpclients *, int);
107
void nfsrv_dumplocks(vnode_t, struct nfsd_dumplocks *, int, NFSPROC_T *);
108
int nfsrv_lockctrl(vnode_t, struct nfsstate **,
109
struct nfslock **, struct nfslockconflict *, nfsquad_t, nfsv4stateid_t *,
110
struct nfsexstuff *, struct nfsrv_descript *, NFSPROC_T *);
111
int nfsrv_openctrl(struct nfsrv_descript *, vnode_t,
112
struct nfsstate **, nfsquad_t, nfsv4stateid_t *, nfsv4stateid_t *,
113
u_int32_t *, struct nfsexstuff *, NFSPROC_T *, u_quad_t);
114
int nfsrv_opencheck(nfsquad_t, nfsv4stateid_t *, struct nfsstate *,
115
vnode_t, struct nfsrv_descript *, NFSPROC_T *, int);
116
int nfsrv_openupdate(vnode_t, struct nfsstate *, nfsquad_t,
117
nfsv4stateid_t *, struct nfsrv_descript *, NFSPROC_T *, int *);
118
int nfsrv_delegupdate(struct nfsrv_descript *, nfsquad_t, nfsv4stateid_t *,
119
vnode_t, int, struct ucred *, NFSPROC_T *, int *);
120
int nfsrv_releaselckown(struct nfsstate *, nfsquad_t, NFSPROC_T *);
121
void nfsrv_zapclient(struct nfsclient *, NFSPROC_T *);
122
int nfssvc_idname(struct nfsd_idargs *);
123
void nfsrv_servertimer(void * __unused);
124
int nfsrv_getclientipaddr(struct nfsrv_descript *, struct nfsclient *);
125
void nfsrv_setupstable(NFSPROC_T *);
126
void nfsrv_updatestable(NFSPROC_T *);
127
void nfsrv_writestable(u_char *, int, int, NFSPROC_T *);
128
void nfsrv_throwawayopens(NFSPROC_T *);
129
int nfsrv_checkremove(vnode_t, int, struct nfsrv_descript *, nfsquad_t,
130
NFSPROC_T *);
131
void nfsd_recalldelegation(vnode_t, NFSPROC_T *);
132
void nfsd_disabledelegation(vnode_t, NFSPROC_T *);
133
int nfsrv_checksetattr(vnode_t, struct nfsrv_descript *,
134
nfsv4stateid_t *, struct nfsvattr *, nfsattrbit_t *, struct nfsexstuff *,
135
NFSPROC_T *);
136
int nfsrv_checkgetattr(struct nfsrv_descript *, vnode_t,
137
struct nfsvattr *, nfsattrbit_t *, NFSPROC_T *);
138
int nfsrv_nfsuserdport(struct nfsuserd_args *, NFSPROC_T *);
139
void nfsrv_nfsuserddelport(void);
140
void nfsrv_throwawayallstate(NFSPROC_T *);
141
int nfsrv_checksequence(struct nfsrv_descript *, uint32_t, uint32_t *,
142
uint32_t *, int, uint32_t *, NFSPROC_T *);
143
int nfsrv_checkreclaimcomplete(struct nfsrv_descript *, int);
144
void nfsrv_cache_session(struct nfsrv_descript *, struct mbuf **);
145
void nfsrv_freeallbackchannel_xprts(void);
146
int nfsrv_layoutcommit(struct nfsrv_descript *, vnode_t, int, int, uint64_t,
147
uint64_t, uint64_t, int, struct timespec *, int, nfsv4stateid_t *,
148
int, char *, int *, uint64_t *, struct ucred *, NFSPROC_T *);
149
int nfsrv_layoutget(struct nfsrv_descript *, vnode_t, struct nfsexstuff *,
150
int, int *, uint64_t *, uint64_t *, uint64_t, nfsv4stateid_t *, int, int *,
151
int *, char *, struct ucred *, NFSPROC_T *);
152
void nfsrv_flexmirrordel(char *, NFSPROC_T *);
153
void nfsrv_recalloldlayout(NFSPROC_T *);
154
int nfsrv_layoutreturn(struct nfsrv_descript *, vnode_t, int, int, uint64_t,
155
uint64_t, int, int, nfsv4stateid_t *, int, uint32_t *, int *,
156
struct ucred *, NFSPROC_T *);
157
int nfsrv_getdevinfo(char *, int, uint32_t *, uint32_t *, int *, char **);
158
void nfsrv_freeonedevid(struct nfsdevice *);
159
void nfsrv_freealllayoutsanddevids(void);
160
void nfsrv_freefilelayouts(fhandle_t *);
161
int nfsrv_deldsserver(int, char *, NFSPROC_T *);
162
struct nfsdevice *nfsrv_deldsnmp(int, struct nfsmount *, NFSPROC_T *);
163
int nfsrv_delds(char *, NFSPROC_T *);
164
int nfsrv_createdevids(struct nfsd_nfsd_args *, NFSPROC_T *);
165
int nfsrv_checkdsattr(vnode_t, NFSPROC_T *);
166
int nfsrv_copymr(vnode_t, vnode_t, vnode_t, struct nfsdevice *,
167
struct pnfsdsfile *, struct pnfsdsfile *, int, struct ucred *, NFSPROC_T *);
168
int nfsrv_mdscopymr(char *, char *, char *, char *, int *, char *, NFSPROC_T *,
169
struct vnode **, struct vnode **, struct pnfsdsfile **, struct nfsdevice **,
170
struct nfsdevice **);
171
void nfsrv_marknospc(char *, bool);
172
void nfsrv_removedeleg(fhandle_t *, struct nfsrv_descript *, NFSPROC_T *);
173
174
/* nfs_nfsdserv.c */
175
int nfsrvd_access(struct nfsrv_descript *, int,
176
vnode_t, struct nfsexstuff *);
177
int nfsrvd_getattr(struct nfsrv_descript *, int,
178
vnode_t, struct nfsexstuff *);
179
int nfsrvd_setattr(struct nfsrv_descript *, int,
180
vnode_t, struct nfsexstuff *);
181
int nfsrvd_lookup(struct nfsrv_descript *, int,
182
vnode_t, vnode_t *, fhandle_t *, struct nfsexstuff *);
183
int nfsrvd_readlink(struct nfsrv_descript *, int,
184
vnode_t, struct nfsexstuff *);
185
int nfsrvd_read(struct nfsrv_descript *, int,
186
vnode_t, struct nfsexstuff *);
187
int nfsrvd_write(struct nfsrv_descript *, int,
188
vnode_t, struct nfsexstuff *);
189
int nfsrvd_create(struct nfsrv_descript *, int,
190
vnode_t, struct nfsexstuff *);
191
int nfsrvd_mknod(struct nfsrv_descript *, int,
192
vnode_t, vnode_t *, fhandle_t *, struct nfsexstuff *);
193
int nfsrvd_remove(struct nfsrv_descript *, int,
194
vnode_t, struct nfsexstuff *);
195
int nfsrvd_rename(struct nfsrv_descript *, int,
196
vnode_t, vnode_t, struct nfsexstuff *, struct nfsexstuff *);
197
int nfsrvd_link(struct nfsrv_descript *, int,
198
vnode_t, vnode_t, struct nfsexstuff *, struct nfsexstuff *);
199
int nfsrvd_symlink(struct nfsrv_descript *, int,
200
vnode_t, vnode_t *, fhandle_t *, struct nfsexstuff *);
201
int nfsrvd_mkdir(struct nfsrv_descript *, int,
202
vnode_t, vnode_t *, fhandle_t *, struct nfsexstuff *);
203
int nfsrvd_readdir(struct nfsrv_descript *, int,
204
vnode_t, struct nfsexstuff *);
205
int nfsrvd_readdirplus(struct nfsrv_descript *, int,
206
vnode_t, struct nfsexstuff *);
207
int nfsrvd_commit(struct nfsrv_descript *, int,
208
vnode_t, struct nfsexstuff *);
209
int nfsrvd_statfs(struct nfsrv_descript *, int,
210
vnode_t, struct nfsexstuff *);
211
int nfsrvd_fsinfo(struct nfsrv_descript *, int,
212
vnode_t, struct nfsexstuff *);
213
int nfsrvd_close(struct nfsrv_descript *, int,
214
vnode_t, struct nfsexstuff *);
215
int nfsrvd_delegpurge(struct nfsrv_descript *, int,
216
vnode_t, struct nfsexstuff *);
217
int nfsrvd_delegreturn(struct nfsrv_descript *, int,
218
vnode_t, struct nfsexstuff *);
219
int nfsrvd_getfh(struct nfsrv_descript *, int,
220
vnode_t, struct nfsexstuff *);
221
int nfsrvd_lock(struct nfsrv_descript *, int,
222
vnode_t, struct nfsexstuff *);
223
int nfsrvd_lockt(struct nfsrv_descript *, int,
224
vnode_t, struct nfsexstuff *);
225
int nfsrvd_locku(struct nfsrv_descript *, int,
226
vnode_t, struct nfsexstuff *);
227
int nfsrvd_openconfirm(struct nfsrv_descript *, int,
228
vnode_t, struct nfsexstuff *);
229
int nfsrvd_opendowngrade(struct nfsrv_descript *, int,
230
vnode_t, struct nfsexstuff *);
231
int nfsrvd_renew(struct nfsrv_descript *, int,
232
vnode_t, struct nfsexstuff *);
233
int nfsrvd_secinfo(struct nfsrv_descript *, int,
234
vnode_t, struct nfsexstuff *);
235
int nfsrvd_secinfononame(struct nfsrv_descript *, int,
236
vnode_t, struct nfsexstuff *);
237
int nfsrvd_setclientid(struct nfsrv_descript *, int,
238
vnode_t, struct nfsexstuff *);
239
int nfsrvd_setclientidcfrm(struct nfsrv_descript *, int,
240
vnode_t, struct nfsexstuff *);
241
int nfsrvd_verify(struct nfsrv_descript *, int,
242
vnode_t, struct nfsexstuff *);
243
int nfsrvd_open(struct nfsrv_descript *, int,
244
vnode_t, vnode_t *, fhandle_t *, struct nfsexstuff *);
245
int nfsrvd_openattr(struct nfsrv_descript *, int,
246
vnode_t, vnode_t *, fhandle_t *, struct nfsexstuff *);
247
int nfsrvd_releaselckown(struct nfsrv_descript *, int,
248
vnode_t, struct nfsexstuff *);
249
int nfsrvd_pathconf(struct nfsrv_descript *, int,
250
vnode_t, struct nfsexstuff *);
251
int nfsrvd_exchangeid(struct nfsrv_descript *, int,
252
vnode_t, struct nfsexstuff *);
253
int nfsrvd_createsession(struct nfsrv_descript *, int,
254
vnode_t, struct nfsexstuff *);
255
int nfsrvd_sequence(struct nfsrv_descript *, int,
256
vnode_t, struct nfsexstuff *);
257
int nfsrvd_reclaimcomplete(struct nfsrv_descript *, int,
258
vnode_t, struct nfsexstuff *);
259
int nfsrvd_destroyclientid(struct nfsrv_descript *, int,
260
vnode_t, struct nfsexstuff *);
261
int nfsrvd_bindconnsess(struct nfsrv_descript *, int,
262
vnode_t, struct nfsexstuff *);
263
int nfsrvd_destroysession(struct nfsrv_descript *, int,
264
vnode_t, struct nfsexstuff *);
265
int nfsrvd_freestateid(struct nfsrv_descript *, int,
266
vnode_t, struct nfsexstuff *);
267
int nfsrvd_layoutget(struct nfsrv_descript *, int,
268
vnode_t, struct nfsexstuff *);
269
int nfsrvd_getdevinfo(struct nfsrv_descript *, int,
270
vnode_t, struct nfsexstuff *);
271
int nfsrvd_layoutcommit(struct nfsrv_descript *, int,
272
vnode_t, struct nfsexstuff *);
273
int nfsrvd_layoutreturn(struct nfsrv_descript *, int,
274
vnode_t, struct nfsexstuff *);
275
int nfsrvd_ioadvise(struct nfsrv_descript *, int,
276
vnode_t, struct nfsexstuff *);
277
int nfsrvd_layouterror(struct nfsrv_descript *, int,
278
vnode_t, struct nfsexstuff *);
279
int nfsrvd_layoutstats(struct nfsrv_descript *, int,
280
vnode_t, struct nfsexstuff *);
281
int nfsrvd_teststateid(struct nfsrv_descript *, int,
282
vnode_t, struct nfsexstuff *);
283
int nfsrvd_allocate(struct nfsrv_descript *, int,
284
vnode_t, struct nfsexstuff *);
285
int nfsrvd_deallocate(struct nfsrv_descript *, int,
286
vnode_t, struct nfsexstuff *);
287
int nfsrvd_copy_file_range(struct nfsrv_descript *, int,
288
vnode_t, vnode_t, struct nfsexstuff *, struct nfsexstuff *);
289
int nfsrvd_clone(struct nfsrv_descript *, int,
290
vnode_t, vnode_t, struct nfsexstuff *, struct nfsexstuff *);
291
int nfsrvd_seek(struct nfsrv_descript *, int,
292
vnode_t, struct nfsexstuff *);
293
int nfsrvd_getxattr(struct nfsrv_descript *, int,
294
vnode_t, struct nfsexstuff *);
295
int nfsrvd_setxattr(struct nfsrv_descript *, int,
296
vnode_t, struct nfsexstuff *);
297
int nfsrvd_rmxattr(struct nfsrv_descript *, int,
298
vnode_t, struct nfsexstuff *);
299
int nfsrvd_listxattr(struct nfsrv_descript *, int,
300
vnode_t, struct nfsexstuff *);
301
int nfsrvd_notsupp(struct nfsrv_descript *, int,
302
vnode_t, struct nfsexstuff *);
303
304
/* nfs_nfsdsocket.c */
305
void nfsrvd_rephead(struct nfsrv_descript *);
306
void nfsrvd_dorpc(struct nfsrv_descript *, int, u_char *, int, u_int32_t);
307
308
/* nfs_nfsdcache.c */
309
void nfsrvd_initcache(void);
310
int nfsrvd_getcache(struct nfsrv_descript *);
311
struct nfsrvcache *nfsrvd_updatecache(struct nfsrv_descript *);
312
void nfsrvd_sentcache(struct nfsrvcache *, int, uint32_t);
313
void nfsrvd_cleancache(void);
314
void nfsrvd_refcache(struct nfsrvcache *);
315
void nfsrvd_derefcache(struct nfsrvcache *);
316
void nfsrvd_delcache(struct nfsrvcache *);
317
void nfsrc_trimcache(uint64_t, uint32_t, int);
318
319
/* nfs_commonsubs.c */
320
void nfscl_reqstart(struct nfsrv_descript *, int, struct nfsmount *,
321
u_int8_t *, int, u_int32_t **, struct nfsclsession *, int, int,
322
struct ucred *);
323
void nfsm_stateidtom(struct nfsrv_descript *, nfsv4stateid_t *, int);
324
void nfscl_fillsattr(struct nfsrv_descript *, struct vattr *,
325
vnode_t, int, u_int32_t);
326
void newnfs_init(void);
327
int nfsaddr_match(int, union nethostaddr *, NFSSOCKADDR_T);
328
int nfsaddr2_match(NFSSOCKADDR_T, NFSSOCKADDR_T);
329
int nfsm_strtom(struct nfsrv_descript *, const char *, int);
330
int nfsm_mbufuio(struct nfsrv_descript *, struct uio *, int);
331
int nfsm_fhtom(struct nfsmount *, struct nfsrv_descript *, u_int8_t *, int,
332
int);
333
int nfsm_advance(struct nfsrv_descript *, int, int);
334
void *nfsm_dissct(struct nfsrv_descript *, int, int);
335
void newnfs_copycred(struct nfscred *, struct ucred *);
336
void newnfs_copyincred(struct ucred *, struct nfscred *);
337
int nfsrv_dissectacl(struct nfsrv_descript *, NFSACL_T *, bool, bool, int *,
338
int *);
339
int nfsrv_getattrbits(struct nfsrv_descript *, nfsattrbit_t *, int *,
340
int *);
341
int nfsrv_getopbits(struct nfsrv_descript *, nfsopbit_t *, int *);
342
int nfsv4_loadattr(struct nfsrv_descript *, vnode_t,
343
struct nfsvattr *, struct nfsfh **, fhandle_t *, int,
344
struct nfsv3_pathconf *, struct statfs *, struct nfsstatfs *,
345
struct nfsfsinfo *, NFSACL_T *,
346
int, int *, u_int32_t *, u_int32_t *, bool *, uint32_t *, uint32_t *,
347
NFSPROC_T *, struct ucred *);
348
int nfsv4_lock(struct nfsv4lock *, int, int *, struct mtx *, struct mount *);
349
void nfsv4_unlock(struct nfsv4lock *, int);
350
void nfsv4_relref(struct nfsv4lock *);
351
void nfsv4_getref(struct nfsv4lock *, int *, struct mtx *, struct mount *);
352
int nfsv4_getref_nonblock(struct nfsv4lock *);
353
int nfsv4_testlock(struct nfsv4lock *);
354
int nfsrv_mtostr(struct nfsrv_descript *, char *, int);
355
void nfsrv_cleanusergroup(void);
356
int nfsrv_checkutf8(u_int8_t *, int);
357
int newnfs_sndlock(int *);
358
void newnfs_sndunlock(int *);
359
int nfsv4_getipaddr(struct nfsrv_descript *, struct sockaddr_in *,
360
struct sockaddr_in6 *, sa_family_t *, int *);
361
int nfsv4_seqsession(uint32_t, uint32_t, uint32_t, struct nfsslot *,
362
struct mbuf **, uint16_t);
363
void nfsv4_seqsess_cacherep(uint32_t, struct nfsslot *, int, struct mbuf **);
364
int nfsv4_sequencelookup(struct nfsmount *, struct nfsclsession *, int *,
365
int *, uint32_t *, uint8_t *, bool);
366
void nfsv4_freeslot(struct nfsclsession *, int, bool);
367
struct ucred *nfsrv_getgrpscred(struct ucred *);
368
struct nfsdevice *nfsv4_findmirror(struct nfsmount *);
369
void nfsm_set(struct nfsrv_descript *, u_int);
370
struct mbuf *nfsm_add_ext_pgs(struct mbuf *, int, int *);
371
int nfsrpc_destroysession(struct nfsmount *, struct nfsclsession *,
372
struct ucred *, NFSPROC_T *);
373
374
/* nfs_clcomsubs.c */
375
int nfsm_uiombuf(struct nfsrv_descript *, struct uio *, int);
376
struct mbuf *nfsm_uiombuflist(struct uio *, int, u_int);
377
u_int8_t *nfscl_getmyip(struct nfsmount *, struct in6_addr *, int *);
378
int nfsm_getfh(struct nfsrv_descript *, struct nfsfh **);
379
int nfscl_mtofh(struct nfsrv_descript *, struct nfsfh **,
380
struct nfsvattr *, int *);
381
int nfscl_postop_attr(struct nfsrv_descript *, struct nfsvattr *, int *);
382
int nfscl_wcc_data(struct nfsrv_descript *, vnode_t,
383
struct nfsvattr *, int *, int *, uint64_t *);
384
int nfsm_loadattr(struct nfsrv_descript *, struct nfsvattr *);
385
int nfscl_request(struct nfsrv_descript *, vnode_t,
386
NFSPROC_T *, struct ucred *);
387
388
/* nfs_nfsdsubs.c */
389
void nfsd_fhtovp(struct nfsrv_descript *, struct nfsrvfh *, int,
390
vnode_t *, struct nfsexstuff *, mount_t *, int, int);
391
int nfsd_excred(struct nfsrv_descript *, struct nfsexstuff *, struct ucred *,
392
bool);
393
int nfsrv_mtofh(struct nfsrv_descript *, struct nfsrvfh *);
394
int nfsrv_putattrbit(struct nfsrv_descript *, nfsattrbit_t *);
395
int nfsrv_putopbit(struct nfsrv_descript *, nfsopbit_t *);
396
void nfsrv_wcc(struct nfsrv_descript *, int, struct nfsvattr *, int,
397
struct nfsvattr *);
398
int nfsv4_fillattr(struct nfsrv_descript *, struct mount *, vnode_t, NFSACL_T *,
399
struct vattr *, fhandle_t *, int, nfsattrbit_t *, struct ucred *,
400
NFSPROC_T *, int, int, int, int, uint64_t, struct statfs *, bool, bool,
401
bool, uint32_t, fsid_t *, bool);
402
void nfsrv_fillattr(struct nfsrv_descript *, struct nfsvattr *);
403
struct mbuf *nfsrv_adj(struct mbuf *, int, int);
404
void nfsrv_postopattr(struct nfsrv_descript *, int, struct nfsvattr *);
405
int nfsd_errmap(struct nfsrv_descript *);
406
void nfsv4_uidtostr(uid_t, u_char **, int *);
407
int nfsv4_strtouid(struct nfsrv_descript *, u_char *, int, uid_t *);
408
void nfsv4_gidtostr(gid_t, u_char **, int *);
409
int nfsv4_strtogid(struct nfsrv_descript *, u_char *, int, gid_t *);
410
int nfsrv_checkuidgid(struct nfsrv_descript *, struct nfsvattr *);
411
void nfsrv_fixattr(struct nfsrv_descript *, vnode_t,
412
struct nfsvattr *, NFSACL_T *, NFSACL_T *, NFSPROC_T *, nfsattrbit_t *,
413
bool);
414
int nfsrv_errmoved(int);
415
int nfsrv_putreferralattr(struct nfsrv_descript *, nfsattrbit_t *,
416
struct nfsreferral *, int, int *);
417
int nfsrv_parsename(struct nfsrv_descript *, char *, u_long *,
418
NFSPATHLEN_T *);
419
void nfsd_init(void);
420
int nfsd_checkrootexp(struct nfsrv_descript *);
421
void nfsd_getminorvers(struct nfsrv_descript *, u_char *, u_char **, int *,
422
u_int32_t *);
423
424
/* nfs_clvfsops.c */
425
void nfscl_retopts(struct nfsmount *, char *, size_t);
426
427
/* nfs_commonport.c */
428
int nfsrv_lookupfilename(struct nameidata *, char *, NFSPROC_T *);
429
void nfsrv_object_create(vnode_t, NFSPROC_T *);
430
int nfsrv_mallocmget_limit(void);
431
int nfsvno_v4rootexport(struct nfsrv_descript *);
432
void newnfs_portinit(void);
433
struct ucred *newnfs_getcred(void);
434
void newnfs_setroot(struct ucred *);
435
int nfs_catnap(int, int, const char *);
436
struct nfsreferral *nfsv4root_getreferral(vnode_t, vnode_t, u_int32_t);
437
int nfsvno_pathconf(vnode_t, int, long *, struct ucred *, NFSPROC_T *);
438
int nfsrv_atroot(vnode_t, uint64_t *);
439
int nfs_supportsnfsv4acls(vnode_t);
440
int nfs_supportsposixacls(struct vnode *);
441
442
/* nfs_commonacl.c */
443
int nfsrv_dissectace(struct nfsrv_descript *, struct acl_entry *,
444
bool, int *, int *);
445
uint32_t nfs_aceperm(acl_perm_t);
446
int nfsrv_dissectposixace(struct nfsrv_descript *, struct acl_entry *,
447
bool, int *, int *);
448
int nfsrv_buildacl(struct nfsrv_descript *, NFSACL_T *, __enum_uint8(vtype),
449
NFSPROC_T *);
450
int nfsrv_buildposixacl(struct nfsrv_descript *, NFSACL_T *, acl_type_t);
451
int nfsrv_compareacl(NFSACL_T *, NFSACL_T *);
452
453
/* nfs_clrpcops.c */
454
int nfsrpc_null(vnode_t, struct ucred *, NFSPROC_T *);
455
int nfsrpc_access(vnode_t, int, struct ucred *, NFSPROC_T *,
456
struct nfsvattr *, int *);
457
int nfsrpc_accessrpc(vnode_t, u_int32_t, struct ucred *,
458
NFSPROC_T *, struct nfsvattr *, int *, u_int32_t *);
459
int nfsrpc_open(vnode_t, int, struct ucred *, NFSPROC_T *);
460
int nfsrpc_openrpc(struct nfsmount *, vnode_t, u_int8_t *, int, u_int8_t *, int,
461
u_int32_t, struct nfsclopen *, u_int8_t *, int, struct nfscldeleg **, int,
462
u_int32_t, struct ucred *, NFSPROC_T *, int, int);
463
int nfsrpc_opendowngrade(vnode_t, u_int32_t, struct nfsclopen *,
464
struct ucred *, NFSPROC_T *);
465
int nfsrpc_close(vnode_t, int, NFSPROC_T *);
466
int nfsrpc_closerpc(struct nfsrv_descript *, struct nfsmount *,
467
struct nfsclopen *, struct ucred *, NFSPROC_T *, int);
468
int nfsrpc_openconfirm(vnode_t, u_int8_t *, int, struct nfsclopen *,
469
struct ucred *, NFSPROC_T *);
470
int nfsrpc_setclient(struct nfsmount *, struct nfsclclient *, int,
471
bool *, struct ucred *, NFSPROC_T *);
472
int nfsrpc_getattr(vnode_t, struct ucred *, NFSPROC_T *, struct nfsvattr *);
473
int nfsrpc_getattrnovp(struct nfsmount *, u_int8_t *, int, int,
474
struct ucred *, NFSPROC_T *, struct nfsvattr *, u_int64_t *, uint32_t *);
475
int nfsrpc_setattr(vnode_t, struct vattr *, NFSACL_T *, acl_type_t,
476
struct ucred *, NFSPROC_T *, struct nfsvattr *, int *);
477
int nfsrpc_lookup(vnode_t, char *, int, struct ucred *, NFSPROC_T *,
478
struct nfsvattr *, struct nfsvattr *, struct nfsfh **, int *, int *,
479
uint32_t);
480
int nfsrpc_readlink(vnode_t, struct uio *, struct ucred *,
481
NFSPROC_T *, struct nfsvattr *, int *);
482
int nfsrpc_read(vnode_t, struct uio *, struct ucred *, NFSPROC_T *,
483
struct nfsvattr *, int *);
484
int nfsrpc_write(vnode_t, struct uio *, int *, int *,
485
struct ucred *, NFSPROC_T *, struct nfsvattr *, int *, int, int);
486
int nfsrpc_mknod(vnode_t, char *, int, struct vattr *, u_int32_t,
487
__enum_uint8(vtype), struct ucred *, NFSPROC_T *, struct nfsvattr *,
488
struct nfsvattr *, struct nfsfh **, int *, int *);
489
int nfsrpc_create(vnode_t, char *, int, struct vattr *, nfsquad_t,
490
int, struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *,
491
struct nfsfh **, int *, int *);
492
int nfsrpc_remove(struct vnode *, char *, int, struct vnode *,
493
struct nfsvattr *, int *, nfsremove_status *, struct nfsvattr *, int *,
494
struct ucred *, NFSPROC_T *);
495
int nfsrpc_rename(struct vnode *, struct vnode *, char *, int, struct vnode *,
496
struct vnode *, char *, int, nfsremove_status *, struct nfsvattr *,
497
struct nfsvattr *, int *, int *, struct nfsvattr *, int *, struct ucred *,
498
NFSPROC_T *);
499
int nfsrpc_link(vnode_t, vnode_t, char *, int,
500
struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *,
501
int *, int *);
502
int nfsrpc_symlink(vnode_t, char *, int, const char *, struct vattr *,
503
struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *,
504
struct nfsfh **, int *, int *);
505
int nfsrpc_mkdir(vnode_t, char *, int, struct vattr *,
506
struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *,
507
struct nfsfh **, int *, int *);
508
int nfsrpc_rmdir(vnode_t, char *, int, struct ucred *, NFSPROC_T *,
509
struct nfsvattr *, int *);
510
int nfsrpc_readdir(vnode_t, struct uio *, nfsuint64 *, struct ucred *,
511
NFSPROC_T *, struct nfsvattr *, int *, int *);
512
int nfsrpc_readdirplus(vnode_t, struct uio *, nfsuint64 *,
513
struct ucred *, NFSPROC_T *, struct nfsvattr *, int *, int *);
514
int nfsrpc_commit(vnode_t, u_quad_t, int, struct ucred *,
515
NFSPROC_T *, struct nfsvattr *, int *);
516
int nfsrpc_advlock(vnode_t, off_t, int, struct flock *, int,
517
struct ucred *, NFSPROC_T *, void *, int);
518
int nfsrpc_lockt(struct nfsrv_descript *, vnode_t,
519
struct nfsclclient *, u_int64_t, u_int64_t, struct flock *,
520
struct ucred *, NFSPROC_T *, void *, int);
521
int nfsrpc_lock(struct nfsrv_descript *, struct nfsmount *, vnode_t,
522
u_int8_t *, int, struct nfscllockowner *, int, int, u_int64_t,
523
u_int64_t, short, struct ucred *, NFSPROC_T *, int);
524
int nfsrpc_statfs(vnode_t, struct nfsstatfs *, struct nfsfsinfo *, uint32_t *,
525
uint32_t *, struct ucred *, NFSPROC_T *, struct nfsvattr *, int *);
526
int nfsrpc_fsinfo(vnode_t, struct nfsfsinfo *, struct ucred *,
527
NFSPROC_T *, struct nfsvattr *, int *);
528
int nfsrpc_pathconf(vnode_t, struct nfsv3_pathconf *, bool *, uint32_t *,
529
struct ucred *, NFSPROC_T *, struct nfsvattr *, int *, uint32_t *);
530
int nfsrpc_renew(struct nfsclclient *, struct nfsclds *, struct ucred *,
531
NFSPROC_T *);
532
int nfsrpc_rellockown(struct nfsmount *, struct nfscllockowner *, uint8_t *,
533
int, struct ucred *, NFSPROC_T *);
534
int nfsrpc_getdirpath(struct nfsmount *, u_char *, struct ucred *,
535
NFSPROC_T *);
536
int nfsrpc_delegreturn(struct nfscldeleg *, struct ucred *,
537
struct nfsmount *, NFSPROC_T *, int);
538
int nfsrpc_getacl(struct vnode *, acl_type_t, struct ucred *, NFSPROC_T *,
539
NFSACL_T *);
540
int nfsrpc_setacl(struct vnode *, acl_type_t, struct ucred *, NFSPROC_T *,
541
NFSACL_T *);
542
int nfsrpc_exchangeid(struct nfsmount *, struct nfsclclient *,
543
struct nfssockreq *, int, uint32_t, struct nfsclds **, struct ucred *,
544
NFSPROC_T *);
545
int nfsrpc_createsession(struct nfsmount *, struct nfsclsession *,
546
struct nfssockreq *, struct nfsclds *, uint32_t, int, struct ucred *,
547
NFSPROC_T *);
548
int nfsrpc_destroyclient(struct nfsmount *, struct nfsclclient *,
549
struct ucred *, NFSPROC_T *);
550
int nfsrpc_getdeviceinfo(struct nfsmount *, uint8_t *, int, uint32_t *,
551
struct nfscldevinfo **, struct ucred *, NFSPROC_T *);
552
int nfsrpc_layoutcommit(struct nfsmount *, uint8_t *, int, int,
553
uint64_t, uint64_t, uint64_t, nfsv4stateid_t *, int, struct ucred *,
554
NFSPROC_T *);
555
int nfsrpc_layoutreturn(struct nfsmount *, uint8_t *, int, int, int, uint32_t,
556
int, uint64_t, uint64_t, nfsv4stateid_t *, struct ucred *, NFSPROC_T *,
557
uint32_t, uint32_t, char *);
558
int nfsrpc_reclaimcomplete(struct nfsmount *, struct ucred *, NFSPROC_T *);
559
int nfsrpc_advise(vnode_t, off_t, uint64_t, int, struct ucred *, NFSPROC_T *);
560
int nfscl_doiods(vnode_t, struct uio *, int *, int *, uint32_t, int,
561
struct ucred *, NFSPROC_T *);
562
int nfscl_findlayoutforio(struct nfscllayout *, uint64_t, uint32_t,
563
struct nfsclflayout **);
564
void nfscl_freenfsclds(struct nfsclds *);
565
int nfsrpc_allocate(vnode_t, off_t, off_t, struct nfsvattr *, int *,
566
struct ucred *, NFSPROC_T *);
567
int nfsrpc_deallocate(vnode_t, off_t, off_t, struct nfsvattr *, int *,
568
struct ucred *, NFSPROC_T *);
569
int nfsrpc_copy_file_range(vnode_t, off_t *, vnode_t, off_t *, size_t *,
570
unsigned int, int *, struct nfsvattr *, int *, struct nfsvattr *,
571
struct ucred *, bool, bool *);
572
int nfsrpc_clone(vnode_t, off_t *, vnode_t, off_t *, size_t *, bool,
573
int *, struct nfsvattr *, int *, struct nfsvattr *, struct ucred *);
574
int nfsrpc_seek(vnode_t, off_t *, bool *, int, struct ucred *,
575
struct nfsvattr *, int *);
576
int nfsrpc_getextattr(vnode_t, const char *, struct uio *, ssize_t *,
577
struct nfsvattr *, int *, struct ucred *, NFSPROC_T *);
578
int nfsrpc_setextattr(vnode_t, const char *, struct uio *, struct nfsvattr *,
579
int *, struct ucred *, NFSPROC_T *);
580
int nfsrpc_listextattr(vnode_t, uint64_t *, struct uio *, size_t *, bool *,
581
struct nfsvattr *, int *, struct ucred *, NFSPROC_T *);
582
int nfsrpc_rmextattr(vnode_t, const char *, struct nfsvattr *, int *,
583
struct ucred *, NFSPROC_T *);
584
void nfsrpc_bindconnsess(CLIENT *, void *, struct ucred *);
585
int nfsrpc_openattr(struct nfsmount *, struct vnode *, uint8_t *, int,
586
bool, struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsfh **,
587
int *);
588
589
/* nfs_clstate.c */
590
int nfscl_open(vnode_t, u_int8_t *, int, u_int32_t, int,
591
struct ucred *, NFSPROC_T *, struct nfsclowner **, struct nfsclopen **,
592
int *, int *, int, bool);
593
int nfscl_getstateid(vnode_t, u_int8_t *, int, u_int32_t, int, struct ucred *,
594
NFSPROC_T *, nfsv4stateid_t *, void **);
595
void nfscl_ownerrelease(struct nfsmount *, struct nfsclowner *, int, int, int);
596
void nfscl_openrelease(struct nfsmount *, struct nfsclopen *, int, int);
597
int nfscl_getcl(struct mount *, struct ucred *, NFSPROC_T *, bool, bool,
598
struct nfsclclient **);
599
struct nfsclclient *nfscl_findcl(struct nfsmount *);
600
void nfscl_clientrelease(struct nfsclclient *);
601
void nfscl_freelock(struct nfscllock *, int);
602
void nfscl_freelockowner(struct nfscllockowner *, int);
603
int nfscl_getbytelock(vnode_t, u_int64_t, u_int64_t, short,
604
struct ucred *, NFSPROC_T *, struct nfsclclient *, int, void *, int,
605
u_int8_t *, u_int8_t *, struct nfscllockowner **, int *, int *);
606
int nfscl_relbytelock(vnode_t, u_int64_t, u_int64_t,
607
struct ucred *, NFSPROC_T *, int, struct nfsclclient *,
608
void *, int, struct nfscllockowner **, int *);
609
int nfscl_checkwritelocked(vnode_t, struct flock *,
610
struct ucred *, NFSPROC_T *, void *, int);
611
void nfscl_lockrelease(struct nfscllockowner *, int, int);
612
void nfscl_fillclid(u_int64_t, char *, u_int8_t *, u_int16_t);
613
void nfscl_filllockowner(void *, u_int8_t *, int);
614
void nfscl_freeopen(struct nfsclopen *, int, bool);
615
void nfscl_umount(struct nfsmount *, NFSPROC_T *, struct nfscldeleghead *);
616
void nfscl_renewthread(struct nfsclclient *, NFSPROC_T *);
617
void nfscl_initiate_recovery(struct nfsclclient *);
618
int nfscl_hasexpired(struct nfsclclient *, u_int32_t, NFSPROC_T *);
619
void nfscl_dumpstate(struct nfsmount *, int, int, int, int);
620
void nfscl_dupopen(vnode_t, int);
621
int nfscl_getclose(vnode_t, struct nfsclclient **);
622
int nfscl_doclose(vnode_t, struct nfsclclient **, NFSPROC_T *);
623
int nfsrpc_doclose(struct nfsmount *, struct nfsclopen *, NFSPROC_T *, bool,
624
bool);
625
int nfscl_deleg(mount_t, struct nfsclclient *, u_int8_t *, int,
626
struct ucred *, NFSPROC_T *, struct nfscldeleg *);
627
void nfscl_lockinit(struct nfsv4lock *);
628
void nfscl_lockexcl(struct nfsv4lock *, void *);
629
void nfscl_lockunlock(struct nfsv4lock *);
630
void nfscl_lockderef(struct nfsv4lock *);
631
void nfscl_delegreturnvp(struct vnode *, bool, NFSPROC_T *);
632
void nfscl_docb(struct nfsrv_descript *, NFSPROC_T *);
633
void nfscl_releasealllocks(struct nfsclclient *, vnode_t, NFSPROC_T *, void *,
634
int);
635
int nfscl_lockt(vnode_t, struct nfsclclient *, u_int64_t,
636
u_int64_t, struct flock *, NFSPROC_T *, void *, int);
637
int nfscl_mustflush(vnode_t);
638
int nfscl_nodeleg(vnode_t, int);
639
int nfscl_removedeleg(vnode_t, NFSPROC_T *, nfsv4stateid_t *);
640
int nfscl_getref(struct nfsmount *);
641
void nfscl_relref(struct nfsmount *);
642
int nfscl_renamedeleg(vnode_t, nfsv4stateid_t *, int *, vnode_t,
643
nfsv4stateid_t *, int *, NFSPROC_T *);
644
void nfscl_reclaimnode(vnode_t);
645
void nfscl_newnode(vnode_t);
646
void nfscl_delegmodtime(struct vnode *, struct timespec *);
647
void nfscl_deleggetmodtime(vnode_t, struct timespec *);
648
int nfscl_trydelegreturn(struct nfscldeleg *, struct ucred *,
649
struct nfsmount *, NFSPROC_T *);
650
int nfscl_tryclose(struct nfsclopen *, struct ucred *,
651
struct nfsmount *, NFSPROC_T *, bool);
652
void nfscl_cleanup(NFSPROC_T *);
653
int nfscl_layout(struct nfsmount *, vnode_t, u_int8_t *, int, nfsv4stateid_t *,
654
int, int, struct nfsclflayouthead *, struct nfscllayout **, struct ucred *,
655
NFSPROC_T *);
656
struct nfscllayout *nfscl_getlayout(struct nfsclclient *, uint8_t *, int,
657
uint64_t, uint32_t, struct nfsclflayout **, int *);
658
void nfscl_dserr(uint32_t, uint32_t, struct nfscldevinfo *,
659
struct nfscllayout *, struct nfsclds *);
660
void nfscl_cancelreqs(struct nfsclds *);
661
void nfscl_rellayout(struct nfscllayout *, int);
662
struct nfscldevinfo *nfscl_getdevinfo(struct nfsclclient *, uint8_t *,
663
struct nfscldevinfo *);
664
void nfscl_reldevinfo(struct nfscldevinfo *);
665
int nfscl_adddevinfo(struct nfsmount *, struct nfscldevinfo *, int,
666
struct nfsclflayout *);
667
void nfscl_freelayout(struct nfscllayout *);
668
void nfscl_freeflayout(struct nfsclflayout *);
669
void nfscl_freedevinfo(struct nfscldevinfo *);
670
int nfscl_layoutcommit(vnode_t, NFSPROC_T *);
671
int nfscl_delegacecheck(struct vnode *, accmode_t, struct ucred *);
672
void nfscl_startdelegrecall(struct nfsclclient *, struct nfsfh *);
673
674
/* nfs_clport.c */
675
int nfscl_nget(mount_t, vnode_t, struct nfsfh *,
676
struct componentname *, NFSPROC_T *, struct nfsnode **, int);
677
NFSPROC_T *nfscl_getparent(NFSPROC_T *);
678
void nfscl_start_renewthread(struct nfsclclient *);
679
void nfscl_loadsbinfo(struct nfsmount *, struct nfsstatfs *, void *);
680
void nfscl_loadfsinfo(struct nfsmount *, struct nfsfsinfo *, uint32_t);
681
void nfscl_delegreturn(struct nfscldeleg *, int, struct nfsmount *,
682
struct ucred *, NFSPROC_T *);
683
void nfsrvd_cbinit(int);
684
int nfscl_checksattr(struct vattr *, struct nfsvattr *);
685
int nfscl_ngetreopen(mount_t, u_int8_t *, int, NFSPROC_T *,
686
struct nfsnode **);
687
int nfscl_procdoesntexist(u_int8_t *);
688
int nfscl_maperr(NFSPROC_T *, int, uid_t, gid_t);
689
690
/* nfs_clsubs.c */
691
void nfscl_init(void);
692
693
/* nfs_clbio.c */
694
int ncl_flush(vnode_t, int, NFSPROC_T *, int, int);
695
696
/* nfs_clnode.c */
697
void ncl_invalcaches(vnode_t);
698
699
/* nfs_nfsdport.c */
700
int nfsvno_getattr(vnode_t, struct nfsvattr *, struct nfsrv_descript *,
701
NFSPROC_T *, int, nfsattrbit_t *);
702
int nfsvno_setattr(vnode_t, struct nfsvattr *, struct ucred *,
703
NFSPROC_T *, struct nfsexstuff *);
704
int nfsvno_getfh(vnode_t, fhandle_t *, NFSPROC_T *);
705
int nfsvno_accchk(vnode_t, accmode_t, struct ucred *,
706
struct nfsexstuff *, NFSPROC_T *, int, int, u_int32_t *);
707
int nfsvno_namei(struct nfsrv_descript *, struct nameidata *,
708
vnode_t, int, struct nfsexstuff *, vnode_t *);
709
void nfsvno_setpathbuf(struct nameidata *, char **, u_long **);
710
void nfsvno_relpathbuf(struct nameidata *);
711
int nfsvno_readlink(vnode_t, struct ucred *, int, NFSPROC_T *, struct mbuf **,
712
struct mbuf **, int *);
713
int nfsvno_read(vnode_t, off_t, int, struct ucred *, int, NFSPROC_T *,
714
struct mbuf **, struct mbuf **);
715
int nfsvno_write(vnode_t, off_t, int, int *, struct mbuf *, char *,
716
struct ucred *, NFSPROC_T *);
717
int nfsvno_createsub(struct nfsrv_descript *, struct nameidata *,
718
vnode_t *, struct nfsvattr *, int *, int32_t *, NFSDEV_T,
719
struct nfsexstuff *);
720
int nfsvno_mknod(struct nameidata *, struct nfsvattr *, struct ucred *,
721
NFSPROC_T *);
722
int nfsvno_mkdir(struct nameidata *,
723
struct nfsvattr *, uid_t, struct ucred *, NFSPROC_T *,
724
struct nfsexstuff *);
725
int nfsvno_symlink(struct nameidata *, struct nfsvattr *, char *, int, int,
726
uid_t, struct ucred *, NFSPROC_T *, struct nfsexstuff *);
727
int nfsvno_getsymlink(struct nfsrv_descript *, struct nfsvattr *,
728
NFSPROC_T *, char **, int *);
729
int nfsvno_removesub(struct nameidata *, bool, struct nfsrv_descript *,
730
NFSPROC_T *, struct nfsexstuff *);
731
int nfsvno_rmdirsub(struct nameidata *, int, struct ucred *, NFSPROC_T *,
732
struct nfsexstuff *);
733
int nfsvno_rename(struct nameidata *, struct nameidata *,
734
struct nfsrv_descript *, NFSPROC_T *);
735
int nfsvno_link(struct nameidata *, vnode_t, nfsquad_t, struct ucred *,
736
NFSPROC_T *, struct nfsexstuff *);
737
int nfsvno_fsync(vnode_t, u_int64_t, int, struct ucred *, NFSPROC_T *);
738
int nfsvno_statfs(vnode_t, struct statfs *);
739
void nfsvno_getfs(struct nfsfsinfo *, int);
740
void nfsvno_open(struct nfsrv_descript *, struct nameidata *, nfsquad_t,
741
nfsv4stateid_t *, struct nfsstate *, int *, struct nfsvattr *, int32_t *,
742
int, NFSACL_T *, NFSACL_T *, nfsattrbit_t *, struct ucred *, bool,
743
struct nfsexstuff *, vnode_t *);
744
int nfsvno_updfilerev(vnode_t, struct nfsvattr *, struct nfsrv_descript *,
745
NFSPROC_T *);
746
int nfsvno_fillattr(struct nfsrv_descript *, struct mount *, vnode_t,
747
struct nfsvattr *, fhandle_t *, int, nfsattrbit_t *,
748
struct ucred *, NFSPROC_T *, int, int, int, int, uint64_t, bool, bool,
749
bool, uint32_t, bool);
750
int nfsrv_sattr(struct nfsrv_descript *, vnode_t, struct nfsvattr *,
751
nfsattrbit_t *, NFSACL_T *, NFSACL_T *, NFSPROC_T *);
752
int nfsv4_sattr(struct nfsrv_descript *, vnode_t, struct nfsvattr *,
753
nfsattrbit_t *, NFSACL_T *, NFSACL_T *, NFSPROC_T *);
754
int nfsvno_checkexp(mount_t, NFSSOCKADDR_T, struct nfsexstuff *,
755
struct ucred **);
756
int nfsvno_fhtovp(mount_t, fhandle_t *, NFSSOCKADDR_T, int,
757
vnode_t *, struct nfsexstuff *, struct ucred **);
758
vnode_t nfsvno_getvp(fhandle_t *);
759
int nfsvno_advlock(vnode_t, int, u_int64_t, u_int64_t, NFSPROC_T *);
760
int nfsrv_v4rootexport(void *, struct ucred *, NFSPROC_T *);
761
int nfsvno_testexp(struct nfsrv_descript *, struct nfsexstuff *);
762
uint32_t nfsrv_hashfh(fhandle_t *);
763
uint32_t nfsrv_hashsessionid(uint8_t *);
764
void nfsrv_backupstable(void);
765
int nfsrv_dsgetdevandfh(struct vnode *, NFSPROC_T *, int *, fhandle_t *,
766
char *);
767
int nfsrv_dsgetsockmnt(struct vnode *, int, char *, int *, int *,
768
NFSPROC_T *, struct vnode **, fhandle_t *, char *, char *,
769
struct vnode **, struct nfsmount **, struct nfsmount *, int *, int *);
770
int nfsrv_dscreate(struct vnode *, struct vattr *, struct vattr *,
771
fhandle_t *, struct pnfsdsfile *, struct pnfsdsattr *, char *,
772
struct ucred *, NFSPROC_T *, struct vnode **);
773
int nfsrv_updatemdsattr(struct vnode *, struct nfsvattr *, NFSPROC_T *);
774
void nfsrv_killrpcs(struct nfsmount *);
775
int nfsrv_setacl(struct vnode *,
776
NFSACL_T *, acl_type_t, struct ucred *, NFSPROC_T *);
777
int nfsvno_seek(struct nfsrv_descript *, struct vnode *, u_long, off_t *, int,
778
bool *, struct ucred *, NFSPROC_T *);
779
int nfsvno_allocate(struct vnode *, off_t, off_t, struct ucred *, NFSPROC_T *);
780
int nfsvno_deallocate(struct vnode *, off_t, off_t, struct ucred *,
781
NFSPROC_T *);
782
int nfsvno_getxattr(struct vnode *, char *, uint32_t, struct ucred *,
783
uint64_t, int, struct thread *, struct mbuf **, struct mbuf **, int *);
784
int nfsvno_setxattr(struct vnode *, char *, int, struct mbuf *, char *,
785
struct ucred *, struct thread *);
786
int nfsvno_rmxattr(struct nfsrv_descript *, struct vnode *, char *,
787
struct ucred *, struct thread *);
788
int nfsvno_listxattr(struct vnode *, uint64_t, struct ucred *, struct thread *,
789
u_char **, uint32_t *, bool *);
790
void nfsm_trimtrailing(struct nfsrv_descript *, struct mbuf *, char *, int,
791
int);
792
bool nfsrv_checkwrongsec(struct nfsrv_descript *, int, __enum_uint8(vtype));
793
void nfsrv_checknospc(void);
794
int nfs_supportsacls(struct vnode *);
795
796
/* nfs_commonkrpc.c */
797
int newnfs_nmcancelreqs(struct nfsmount *);
798
void newnfs_set_sigmask(struct thread *, sigset_t *);
799
void newnfs_restore_sigmask(struct thread *, sigset_t *);
800
int newnfs_msleep(struct thread *, void *, struct mtx *, int, char *, int);
801
int newnfs_request(struct nfsrv_descript *, struct nfsmount *,
802
struct nfsclient *, struct nfssockreq *, vnode_t, NFSPROC_T *,
803
struct ucred *, u_int32_t, u_int32_t, u_char *, int, u_int64_t *,
804
struct nfsclsession *);
805
void nfs_resetslots(struct nfsclsession *);
806
int newnfs_connect(struct nfsmount *, struct nfssockreq *,
807
struct ucred *, NFSPROC_T *, int, bool, struct __rpc_client **);
808
void newnfs_disconnect(struct nfsmount *, struct nfssockreq *);
809
int newnfs_sigintr(struct nfsmount *, NFSPROC_T *);
810
811
/* nfs_nfsdkrpc.c */
812
int nfsrvd_addsock(struct file *);
813
int nfsrvd_nfsd(NFSPROC_T *, struct nfsd_nfsd_args *);
814
void nfsrvd_init(int);
815
816
/* nfs_clkrpc.c */
817
int nfscbd_addsock(struct file *);
818
int nfscbd_nfsd(NFSPROC_T *, struct nfsd_nfscbd_args *);
819
820