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 --- |