xdr.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:4k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

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