nfsxdr.c (715a1284d89a740b197b3bad5eb20d36a397382f) nfsxdr.c (ebcd8e8b28535b643a4c06685bd363b3b73a96af)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * XDR support for nfsd
4 *
5 * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
6 */
7
8#include "vfs.h"

--- 9 unchanged lines hidden (view full) ---

18 NFNON, NFCHR, NFCHR, NFBAD,
19 NFDIR, NFBAD, NFBLK, NFBAD,
20 NFREG, NFBAD, NFLNK, NFBAD,
21 NFSOCK, NFBAD, NFLNK, NFBAD,
22};
23
24
25/*
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * XDR support for nfsd
4 *
5 * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
6 */
7
8#include "vfs.h"

--- 9 unchanged lines hidden (view full) ---

18 NFNON, NFCHR, NFCHR, NFBAD,
19 NFDIR, NFBAD, NFBLK, NFBAD,
20 NFREG, NFBAD, NFLNK, NFBAD,
21 NFSOCK, NFBAD, NFLNK, NFBAD,
22};
23
24
25/*
26 * XDR functions for basic NFS types
26 * Basic NFSv2 data types (RFC 1094 Section 2.3)
27 */
27 */
28
28static __be32 *
29decode_fh(__be32 *p, struct svc_fh *fhp)
30{
31 fh_init(fhp, NFS_FHSIZE);
32 memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE);
33 fhp->fh_handle.fh_size = NFS_FHSIZE;
34
35 /* FIXME: Look up export pointer here and verify
36 * Sun Secure RPC if requested */
37 return p + (NFS_FHSIZE >> 2);
38}
39
29static __be32 *
30decode_fh(__be32 *p, struct svc_fh *fhp)
31{
32 fh_init(fhp, NFS_FHSIZE);
33 memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE);
34 fhp->fh_handle.fh_size = NFS_FHSIZE;
35
36 /* FIXME: Look up export pointer here and verify
37 * Sun Secure RPC if requested */
38 return p + (NFS_FHSIZE >> 2);
39}
40
41static bool
42svcxdr_decode_fhandle(struct xdr_stream *xdr, struct svc_fh *fhp)
43{
44 __be32 *p;
45
46 p = xdr_inline_decode(xdr, NFS_FHSIZE);
47 if (!p)
48 return false;
49 fh_init(fhp, NFS_FHSIZE);
50 memcpy(&fhp->fh_handle.fh_base, p, NFS_FHSIZE);
51 fhp->fh_handle.fh_size = NFS_FHSIZE;
52
53 return true;
54}
55
40/* Helper function for NFSv2 ACL code */
41__be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp)
42{
43 return decode_fh(p, fhp);
44}
45
46static __be32 *
47encode_fh(__be32 *p, struct svc_fh *fhp)

--- 141 unchanged lines hidden (view full) ---

189 return encode_fattr(rqstp, p, fhp, stat);
190}
191
192/*
193 * XDR decode functions
194 */
195
196int
56/* Helper function for NFSv2 ACL code */
57__be32 *nfs2svc_decode_fh(__be32 *p, struct svc_fh *fhp)
58{
59 return decode_fh(p, fhp);
60}
61
62static __be32 *
63encode_fh(__be32 *p, struct svc_fh *fhp)

--- 141 unchanged lines hidden (view full) ---

205 return encode_fattr(rqstp, p, fhp, stat);
206}
207
208/*
209 * XDR decode functions
210 */
211
212int
197nfssvc_decode_fhandle(struct svc_rqst *rqstp, __be32 *p)
213nfssvc_decode_fhandleargs(struct svc_rqst *rqstp, __be32 *p)
198{
214{
215 struct xdr_stream *xdr = &rqstp->rq_arg_stream;
199 struct nfsd_fhandle *args = rqstp->rq_argp;
200
216 struct nfsd_fhandle *args = rqstp->rq_argp;
217
201 p = decode_fh(p, &args->fh);
202 if (!p)
203 return 0;
204 return xdr_argsize_check(rqstp, p);
218 return svcxdr_decode_fhandle(xdr, &args->fh);
205}
206
207int
208nfssvc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p)
209{
210 struct nfsd_sattrargs *args = rqstp->rq_argp;
211
212 p = decode_fh(p, &args->fh);

--- 400 unchanged lines hidden ---
219}
220
221int
222nfssvc_decode_sattrargs(struct svc_rqst *rqstp, __be32 *p)
223{
224 struct nfsd_sattrargs *args = rqstp->rq_argp;
225
226 p = decode_fh(p, &args->fh);

--- 400 unchanged lines hidden ---