xdr.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:3k
源码类别:

Linux/Unix编程

开发平台:

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/nfs.h>
  10. struct nfsd_fhandle {
  11. struct svc_fh fh;
  12. };
  13. struct nfsd_sattrargs {
  14. struct svc_fh fh;
  15. struct iattr attrs;
  16. };
  17. struct nfsd_diropargs {
  18. struct svc_fh fh;
  19. char * name;
  20. int len;
  21. };
  22. struct nfsd_readargs {
  23. struct svc_fh fh;
  24. __u32 offset;
  25. __u32 count;
  26. __u32 totalsize;
  27. };
  28. struct nfsd_writeargs {
  29. svc_fh fh;
  30. __u32 beginoffset;
  31. __u32 offset;
  32. __u32 totalcount;
  33. __u8 * data;
  34. int len;
  35. };
  36. struct nfsd_createargs {
  37. struct svc_fh fh;
  38. char * name;
  39. int len;
  40. struct iattr attrs;
  41. };
  42. struct nfsd_renameargs {
  43. struct svc_fh ffh;
  44. char * fname;
  45. int flen;
  46. struct svc_fh tfh;
  47. char * tname;
  48. int tlen;
  49. };
  50. struct nfsd_linkargs {
  51. struct svc_fh ffh;
  52. struct svc_fh tfh;
  53. char * tname;
  54. int tlen;
  55. };
  56. struct nfsd_symlinkargs {
  57. struct svc_fh ffh;
  58. char * fname;
  59. int flen;
  60. char * tname;
  61. int tlen;
  62. struct iattr attrs;
  63. };
  64. struct nfsd_readdirargs {
  65. struct svc_fh fh;
  66. __u32 cookie;
  67. __u32 count;
  68. };
  69. struct nfsd_attrstat {
  70. struct svc_fh fh;
  71. };
  72. struct nfsd_diropres  {
  73. struct svc_fh fh;
  74. };
  75. struct nfsd_readlinkres {
  76. int len;
  77. };
  78. struct nfsd_readres {
  79. struct svc_fh fh;
  80. unsigned long count;
  81. };
  82. struct nfsd_readdirres {
  83. int count;
  84. };
  85. struct nfsd_statfsres {
  86. struct statfs stats;
  87. };
  88. /*
  89.  * Storage requirements for XDR arguments and results.
  90.  */
  91. union nfsd_xdrstore {
  92. struct nfsd_sattrargs sattr;
  93. struct nfsd_diropargs dirop;
  94. struct nfsd_readargs read;
  95. struct nfsd_writeargs write;
  96. struct nfsd_createargs create;
  97. struct nfsd_renameargs rename;
  98. struct nfsd_linkargs link;
  99. struct nfsd_symlinkargs symlink;
  100. struct nfsd_readdirargs readdir;
  101. };
  102. #define NFSSVC_XDRSIZE sizeof(union nfsd_xdrstore)
  103. int nfssvc_decode_void(struct svc_rqst *, u32 *, void *);
  104. int nfssvc_decode_fhandle(struct svc_rqst *, u32 *, struct svc_fh *);
  105. int nfssvc_decode_sattrargs(struct svc_rqst *, u32 *,
  106. struct nfsd_sattrargs *);
  107. int nfssvc_decode_diropargs(struct svc_rqst *, u32 *,
  108. struct nfsd_diropargs *);
  109. int nfssvc_decode_readargs(struct svc_rqst *, u32 *,
  110. struct nfsd_readargs *);
  111. int nfssvc_decode_writeargs(struct svc_rqst *, u32 *,
  112. struct nfsd_writeargs *);
  113. int nfssvc_decode_createargs(struct svc_rqst *, u32 *,
  114. struct nfsd_createargs *);
  115. int nfssvc_decode_renameargs(struct svc_rqst *, u32 *,
  116. struct nfsd_renameargs *);
  117. int nfssvc_decode_linkargs(struct svc_rqst *, u32 *,
  118. struct nfsd_linkargs *);
  119. int nfssvc_decode_symlinkargs(struct svc_rqst *, u32 *,
  120. struct nfsd_symlinkargs *);
  121. int nfssvc_decode_readdirargs(struct svc_rqst *, u32 *,
  122. struct nfsd_readdirargs *);
  123. int nfssvc_encode_void(struct svc_rqst *, u32 *, void *);
  124. int nfssvc_encode_attrstat(struct svc_rqst *, u32 *, struct nfsd_attrstat *);
  125. int nfssvc_encode_diropres(struct svc_rqst *, u32 *, struct nfsd_diropres *);
  126. int nfssvc_encode_readlinkres(struct svc_rqst *, u32 *, struct nfsd_readlinkres *);
  127. int nfssvc_encode_readres(struct svc_rqst *, u32 *, struct nfsd_readres *);
  128. int nfssvc_encode_statfsres(struct svc_rqst *, u32 *, struct nfsd_statfsres *);
  129. int nfssvc_encode_readdirres(struct svc_rqst *, u32 *, struct nfsd_readdirres *);
  130. int nfssvc_encode_entry(struct readdir_cd *, const char *name,
  131. int namlen, loff_t offset, ino_t ino, unsigned int);
  132. int nfssvc_release_fhandle(struct svc_rqst *, u32 *, struct nfsd_fhandle *);
  133. #endif /* LINUX_NFSD_H */