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 / lockd / xdr.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.9 KB  |  110 lines

  1. /*
  2.  * linux/include/linux/lockd/xdr.h
  3.  *
  4.  * XDR types for the NLM protocol
  5.  *
  6.  * Copyright (C) 1996 Olaf Kirch <okir@monad.swb.de>
  7.  */
  8.  
  9. #ifndef LOCKD_XDR_H
  10. #define LOCKD_XDR_H
  11.  
  12. #include <linux/fs.h>
  13. #include <linux/nfs.h>
  14. #include <linux/sunrpc/xdr.h>
  15.  
  16. #define NLM_MAXCOOKIELEN        32
  17. #define NLM_MAXSTRLEN        1024
  18.  
  19. #define    nlm_granted        __constant_htonl(NLM_LCK_GRANTED)
  20. #define    nlm_lck_denied        __constant_htonl(NLM_LCK_DENIED)
  21. #define    nlm_lck_denied_nolocks    __constant_htonl(NLM_LCK_DENIED_NOLOCKS)
  22. #define    nlm_lck_blocked        __constant_htonl(NLM_LCK_BLOCKED)
  23. #define    nlm_lck_denied_grace_period    __constant_htonl(NLM_LCK_DENIED_GRACE_PERIOD)
  24.  
  25. /* Lock info passed via NLM */
  26. struct nlm_lock {
  27.     char *            caller;
  28.     int            len;     /* length of "caller" */
  29.     struct nfs_fh        fh;
  30.     struct xdr_netobj    oh;
  31.     u32            svid;
  32.     struct file_lock    fl;
  33. };
  34.  
  35. /*
  36.  *    NLM cookies. Technically they can be 1K, but Linux only uses 8 bytes.
  37.  *    FreeBSD uses 16, Apple Mac OS X 10.3 uses 20. Therefore we set it to
  38.  *    32 bytes.
  39.  */
  40.  
  41. struct nlm_cookie
  42. {
  43.     unsigned char data[NLM_MAXCOOKIELEN];
  44.     unsigned int len;
  45. };
  46.  
  47. /*
  48.  * Generic lockd arguments for all but sm_notify
  49.  */
  50. struct nlm_args {
  51.     struct nlm_cookie    cookie;
  52.     struct nlm_lock        lock;
  53.     u32            block;
  54.     u32            reclaim;
  55.     u32            state;
  56.     u32            monitor;
  57.     u32            fsm_access;
  58.     u32            fsm_mode;
  59. };
  60.  
  61. typedef struct nlm_args nlm_args;
  62.  
  63. /*
  64.  * Generic lockd result
  65.  */
  66. struct nlm_res {
  67.     struct nlm_cookie    cookie;
  68.     u32            status;
  69.     struct nlm_lock        lock;
  70. };
  71.  
  72. /*
  73.  * statd callback when client has rebooted
  74.  */
  75. struct nlm_reboot {
  76.     char *        mon;
  77.     int        len;
  78.     u32        state;
  79.     u32        addr;
  80.     u32        vers;
  81.     u32        proto;
  82. };
  83.  
  84. /*
  85.  * Contents of statd callback when monitored host rebooted
  86.  */
  87. #define NLMSVC_XDRSIZE        sizeof(struct nlm_args)
  88.  
  89. int    nlmsvc_decode_testargs(struct svc_rqst *, u32 *, struct nlm_args *);
  90. int    nlmsvc_encode_testres(struct svc_rqst *, u32 *, struct nlm_res *);
  91. int    nlmsvc_decode_lockargs(struct svc_rqst *, u32 *, struct nlm_args *);
  92. int    nlmsvc_decode_cancargs(struct svc_rqst *, u32 *, struct nlm_args *);
  93. int    nlmsvc_decode_unlockargs(struct svc_rqst *, u32 *, struct nlm_args *);
  94. int    nlmsvc_encode_res(struct svc_rqst *, u32 *, struct nlm_res *);
  95. int    nlmsvc_decode_res(struct svc_rqst *, u32 *, struct nlm_res *);
  96. int    nlmsvc_encode_void(struct svc_rqst *, u32 *, void *);
  97. int    nlmsvc_decode_void(struct svc_rqst *, u32 *, void *);
  98. int    nlmsvc_decode_shareargs(struct svc_rqst *, u32 *, struct nlm_args *);
  99. int    nlmsvc_encode_shareres(struct svc_rqst *, u32 *, struct nlm_res *);
  100. int    nlmsvc_decode_notify(struct svc_rqst *, u32 *, struct nlm_args *);
  101. int    nlmsvc_decode_reboot(struct svc_rqst *, u32 *, struct nlm_reboot *);
  102. /*
  103. int    nlmclt_encode_testargs(struct rpc_rqst *, u32 *, struct nlm_args *);
  104. int    nlmclt_encode_lockargs(struct rpc_rqst *, u32 *, struct nlm_args *);
  105. int    nlmclt_encode_cancargs(struct rpc_rqst *, u32 *, struct nlm_args *);
  106. int    nlmclt_encode_unlockargs(struct rpc_rqst *, u32 *, struct nlm_args *);
  107.  */
  108.  
  109. #endif /* LOCKD_XDR_H */
  110.