^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * XDR types for NFSv3 in nfsd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 1996-1998, Olaf Kirch <okir@monad.swb.de>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #ifndef _LINUX_NFSD_XDR3_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define _LINUX_NFSD_XDR3_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include "xdr.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) struct nfsd3_sattrargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) struct iattr attrs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) int check_guard;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) time64_t guardtime;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) struct nfsd3_diropargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) char * name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) unsigned int len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) struct nfsd3_accessargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) unsigned int access;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) struct nfsd3_readargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) __u64 offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) __u32 count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) int vlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) struct nfsd3_writeargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) __u64 offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) __u32 count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) int stable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) __u32 len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) struct kvec first;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) struct nfsd3_createargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) char * name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) unsigned int len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) int createmode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) struct iattr attrs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) __be32 * verf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) struct nfsd3_mknodargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) char * name;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) unsigned int len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) __u32 ftype;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) __u32 major, minor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) struct iattr attrs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) struct nfsd3_renameargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) struct svc_fh ffh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) char * fname;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) unsigned int flen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) struct svc_fh tfh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) char * tname;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) unsigned int tlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) struct nfsd3_readlinkargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) char * buffer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) struct nfsd3_linkargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) struct svc_fh ffh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) struct svc_fh tfh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) char * tname;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) unsigned int tlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) struct nfsd3_symlinkargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) struct svc_fh ffh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) char * fname;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) unsigned int flen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) char * tname;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) unsigned int tlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) struct iattr attrs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) struct kvec first;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) struct nfsd3_readdirargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) __u64 cookie;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) __u32 dircount;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) __u32 count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) __be32 * verf;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) __be32 * buffer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) struct nfsd3_commitargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) __u64 offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) __u32 count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) struct nfsd3_getaclargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) int mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) struct posix_acl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) struct nfsd3_setaclargs {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) int mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) struct posix_acl *acl_access;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) struct posix_acl *acl_default;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) struct nfsd3_attrstat {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) struct kstat stat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) /* LOOKUP, CREATE, MKDIR, SYMLINK, MKNOD */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) struct nfsd3_diropres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) struct svc_fh dirfh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) struct nfsd3_accessres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) __u32 access;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) struct kstat stat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) struct nfsd3_readlinkres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) __u32 len;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) struct nfsd3_readres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) unsigned long count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) __u32 eof;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) struct nfsd3_writeres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) unsigned long count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) int committed;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) __be32 verf[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) struct nfsd3_renameres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) struct svc_fh ffh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) struct svc_fh tfh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) struct nfsd3_linkres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) struct svc_fh tfh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) struct nfsd3_readdirres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) /* Just to save kmalloc on every readdirplus entry (svc_fh is a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) * little large for the stack): */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) struct svc_fh scratch;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) int count;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) __be32 verf[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) struct readdir_cd common;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) __be32 * buffer;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) int buflen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) __be32 * offset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) __be32 * offset1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) struct svc_rqst * rqstp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) struct nfsd3_fsstatres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) struct kstatfs stats;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) __u32 invarsec;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) struct nfsd3_fsinfores {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) __u32 f_rtmax;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) __u32 f_rtpref;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) __u32 f_rtmult;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) __u32 f_wtmax;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) __u32 f_wtpref;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) __u32 f_wtmult;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) __u32 f_dtpref;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) __u64 f_maxfilesize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) __u32 f_properties;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) struct nfsd3_pathconfres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) __u32 p_link_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) __u32 p_name_max;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) __u32 p_no_trunc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) __u32 p_chown_restricted;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) __u32 p_case_insensitive;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) __u32 p_case_preserving;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) struct nfsd3_commitres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) __be32 verf[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) struct nfsd3_getaclres {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) __be32 status;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) struct svc_fh fh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) int mask;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) struct posix_acl *acl_access;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) struct posix_acl *acl_default;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) struct kstat stat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) /* dummy type for release */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) struct nfsd3_fhandle_pair {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) __u32 dummy;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) struct svc_fh fh1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) struct svc_fh fh2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) * Storage requirements for XDR arguments and results.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) union nfsd3_xdrstore {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) struct nfsd3_sattrargs sattrargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) struct nfsd3_diropargs diropargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) struct nfsd3_readargs readargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) struct nfsd3_writeargs writeargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) struct nfsd3_createargs createargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) struct nfsd3_renameargs renameargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) struct nfsd3_linkargs linkargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) struct nfsd3_symlinkargs symlinkargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) struct nfsd3_readdirargs readdirargs;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) struct nfsd3_diropres diropres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) struct nfsd3_accessres accessres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) struct nfsd3_readlinkres readlinkres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) struct nfsd3_readres readres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) struct nfsd3_writeres writeres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) struct nfsd3_renameres renameres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) struct nfsd3_linkres linkres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) struct nfsd3_readdirres readdirres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) struct nfsd3_fsstatres fsstatres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) struct nfsd3_fsinfores fsinfores;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) struct nfsd3_pathconfres pathconfres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) struct nfsd3_commitres commitres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) struct nfsd3_getaclres getaclres;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) #define NFS3_SVC_XDRSIZE sizeof(union nfsd3_xdrstore)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) int nfs3svc_decode_voidarg(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) int nfs3svc_decode_fhandle(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) int nfs3svc_decode_sattrargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) int nfs3svc_decode_diropargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) int nfs3svc_decode_accessargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) int nfs3svc_decode_readargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) int nfs3svc_decode_writeargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) int nfs3svc_decode_createargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) int nfs3svc_decode_mkdirargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) int nfs3svc_decode_mknodargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) int nfs3svc_decode_renameargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) int nfs3svc_decode_readlinkargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) int nfs3svc_decode_linkargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) int nfs3svc_decode_symlinkargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) int nfs3svc_decode_readdirargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) int nfs3svc_decode_readdirplusargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) int nfs3svc_decode_commitargs(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) int nfs3svc_encode_voidres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) int nfs3svc_encode_attrstat(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) int nfs3svc_encode_wccstat(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) int nfs3svc_encode_diropres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) int nfs3svc_encode_accessres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) int nfs3svc_encode_readlinkres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) int nfs3svc_encode_readres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) int nfs3svc_encode_writeres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) int nfs3svc_encode_createres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) int nfs3svc_encode_renameres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) int nfs3svc_encode_linkres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) int nfs3svc_encode_readdirres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) int nfs3svc_encode_fsstatres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) int nfs3svc_encode_fsinfores(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) int nfs3svc_encode_pathconfres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) int nfs3svc_encode_commitres(struct svc_rqst *, __be32 *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) void nfs3svc_release_fhandle(struct svc_rqst *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) void nfs3svc_release_fhandle2(struct svc_rqst *);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) int nfs3svc_encode_entry(void *, const char *name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) int namlen, loff_t offset, u64 ino,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) unsigned int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) int nfs3svc_encode_entry_plus(void *, const char *name,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) int namlen, loff_t offset, u64 ino,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) unsigned int);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) /* Helper functions for NFSv3 ACL code */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) __be32 *nfs3svc_encode_post_op_attr(struct svc_rqst *rqstp, __be32 *p,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) struct svc_fh *fhp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) __be32 *nfs3svc_decode_fh(__be32 *p, struct svc_fh *fhp);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) #endif /* _LINUX_NFSD_XDR3_H */