home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / linux / nfsd / xdr.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  4.0 KB  |  180 lines

  1. /*
  2.  * linux/inxlude/linux/nfsd/xdr.h
  3.  *
  4.  * XDR types for nfsd. This is mainly a typing exercise.
  5.  */
  6.  
  7. #ifndef LINUX_NFSD_H
  8. #define LINUX_NFSD_H
  9.  
  10. #include <linux/fs.h>
  11. #include <linux/vfs.h>
  12. #include <linux/nfs.h>
  13.  
  14. struct nfsd_fhandle {
  15.     struct svc_fh        fh;
  16. };
  17.  
  18. struct nfsd_sattrargs {
  19.     struct svc_fh        fh;
  20.     struct iattr        attrs;
  21. };
  22.  
  23. struct nfsd_diropargs {
  24.     struct svc_fh        fh;
  25.     char *            name;
  26.     int            len;
  27. };
  28.  
  29. struct nfsd_readargs {
  30.     struct svc_fh        fh;
  31.     __u32            offset;
  32.     __u32            count;
  33.     struct kvec        vec[RPCSVC_MAXPAGES];
  34.     int            vlen;
  35. };
  36.  
  37. struct nfsd_writeargs {
  38.     svc_fh            fh;
  39.     __u32            offset;
  40.     int            len;
  41.     struct kvec        vec[RPCSVC_MAXPAGES];
  42.     int            vlen;
  43. };
  44.  
  45. struct nfsd_createargs {
  46.     struct svc_fh        fh;
  47.     char *            name;
  48.     int            len;
  49.     struct iattr        attrs;
  50. };
  51.  
  52. struct nfsd_renameargs {
  53.     struct svc_fh        ffh;
  54.     char *            fname;
  55.     int            flen;
  56.     struct svc_fh        tfh;
  57.     char *            tname;
  58.     int            tlen;
  59. };
  60.  
  61. struct nfsd_readlinkargs {
  62.     struct svc_fh        fh;
  63.     char *            buffer;
  64. };
  65.     
  66. struct nfsd_linkargs {
  67.     struct svc_fh        ffh;
  68.     struct svc_fh        tfh;
  69.     char *            tname;
  70.     int            tlen;
  71. };
  72.  
  73. struct nfsd_symlinkargs {
  74.     struct svc_fh        ffh;
  75.     char *            fname;
  76.     int            flen;
  77.     char *            tname;
  78.     int            tlen;
  79.     struct iattr        attrs;
  80. };
  81.  
  82. struct nfsd_readdirargs {
  83.     struct svc_fh        fh;
  84.     __u32            cookie;
  85.     __u32            count;
  86.     u32 *            buffer;
  87. };
  88.  
  89. struct nfsd_attrstat {
  90.     struct svc_fh        fh;
  91.     struct kstat        stat;
  92. };
  93.  
  94. struct nfsd_diropres  {
  95.     struct svc_fh        fh;
  96.     struct kstat        stat;
  97. };
  98.  
  99. struct nfsd_readlinkres {
  100.     int            len;
  101. };
  102.  
  103. struct nfsd_readres {
  104.     struct svc_fh        fh;
  105.     unsigned long        count;
  106.     struct kstat        stat;
  107. };
  108.  
  109. struct nfsd_readdirres {
  110.     int            count;
  111.  
  112.     struct readdir_cd    common;
  113.     u32 *            buffer;
  114.     int            buflen;
  115.     u32 *            offset;
  116. };
  117.  
  118. struct nfsd_statfsres {
  119.     struct kstatfs        stats;
  120. };
  121.  
  122. /*
  123.  * Storage requirements for XDR arguments and results.
  124.  */
  125. union nfsd_xdrstore {
  126.     struct nfsd_sattrargs    sattr;
  127.     struct nfsd_diropargs    dirop;
  128.     struct nfsd_readargs    read;
  129.     struct nfsd_writeargs    write;
  130.     struct nfsd_createargs    create;
  131.     struct nfsd_renameargs    rename;
  132.     struct nfsd_linkargs    link;
  133.     struct nfsd_symlinkargs    symlink;
  134.     struct nfsd_readdirargs    readdir;
  135. };
  136.  
  137. #define NFS2_SVC_XDRSIZE    sizeof(union nfsd_xdrstore)
  138.  
  139.  
  140. int nfssvc_decode_void(struct svc_rqst *, u32 *, void *);
  141. int nfssvc_decode_fhandle(struct svc_rqst *, u32 *, struct nfsd_fhandle *);
  142. int nfssvc_decode_sattrargs(struct svc_rqst *, u32 *,
  143.                 struct nfsd_sattrargs *);
  144. int nfssvc_decode_diropargs(struct svc_rqst *, u32 *,
  145.                 struct nfsd_diropargs *);
  146. int nfssvc_decode_readargs(struct svc_rqst *, u32 *,
  147.                 struct nfsd_readargs *);
  148. int nfssvc_decode_writeargs(struct svc_rqst *, u32 *,
  149.                 struct nfsd_writeargs *);
  150. int nfssvc_decode_createargs(struct svc_rqst *, u32 *,
  151.                 struct nfsd_createargs *);
  152. int nfssvc_decode_renameargs(struct svc_rqst *, u32 *,
  153.                 struct nfsd_renameargs *);
  154. int nfssvc_decode_readlinkargs(struct svc_rqst *, u32 *,
  155.                 struct nfsd_readlinkargs *);
  156. int nfssvc_decode_linkargs(struct svc_rqst *, u32 *,
  157.                 struct nfsd_linkargs *);
  158. int nfssvc_decode_symlinkargs(struct svc_rqst *, u32 *,
  159.                 struct nfsd_symlinkargs *);
  160. int nfssvc_decode_readdirargs(struct svc_rqst *, u32 *,
  161.                 struct nfsd_readdirargs *);
  162. int nfssvc_encode_void(struct svc_rqst *, u32 *, void *);
  163. int nfssvc_encode_attrstat(struct svc_rqst *, u32 *, struct nfsd_attrstat *);
  164. int nfssvc_encode_diropres(struct svc_rqst *, u32 *, struct nfsd_diropres *);
  165. int nfssvc_encode_readlinkres(struct svc_rqst *, u32 *, struct nfsd_readlinkres *);
  166. int nfssvc_encode_readres(struct svc_rqst *, u32 *, struct nfsd_readres *);
  167. int nfssvc_encode_statfsres(struct svc_rqst *, u32 *, struct nfsd_statfsres *);
  168. int nfssvc_encode_readdirres(struct svc_rqst *, u32 *, struct nfsd_readdirres *);
  169.  
  170. int nfssvc_encode_entry(struct readdir_cd *, const char *name,
  171.                 int namlen, loff_t offset, ino_t ino, unsigned int);
  172.  
  173. int nfssvc_release_fhandle(struct svc_rqst *, u32 *, struct nfsd_fhandle *);
  174.  
  175. /* Helper functions for NFSv2 ACL code */
  176. u32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, u32 *p, struct svc_fh *fhp);
  177. u32 *nfs2svc_decode_fh(u32 *p, struct svc_fh *fhp);
  178.  
  179. #endif /* LINUX_NFSD_H */
  180.