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