Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/fs/nfs/nfs_var.h
39483 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, int *,
338
int *, NFSPROC_T *);
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 *, NFSPROC_T *,
347
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
void nfsv4_setsequence(struct nfsmount *, struct nfsrv_descript *,
365
struct nfsclsession *, int, struct ucred *);
366
int nfsv4_sequencelookup(struct nfsmount *, struct nfsclsession *, int *,
367
int *, uint32_t *, uint8_t *, bool);
368
void nfsv4_freeslot(struct nfsclsession *, int, bool);
369
struct ucred *nfsrv_getgrpscred(struct ucred *);
370
struct nfsdevice *nfsv4_findmirror(struct nfsmount *);
371
void nfsm_set(struct nfsrv_descript *, u_int);
372
struct mbuf *nfsm_add_ext_pgs(struct mbuf *, int, int *);
373
int nfsrpc_destroysession(struct nfsmount *, struct nfsclsession *,
374
struct ucred *, NFSPROC_T *);
375
376
/* nfs_clcomsubs.c */
377
int nfsm_uiombuf(struct nfsrv_descript *, struct uio *, int);
378
struct mbuf *nfsm_uiombuflist(struct uio *, int, u_int);
379
u_int8_t *nfscl_getmyip(struct nfsmount *, struct in6_addr *, int *);
380
int nfsm_getfh(struct nfsrv_descript *, struct nfsfh **);
381
int nfscl_mtofh(struct nfsrv_descript *, struct nfsfh **,
382
struct nfsvattr *, int *);
383
int nfscl_postop_attr(struct nfsrv_descript *, struct nfsvattr *, int *);
384
int nfscl_wcc_data(struct nfsrv_descript *, vnode_t,
385
struct nfsvattr *, int *, int *, uint64_t *);
386
int nfsm_loadattr(struct nfsrv_descript *, struct nfsvattr *);
387
int nfscl_request(struct nfsrv_descript *, vnode_t,
388
NFSPROC_T *, struct ucred *);
389
390
/* nfs_nfsdsubs.c */
391
void nfsd_fhtovp(struct nfsrv_descript *, struct nfsrvfh *, int,
392
vnode_t *, struct nfsexstuff *, mount_t *, int, int);
393
int nfsd_excred(struct nfsrv_descript *, struct nfsexstuff *, struct ucred *,
394
bool);
395
int nfsrv_mtofh(struct nfsrv_descript *, struct nfsrvfh *);
396
int nfsrv_putattrbit(struct nfsrv_descript *, nfsattrbit_t *);
397
int nfsrv_putopbit(struct nfsrv_descript *, nfsopbit_t *);
398
void nfsrv_wcc(struct nfsrv_descript *, int, struct nfsvattr *, int,
399
struct nfsvattr *);
400
int nfsv4_fillattr(struct nfsrv_descript *, struct mount *, vnode_t, NFSACL_T *,
401
struct vattr *, fhandle_t *, int, nfsattrbit_t *, struct ucred *,
402
NFSPROC_T *, int, int, int, int, uint64_t, struct statfs *, bool, bool,
403
bool, uint32_t);
404
void nfsrv_fillattr(struct nfsrv_descript *, struct nfsvattr *);
405
struct mbuf *nfsrv_adj(struct mbuf *, int, int);
406
void nfsrv_postopattr(struct nfsrv_descript *, int, struct nfsvattr *);
407
int nfsd_errmap(struct nfsrv_descript *);
408
void nfsv4_uidtostr(uid_t, u_char **, int *);
409
int nfsv4_strtouid(struct nfsrv_descript *, u_char *, int, uid_t *);
410
void nfsv4_gidtostr(gid_t, u_char **, int *);
411
int nfsv4_strtogid(struct nfsrv_descript *, u_char *, int, gid_t *);
412
int nfsrv_checkuidgid(struct nfsrv_descript *, struct nfsvattr *);
413
void nfsrv_fixattr(struct nfsrv_descript *, vnode_t,
414
struct nfsvattr *, NFSACL_T *, NFSPROC_T *, nfsattrbit_t *,
415
struct nfsexstuff *);
416
int nfsrv_errmoved(int);
417
int nfsrv_putreferralattr(struct nfsrv_descript *, nfsattrbit_t *,
418
struct nfsreferral *, int, int *);
419
int nfsrv_parsename(struct nfsrv_descript *, char *, u_long *,
420
NFSPATHLEN_T *);
421
void nfsd_init(void);
422
int nfsd_checkrootexp(struct nfsrv_descript *);
423
void nfsd_getminorvers(struct nfsrv_descript *, u_char *, u_char **, int *,
424
u_int32_t *);
425
426
/* nfs_clvfsops.c */
427
void nfscl_retopts(struct nfsmount *, char *, size_t);
428
429
/* nfs_commonport.c */
430
int nfsrv_lookupfilename(struct nameidata *, char *, NFSPROC_T *);
431
void nfsrv_object_create(vnode_t, NFSPROC_T *);
432
int nfsrv_mallocmget_limit(void);
433
int nfsvno_v4rootexport(struct nfsrv_descript *);
434
void newnfs_portinit(void);
435
struct ucred *newnfs_getcred(void);
436
void newnfs_setroot(struct ucred *);
437
int nfs_catnap(int, int, const char *);
438
struct nfsreferral *nfsv4root_getreferral(vnode_t, vnode_t, u_int32_t);
439
int nfsvno_pathconf(vnode_t, int, long *, struct ucred *, NFSPROC_T *);
440
int nfsrv_atroot(vnode_t, uint64_t *);
441
int nfs_supportsnfsv4acls(vnode_t);
442
443
/* nfs_commonacl.c */
444
int nfsrv_dissectace(struct nfsrv_descript *, struct acl_entry *,
445
bool, int *, int *, NFSPROC_T *);
446
uint32_t nfs_aceperm(acl_perm_t);
447
int nfsrv_buildacl(struct nfsrv_descript *, NFSACL_T *, __enum_uint8(vtype),
448
NFSPROC_T *);
449
int nfsrv_compareacl(NFSACL_T *, NFSACL_T *);
450
451
/* nfs_clrpcops.c */
452
int nfsrpc_null(vnode_t, struct ucred *, NFSPROC_T *);
453
int nfsrpc_access(vnode_t, int, struct ucred *, NFSPROC_T *,
454
struct nfsvattr *, int *);
455
int nfsrpc_accessrpc(vnode_t, u_int32_t, struct ucred *,
456
NFSPROC_T *, struct nfsvattr *, int *, u_int32_t *);
457
int nfsrpc_open(vnode_t, int, struct ucred *, NFSPROC_T *);
458
int nfsrpc_openrpc(struct nfsmount *, vnode_t, u_int8_t *, int, u_int8_t *, int,
459
u_int32_t, struct nfsclopen *, u_int8_t *, int, struct nfscldeleg **, int,
460
u_int32_t, struct ucred *, NFSPROC_T *, int, int);
461
int nfsrpc_opendowngrade(vnode_t, u_int32_t, struct nfsclopen *,
462
struct ucred *, NFSPROC_T *);
463
int nfsrpc_close(vnode_t, int, NFSPROC_T *);
464
int nfsrpc_closerpc(struct nfsrv_descript *, struct nfsmount *,
465
struct nfsclopen *, struct ucred *, NFSPROC_T *, int);
466
int nfsrpc_openconfirm(vnode_t, u_int8_t *, int, struct nfsclopen *,
467
struct ucred *, NFSPROC_T *);
468
int nfsrpc_setclient(struct nfsmount *, struct nfsclclient *, int,
469
bool *, struct ucred *, NFSPROC_T *);
470
int nfsrpc_getattr(vnode_t, struct ucred *, NFSPROC_T *, struct nfsvattr *);
471
int nfsrpc_getattrnovp(struct nfsmount *, u_int8_t *, int, int,
472
struct ucred *, NFSPROC_T *, struct nfsvattr *, u_int64_t *, uint32_t *);
473
int nfsrpc_setattr(vnode_t, struct vattr *, NFSACL_T *, struct ucred *,
474
NFSPROC_T *, struct nfsvattr *, int *);
475
int nfsrpc_lookup(vnode_t, char *, int, struct ucred *, NFSPROC_T *,
476
struct nfsvattr *, struct nfsvattr *, struct nfsfh **, int *, int *,
477
uint32_t);
478
int nfsrpc_readlink(vnode_t, struct uio *, struct ucred *,
479
NFSPROC_T *, struct nfsvattr *, int *);
480
int nfsrpc_read(vnode_t, struct uio *, struct ucred *, NFSPROC_T *,
481
struct nfsvattr *, int *);
482
int nfsrpc_write(vnode_t, struct uio *, int *, int *,
483
struct ucred *, NFSPROC_T *, struct nfsvattr *, int *, int, int);
484
int nfsrpc_mknod(vnode_t, char *, int, struct vattr *, u_int32_t,
485
__enum_uint8(vtype), struct ucred *, NFSPROC_T *, struct nfsvattr *,
486
struct nfsvattr *, struct nfsfh **, int *, int *);
487
int nfsrpc_create(vnode_t, char *, int, struct vattr *, nfsquad_t,
488
int, struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *,
489
struct nfsfh **, int *, int *);
490
int nfsrpc_remove(struct vnode *, char *, int, struct vnode *,
491
struct nfsvattr *, int *, nfsremove_status *, struct nfsvattr *, int *,
492
struct ucred *, NFSPROC_T *);
493
int nfsrpc_rename(struct vnode *, struct vnode *, char *, int, struct vnode *,
494
struct vnode *, char *, int, nfsremove_status *, struct nfsvattr *,
495
struct nfsvattr *, int *, int *, struct nfsvattr *, int *, struct ucred *,
496
NFSPROC_T *);
497
int nfsrpc_link(vnode_t, vnode_t, char *, int,
498
struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *,
499
int *, int *);
500
int nfsrpc_symlink(vnode_t, char *, int, const char *, struct vattr *,
501
struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *,
502
struct nfsfh **, int *, int *);
503
int nfsrpc_mkdir(vnode_t, char *, int, struct vattr *,
504
struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsvattr *,
505
struct nfsfh **, int *, int *);
506
int nfsrpc_rmdir(vnode_t, char *, int, struct ucred *, NFSPROC_T *,
507
struct nfsvattr *, int *);
508
int nfsrpc_readdir(vnode_t, struct uio *, nfsuint64 *, struct ucred *,
509
NFSPROC_T *, struct nfsvattr *, int *, int *);
510
int nfsrpc_readdirplus(vnode_t, struct uio *, nfsuint64 *,
511
struct ucred *, NFSPROC_T *, struct nfsvattr *, int *, int *);
512
int nfsrpc_commit(vnode_t, u_quad_t, int, struct ucred *,
513
NFSPROC_T *, struct nfsvattr *, int *);
514
int nfsrpc_advlock(vnode_t, off_t, int, struct flock *, int,
515
struct ucred *, NFSPROC_T *, void *, int);
516
int nfsrpc_lockt(struct nfsrv_descript *, vnode_t,
517
struct nfsclclient *, u_int64_t, u_int64_t, struct flock *,
518
struct ucred *, NFSPROC_T *, void *, int);
519
int nfsrpc_lock(struct nfsrv_descript *, struct nfsmount *, vnode_t,
520
u_int8_t *, int, struct nfscllockowner *, int, int, u_int64_t,
521
u_int64_t, short, struct ucred *, NFSPROC_T *, int);
522
int nfsrpc_statfs(vnode_t, struct nfsstatfs *, struct nfsfsinfo *, uint32_t *,
523
uint32_t *, struct ucred *, NFSPROC_T *, struct nfsvattr *, int *);
524
int nfsrpc_fsinfo(vnode_t, struct nfsfsinfo *, struct ucred *,
525
NFSPROC_T *, struct nfsvattr *, int *);
526
int nfsrpc_pathconf(vnode_t, struct nfsv3_pathconf *, bool *, uint32_t *,
527
struct ucred *, NFSPROC_T *, struct nfsvattr *, int *);
528
int nfsrpc_renew(struct nfsclclient *, struct nfsclds *, struct ucred *,
529
NFSPROC_T *);
530
int nfsrpc_rellockown(struct nfsmount *, struct nfscllockowner *, uint8_t *,
531
int, struct ucred *, NFSPROC_T *);
532
int nfsrpc_getdirpath(struct nfsmount *, u_char *, struct ucred *,
533
NFSPROC_T *);
534
int nfsrpc_delegreturn(struct nfscldeleg *, struct ucred *,
535
struct nfsmount *, NFSPROC_T *, int);
536
int nfsrpc_getacl(vnode_t, struct ucred *, NFSPROC_T *, NFSACL_T *);
537
int nfsrpc_setacl(vnode_t, struct ucred *, NFSPROC_T *, NFSACL_T *);
538
int nfsrpc_exchangeid(struct nfsmount *, struct nfsclclient *,
539
struct nfssockreq *, int, uint32_t, struct nfsclds **, struct ucred *,
540
NFSPROC_T *);
541
int nfsrpc_createsession(struct nfsmount *, struct nfsclsession *,
542
struct nfssockreq *, struct nfsclds *, uint32_t, int, struct ucred *,
543
NFSPROC_T *);
544
int nfsrpc_destroyclient(struct nfsmount *, struct nfsclclient *,
545
struct ucred *, NFSPROC_T *);
546
int nfsrpc_getdeviceinfo(struct nfsmount *, uint8_t *, int, uint32_t *,
547
struct nfscldevinfo **, struct ucred *, NFSPROC_T *);
548
int nfsrpc_layoutcommit(struct nfsmount *, uint8_t *, int, int,
549
uint64_t, uint64_t, uint64_t, nfsv4stateid_t *, int, struct ucred *,
550
NFSPROC_T *);
551
int nfsrpc_layoutreturn(struct nfsmount *, uint8_t *, int, int, int, uint32_t,
552
int, uint64_t, uint64_t, nfsv4stateid_t *, struct ucred *, NFSPROC_T *,
553
uint32_t, uint32_t, char *);
554
int nfsrpc_reclaimcomplete(struct nfsmount *, struct ucred *, NFSPROC_T *);
555
int nfsrpc_advise(vnode_t, off_t, uint64_t, int, struct ucred *, NFSPROC_T *);
556
int nfscl_doiods(vnode_t, struct uio *, int *, int *, uint32_t, int,
557
struct ucred *, NFSPROC_T *);
558
int nfscl_findlayoutforio(struct nfscllayout *, uint64_t, uint32_t,
559
struct nfsclflayout **);
560
void nfscl_freenfsclds(struct nfsclds *);
561
int nfsrpc_allocate(vnode_t, off_t, off_t, struct nfsvattr *, int *,
562
struct ucred *, NFSPROC_T *);
563
int nfsrpc_deallocate(vnode_t, off_t, off_t, struct nfsvattr *, int *,
564
struct ucred *, NFSPROC_T *);
565
int nfsrpc_copy_file_range(vnode_t, off_t *, vnode_t, off_t *, size_t *,
566
unsigned int, int *, struct nfsvattr *, int *, struct nfsvattr *,
567
struct ucred *, bool, bool *);
568
int nfsrpc_clone(vnode_t, off_t *, vnode_t, off_t *, size_t *, bool,
569
int *, struct nfsvattr *, int *, struct nfsvattr *, struct ucred *);
570
int nfsrpc_seek(vnode_t, off_t *, bool *, int, struct ucred *,
571
struct nfsvattr *, int *);
572
int nfsrpc_getextattr(vnode_t, const char *, struct uio *, ssize_t *,
573
struct nfsvattr *, int *, struct ucred *, NFSPROC_T *);
574
int nfsrpc_setextattr(vnode_t, const char *, struct uio *, struct nfsvattr *,
575
int *, struct ucred *, NFSPROC_T *);
576
int nfsrpc_listextattr(vnode_t, uint64_t *, struct uio *, size_t *, bool *,
577
struct nfsvattr *, int *, struct ucred *, NFSPROC_T *);
578
int nfsrpc_rmextattr(vnode_t, const char *, struct nfsvattr *, int *,
579
struct ucred *, NFSPROC_T *);
580
void nfsrpc_bindconnsess(CLIENT *, void *, struct ucred *);
581
int nfsrpc_openattr(struct nfsmount *, struct vnode *, uint8_t *, int,
582
bool, struct ucred *, NFSPROC_T *, struct nfsvattr *, struct nfsfh **,
583
int *);
584
585
/* nfs_clstate.c */
586
int nfscl_open(vnode_t, u_int8_t *, int, u_int32_t, int,
587
struct ucred *, NFSPROC_T *, struct nfsclowner **, struct nfsclopen **,
588
int *, int *, int, bool);
589
int nfscl_getstateid(vnode_t, u_int8_t *, int, u_int32_t, int, struct ucred *,
590
NFSPROC_T *, nfsv4stateid_t *, void **);
591
void nfscl_ownerrelease(struct nfsmount *, struct nfsclowner *, int, int, int);
592
void nfscl_openrelease(struct nfsmount *, struct nfsclopen *, int, int);
593
int nfscl_getcl(struct mount *, struct ucred *, NFSPROC_T *, bool, bool,
594
struct nfsclclient **);
595
struct nfsclclient *nfscl_findcl(struct nfsmount *);
596
void nfscl_clientrelease(struct nfsclclient *);
597
void nfscl_freelock(struct nfscllock *, int);
598
void nfscl_freelockowner(struct nfscllockowner *, int);
599
int nfscl_getbytelock(vnode_t, u_int64_t, u_int64_t, short,
600
struct ucred *, NFSPROC_T *, struct nfsclclient *, int, void *, int,
601
u_int8_t *, u_int8_t *, struct nfscllockowner **, int *, int *);
602
int nfscl_relbytelock(vnode_t, u_int64_t, u_int64_t,
603
struct ucred *, NFSPROC_T *, int, struct nfsclclient *,
604
void *, int, struct nfscllockowner **, int *);
605
int nfscl_checkwritelocked(vnode_t, struct flock *,
606
struct ucred *, NFSPROC_T *, void *, int);
607
void nfscl_lockrelease(struct nfscllockowner *, int, int);
608
void nfscl_fillclid(u_int64_t, char *, u_int8_t *, u_int16_t);
609
void nfscl_filllockowner(void *, u_int8_t *, int);
610
void nfscl_freeopen(struct nfsclopen *, int, bool);
611
void nfscl_umount(struct nfsmount *, NFSPROC_T *, struct nfscldeleghead *);
612
void nfscl_renewthread(struct nfsclclient *, NFSPROC_T *);
613
void nfscl_initiate_recovery(struct nfsclclient *);
614
int nfscl_hasexpired(struct nfsclclient *, u_int32_t, NFSPROC_T *);
615
void nfscl_dumpstate(struct nfsmount *, int, int, int, int);
616
void nfscl_dupopen(vnode_t, int);
617
int nfscl_getclose(vnode_t, struct nfsclclient **);
618
int nfscl_doclose(vnode_t, struct nfsclclient **, NFSPROC_T *);
619
int nfsrpc_doclose(struct nfsmount *, struct nfsclopen *, NFSPROC_T *, bool,
620
bool);
621
int nfscl_deleg(mount_t, struct nfsclclient *, u_int8_t *, int,
622
struct ucred *, NFSPROC_T *, struct nfscldeleg *);
623
void nfscl_lockinit(struct nfsv4lock *);
624
void nfscl_lockexcl(struct nfsv4lock *, void *);
625
void nfscl_lockunlock(struct nfsv4lock *);
626
void nfscl_lockderef(struct nfsv4lock *);
627
void nfscl_delegreturnvp(struct vnode *, bool, NFSPROC_T *);
628
void nfscl_docb(struct nfsrv_descript *, NFSPROC_T *);
629
void nfscl_releasealllocks(struct nfsclclient *, vnode_t, NFSPROC_T *, void *,
630
int);
631
int nfscl_lockt(vnode_t, struct nfsclclient *, u_int64_t,
632
u_int64_t, struct flock *, NFSPROC_T *, void *, int);
633
int nfscl_mustflush(vnode_t);
634
int nfscl_nodeleg(vnode_t, int);
635
int nfscl_removedeleg(vnode_t, NFSPROC_T *, nfsv4stateid_t *);
636
int nfscl_getref(struct nfsmount *);
637
void nfscl_relref(struct nfsmount *);
638
int nfscl_renamedeleg(vnode_t, nfsv4stateid_t *, int *, vnode_t,
639
nfsv4stateid_t *, int *, NFSPROC_T *);
640
void nfscl_reclaimnode(vnode_t);
641
void nfscl_newnode(vnode_t);
642
void nfscl_delegmodtime(struct vnode *, struct timespec *);
643
void nfscl_deleggetmodtime(vnode_t, struct timespec *);
644
int nfscl_trydelegreturn(struct nfscldeleg *, struct ucred *,
645
struct nfsmount *, NFSPROC_T *);
646
int nfscl_tryclose(struct nfsclopen *, struct ucred *,
647
struct nfsmount *, NFSPROC_T *, bool);
648
void nfscl_cleanup(NFSPROC_T *);
649
int nfscl_layout(struct nfsmount *, vnode_t, u_int8_t *, int, nfsv4stateid_t *,
650
int, int, struct nfsclflayouthead *, struct nfscllayout **, struct ucred *,
651
NFSPROC_T *);
652
struct nfscllayout *nfscl_getlayout(struct nfsclclient *, uint8_t *, int,
653
uint64_t, uint32_t, struct nfsclflayout **, int *);
654
void nfscl_dserr(uint32_t, uint32_t, struct nfscldevinfo *,
655
struct nfscllayout *, struct nfsclds *);
656
void nfscl_cancelreqs(struct nfsclds *);
657
void nfscl_rellayout(struct nfscllayout *, int);
658
struct nfscldevinfo *nfscl_getdevinfo(struct nfsclclient *, uint8_t *,
659
struct nfscldevinfo *);
660
void nfscl_reldevinfo(struct nfscldevinfo *);
661
int nfscl_adddevinfo(struct nfsmount *, struct nfscldevinfo *, int,
662
struct nfsclflayout *);
663
void nfscl_freelayout(struct nfscllayout *);
664
void nfscl_freeflayout(struct nfsclflayout *);
665
void nfscl_freedevinfo(struct nfscldevinfo *);
666
int nfscl_layoutcommit(vnode_t, NFSPROC_T *);
667
int nfscl_delegacecheck(struct vnode *, accmode_t, struct ucred *);
668
void nfscl_startdelegrecall(struct nfsclclient *, struct nfsfh *);
669
670
/* nfs_clport.c */
671
int nfscl_nget(mount_t, vnode_t, struct nfsfh *,
672
struct componentname *, NFSPROC_T *, struct nfsnode **, int);
673
NFSPROC_T *nfscl_getparent(NFSPROC_T *);
674
void nfscl_start_renewthread(struct nfsclclient *);
675
void nfscl_loadsbinfo(struct nfsmount *, struct nfsstatfs *, void *);
676
void nfscl_loadfsinfo(struct nfsmount *, struct nfsfsinfo *, uint32_t);
677
void nfscl_delegreturn(struct nfscldeleg *, int, struct nfsmount *,
678
struct ucred *, NFSPROC_T *);
679
void nfsrvd_cbinit(int);
680
int nfscl_checksattr(struct vattr *, struct nfsvattr *);
681
int nfscl_ngetreopen(mount_t, u_int8_t *, int, NFSPROC_T *,
682
struct nfsnode **);
683
int nfscl_procdoesntexist(u_int8_t *);
684
int nfscl_maperr(NFSPROC_T *, int, uid_t, gid_t);
685
686
/* nfs_clsubs.c */
687
void nfscl_init(void);
688
689
/* nfs_clbio.c */
690
int ncl_flush(vnode_t, int, NFSPROC_T *, int, int);
691
692
/* nfs_clnode.c */
693
void ncl_invalcaches(vnode_t);
694
695
/* nfs_nfsdport.c */
696
int nfsvno_getattr(vnode_t, struct nfsvattr *, struct nfsrv_descript *,
697
NFSPROC_T *, int, nfsattrbit_t *);
698
int nfsvno_setattr(vnode_t, struct nfsvattr *, struct ucred *,
699
NFSPROC_T *, struct nfsexstuff *);
700
int nfsvno_getfh(vnode_t, fhandle_t *, NFSPROC_T *);
701
int nfsvno_accchk(vnode_t, accmode_t, struct ucred *,
702
struct nfsexstuff *, NFSPROC_T *, int, int, u_int32_t *);
703
int nfsvno_namei(struct nfsrv_descript *, struct nameidata *,
704
vnode_t, int, struct nfsexstuff *, vnode_t *);
705
void nfsvno_setpathbuf(struct nameidata *, char **, u_long **);
706
void nfsvno_relpathbuf(struct nameidata *);
707
int nfsvno_readlink(vnode_t, struct ucred *, int, NFSPROC_T *, struct mbuf **,
708
struct mbuf **, int *);
709
int nfsvno_read(vnode_t, off_t, int, struct ucred *, int, NFSPROC_T *,
710
struct mbuf **, struct mbuf **);
711
int nfsvno_write(vnode_t, off_t, int, int *, struct mbuf *, char *,
712
struct ucred *, NFSPROC_T *);
713
int nfsvno_createsub(struct nfsrv_descript *, struct nameidata *,
714
vnode_t *, struct nfsvattr *, int *, int32_t *, NFSDEV_T,
715
struct nfsexstuff *);
716
int nfsvno_mknod(struct nameidata *, struct nfsvattr *, struct ucred *,
717
NFSPROC_T *);
718
int nfsvno_mkdir(struct nameidata *,
719
struct nfsvattr *, uid_t, struct ucred *, NFSPROC_T *,
720
struct nfsexstuff *);
721
int nfsvno_symlink(struct nameidata *, struct nfsvattr *, char *, int, int,
722
uid_t, struct ucred *, NFSPROC_T *, struct nfsexstuff *);
723
int nfsvno_getsymlink(struct nfsrv_descript *, struct nfsvattr *,
724
NFSPROC_T *, char **, int *);
725
int nfsvno_removesub(struct nameidata *, bool, struct nfsrv_descript *,
726
NFSPROC_T *, struct nfsexstuff *);
727
int nfsvno_rmdirsub(struct nameidata *, int, struct ucred *, NFSPROC_T *,
728
struct nfsexstuff *);
729
int nfsvno_rename(struct nameidata *, struct nameidata *,
730
struct nfsrv_descript *, NFSPROC_T *);
731
int nfsvno_link(struct nameidata *, vnode_t, nfsquad_t, struct ucred *,
732
NFSPROC_T *, struct nfsexstuff *);
733
int nfsvno_fsync(vnode_t, u_int64_t, int, struct ucred *, NFSPROC_T *);
734
int nfsvno_statfs(vnode_t, struct statfs *);
735
void nfsvno_getfs(struct nfsfsinfo *, int);
736
void nfsvno_open(struct nfsrv_descript *, struct nameidata *, nfsquad_t,
737
nfsv4stateid_t *, struct nfsstate *, int *, struct nfsvattr *, int32_t *,
738
int, NFSACL_T *, nfsattrbit_t *, struct ucred *, bool,
739
struct nfsexstuff *, vnode_t *);
740
int nfsvno_updfilerev(vnode_t, struct nfsvattr *, struct nfsrv_descript *,
741
NFSPROC_T *);
742
int nfsvno_fillattr(struct nfsrv_descript *, struct mount *, vnode_t,
743
struct nfsvattr *, fhandle_t *, int, nfsattrbit_t *,
744
struct ucred *, NFSPROC_T *, int, int, int, int, uint64_t, bool, bool,
745
bool, uint32_t);
746
int nfsrv_sattr(struct nfsrv_descript *, vnode_t, struct nfsvattr *, nfsattrbit_t *,
747
NFSACL_T *, NFSPROC_T *);
748
int nfsv4_sattr(struct nfsrv_descript *, vnode_t, struct nfsvattr *, nfsattrbit_t *,
749
NFSACL_T *, NFSPROC_T *);
750
int nfsvno_checkexp(mount_t, NFSSOCKADDR_T, struct nfsexstuff *,
751
struct ucred **);
752
int nfsvno_fhtovp(mount_t, fhandle_t *, NFSSOCKADDR_T, int,
753
vnode_t *, struct nfsexstuff *, struct ucred **);
754
vnode_t nfsvno_getvp(fhandle_t *);
755
int nfsvno_advlock(vnode_t, int, u_int64_t, u_int64_t, NFSPROC_T *);
756
int nfsrv_v4rootexport(void *, struct ucred *, NFSPROC_T *);
757
int nfsvno_testexp(struct nfsrv_descript *, struct nfsexstuff *);
758
uint32_t nfsrv_hashfh(fhandle_t *);
759
uint32_t nfsrv_hashsessionid(uint8_t *);
760
void nfsrv_backupstable(void);
761
int nfsrv_dsgetdevandfh(struct vnode *, NFSPROC_T *, int *, fhandle_t *,
762
char *);
763
int nfsrv_dsgetsockmnt(struct vnode *, int, char *, int *, int *,
764
NFSPROC_T *, struct vnode **, fhandle_t *, char *, char *,
765
struct vnode **, struct nfsmount **, struct nfsmount *, int *, int *);
766
int nfsrv_dscreate(struct vnode *, struct vattr *, struct vattr *,
767
fhandle_t *, struct pnfsdsfile *, struct pnfsdsattr *, char *,
768
struct ucred *, NFSPROC_T *, struct vnode **);
769
int nfsrv_updatemdsattr(struct vnode *, struct nfsvattr *, NFSPROC_T *);
770
void nfsrv_killrpcs(struct nfsmount *);
771
int nfsrv_setacl(struct vnode *, NFSACL_T *, struct ucred *, NFSPROC_T *);
772
int nfsvno_seek(struct nfsrv_descript *, struct vnode *, u_long, off_t *, int,
773
bool *, struct ucred *, NFSPROC_T *);
774
int nfsvno_allocate(struct vnode *, off_t, off_t, struct ucred *, NFSPROC_T *);
775
int nfsvno_deallocate(struct vnode *, off_t, off_t, struct ucred *,
776
NFSPROC_T *);
777
int nfsvno_getxattr(struct vnode *, char *, uint32_t, struct ucred *,
778
uint64_t, int, struct thread *, struct mbuf **, struct mbuf **, int *);
779
int nfsvno_setxattr(struct vnode *, char *, int, struct mbuf *, char *,
780
struct ucred *, struct thread *);
781
int nfsvno_rmxattr(struct nfsrv_descript *, struct vnode *, char *,
782
struct ucred *, struct thread *);
783
int nfsvno_listxattr(struct vnode *, uint64_t, struct ucred *, struct thread *,
784
u_char **, uint32_t *, bool *);
785
void nfsm_trimtrailing(struct nfsrv_descript *, struct mbuf *, char *, int,
786
int);
787
bool nfsrv_checkwrongsec(struct nfsrv_descript *, int, __enum_uint8(vtype));
788
void nfsrv_checknospc(void);
789
790
/* nfs_commonkrpc.c */
791
int newnfs_nmcancelreqs(struct nfsmount *);
792
void newnfs_set_sigmask(struct thread *, sigset_t *);
793
void newnfs_restore_sigmask(struct thread *, sigset_t *);
794
int newnfs_msleep(struct thread *, void *, struct mtx *, int, char *, int);
795
int newnfs_request(struct nfsrv_descript *, struct nfsmount *,
796
struct nfsclient *, struct nfssockreq *, vnode_t, NFSPROC_T *,
797
struct ucred *, u_int32_t, u_int32_t, u_char *, int, u_int64_t *,
798
struct nfsclsession *);
799
void nfs_resetslots(struct nfsclsession *);
800
int newnfs_connect(struct nfsmount *, struct nfssockreq *,
801
struct ucred *, NFSPROC_T *, int, bool, struct __rpc_client **);
802
void newnfs_disconnect(struct nfsmount *, struct nfssockreq *);
803
int newnfs_sigintr(struct nfsmount *, NFSPROC_T *);
804
805
/* nfs_nfsdkrpc.c */
806
int nfsrvd_addsock(struct file *);
807
int nfsrvd_nfsd(NFSPROC_T *, struct nfsd_nfsd_args *);
808
void nfsrvd_init(int);
809
810
/* nfs_clkrpc.c */
811
int nfscbd_addsock(struct file *);
812
int nfscbd_nfsd(NFSPROC_T *, struct nfsd_nfscbd_args *);
813
814