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

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * include/linux/nfsd/syscall.h
  3.  *
  4.  * This file holds all declarations for the knfsd syscall interface.
  5.  *
  6.  * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de>
  7.  */
  8. #ifndef NFSD_SYSCALL_H
  9. #define NFSD_SYSCALL_H
  10. #include <asm/types.h>
  11. #ifdef __KERNEL__
  12. # include <linux/config.h>
  13. # include <linux/types.h>
  14. # include <linux/in.h>
  15. #endif 
  16. #include <linux/posix_types.h>
  17. #include <linux/nfsd/const.h>
  18. #include <linux/nfsd/export.h>
  19. #include <linux/nfsd/nfsfh.h>
  20. #include <linux/nfsd/auth.h>
  21. /*
  22.  * Version of the syscall interface
  23.  */
  24. #define NFSCTL_VERSION 0x0201
  25. /*
  26.  * These are the commands understood by nfsctl().
  27.  */
  28. #define NFSCTL_SVC 0 /* This is a server process. */
  29. #define NFSCTL_ADDCLIENT 1 /* Add an NFS client. */
  30. #define NFSCTL_DELCLIENT 2 /* Remove an NFS client. */
  31. #define NFSCTL_EXPORT 3 /* export a file system. */
  32. #define NFSCTL_UNEXPORT 4 /* unexport a file system. */
  33. #define NFSCTL_UGIDUPDATE 5 /* update a client's uid/gid map. */
  34. #define NFSCTL_GETFH 6 /* get an fh by ino (used by mountd) */
  35. #define NFSCTL_GETFD 7 /* get an fh by path (used by mountd) */
  36. #define NFSCTL_GETFS 8 /* get an fh by path with max FH len */
  37. /* SVC */
  38. struct nfsctl_svc {
  39. unsigned short svc_port;
  40. int svc_nthreads;
  41. };
  42. /* ADDCLIENT/DELCLIENT */
  43. struct nfsctl_client {
  44. char cl_ident[NFSCLNT_IDMAX+1];
  45. int cl_naddr;
  46. struct in_addr cl_addrlist[NFSCLNT_ADDRMAX];
  47. int cl_fhkeytype;
  48. int cl_fhkeylen;
  49. unsigned char cl_fhkey[NFSCLNT_KEYMAX];
  50. };
  51. /* EXPORT/UNEXPORT */
  52. struct nfsctl_export {
  53. char ex_client[NFSCLNT_IDMAX+1];
  54. char ex_path[NFS_MAXPATHLEN+1];
  55. __kernel_dev_t ex_dev;
  56. __kernel_ino_t ex_ino;
  57. int ex_flags;
  58. __kernel_uid_t ex_anon_uid;
  59. __kernel_gid_t ex_anon_gid;
  60. };
  61. /* UGIDUPDATE */
  62. struct nfsctl_uidmap {
  63. char * ug_ident;
  64. __kernel_uid_t ug_uidbase;
  65. int ug_uidlen;
  66. __kernel_uid_t * ug_udimap;
  67. __kernel_gid_t ug_gidbase;
  68. int ug_gidlen;
  69. __kernel_gid_t * ug_gdimap;
  70. };
  71. /* GETFH */
  72. struct nfsctl_fhparm {
  73. struct sockaddr gf_addr;
  74. __kernel_dev_t gf_dev;
  75. __kernel_ino_t gf_ino;
  76. int gf_version;
  77. };
  78. /* GETFD */
  79. struct nfsctl_fdparm {
  80. struct sockaddr gd_addr;
  81. char gd_path[NFS_MAXPATHLEN+1];
  82. int gd_version;
  83. };
  84. /* GETFS - GET Filehandle with Size */
  85. struct nfsctl_fsparm {
  86. struct sockaddr gd_addr;
  87. char gd_path[NFS_MAXPATHLEN+1];
  88. int gd_maxlen;
  89. };
  90. /*
  91.  * This is the argument union.
  92.  */
  93. struct nfsctl_arg {
  94. int ca_version; /* safeguard */
  95. union {
  96. struct nfsctl_svc u_svc;
  97. struct nfsctl_client u_client;
  98. struct nfsctl_export u_export;
  99. struct nfsctl_uidmap u_umap;
  100. struct nfsctl_fhparm u_getfh;
  101. struct nfsctl_fdparm u_getfd;
  102. struct nfsctl_fsparm u_getfs;
  103. } u;
  104. #define ca_svc u.u_svc
  105. #define ca_client u.u_client
  106. #define ca_export u.u_export
  107. #define ca_umap u.u_umap
  108. #define ca_getfh u.u_getfh
  109. #define ca_getfd u.u_getfd
  110. #define ca_getfs u.u_getfs
  111. #define ca_authd u.u_authd
  112. };
  113. union nfsctl_res {
  114. __u8 cr_getfh[NFS_FHSIZE];
  115. struct knfsd_fh cr_getfs;
  116. };
  117. #ifdef __KERNEL__
  118. /*
  119.  * Kernel syscall implementation.
  120.  */
  121. #if defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)
  122. extern asmlinkage long sys_nfsservctl(int, void *, void *);
  123. #else
  124. #define sys_nfsservctl sys_ni_syscall
  125. #endif
  126. extern int exp_addclient(struct nfsctl_client *ncp);
  127. extern int exp_delclient(struct nfsctl_client *ncp);
  128. extern int exp_export(struct nfsctl_export *nxp);
  129. extern int exp_unexport(struct nfsctl_export *nxp);
  130. #endif /* __KERNEL__ */
  131. #endif /* NFSD_SYSCALL_H */