fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / include / linux / lockd / xdr.h
index ef14dbd..83a1f9f 100644 (file)
 #include <linux/nfs.h>
 #include <linux/sunrpc/xdr.h>
 
-#define NLM_MAXSTRLEN          1024
+struct svc_rqst;
 
-#define QUADLEN(len)           (((len) + 3) >> 2)
+#define NLM_MAXCOOKIELEN       32
+#define NLM_MAXSTRLEN          1024
 
 #define        nlm_granted             __constant_htonl(NLM_LCK_GRANTED)
 #define        nlm_lck_denied          __constant_htonl(NLM_LCK_DENIED)
 #define        nlm_lck_blocked         __constant_htonl(NLM_LCK_BLOCKED)
 #define        nlm_lck_denied_grace_period     __constant_htonl(NLM_LCK_DENIED_GRACE_PERIOD)
 
+#define nlm_drop_reply         __constant_htonl(30000)
+
 /* Lock info passed via NLM */
 struct nlm_lock {
        char *                  caller;
        int                     len;    /* length of "caller" */
        struct nfs_fh           fh;
        struct xdr_netobj       oh;
+       u32                     svid;
        struct file_lock        fl;
 };
 
 /*
- *     NLM cookies. Technically they can be 1K, Nobody uses over 8 bytes
- *     however.
+ *     NLM cookies. Technically they can be 1K, but Linux only uses 8 bytes.
+ *     FreeBSD uses 16, Apple Mac OS X 10.3 uses 20. Therefore we set it to
+ *     32 bytes.
  */
  
 struct nlm_cookie
 {
-       unsigned char data[8];
+       unsigned char data[NLM_MAXCOOKIELEN];
        unsigned int len;
 };
 
@@ -64,7 +69,7 @@ typedef struct nlm_args nlm_args;
  */
 struct nlm_res {
        struct nlm_cookie       cookie;
-       u32                     status;
+       __be32                  status;
        struct nlm_lock         lock;
 };
 
@@ -75,9 +80,9 @@ struct nlm_reboot {
        char *          mon;
        int             len;
        u32             state;
-       u32             addr;
-       u32             vers;
-       u32             proto;
+       __be32          addr;
+       __be32          vers;
+       __be32          proto;
 };
 
 /*
@@ -85,19 +90,19 @@ struct nlm_reboot {
  */
 #define NLMSVC_XDRSIZE         sizeof(struct nlm_args)
 
-int    nlmsvc_decode_testargs(struct svc_rqst *, u32 *, struct nlm_args *);
-int    nlmsvc_encode_testres(struct svc_rqst *, u32 *, struct nlm_res *);
-int    nlmsvc_decode_lockargs(struct svc_rqst *, u32 *, struct nlm_args *);
-int    nlmsvc_decode_cancargs(struct svc_rqst *, u32 *, struct nlm_args *);
-int    nlmsvc_decode_unlockargs(struct svc_rqst *, u32 *, struct nlm_args *);
-int    nlmsvc_encode_res(struct svc_rqst *, u32 *, struct nlm_res *);
-int    nlmsvc_decode_res(struct svc_rqst *, u32 *, struct nlm_res *);
-int    nlmsvc_encode_void(struct svc_rqst *, u32 *, void *);
-int    nlmsvc_decode_void(struct svc_rqst *, u32 *, void *);
-int    nlmsvc_decode_shareargs(struct svc_rqst *, u32 *, struct nlm_args *);
-int    nlmsvc_encode_shareres(struct svc_rqst *, u32 *, struct nlm_res *);
-int    nlmsvc_decode_notify(struct svc_rqst *, u32 *, struct nlm_args *);
-int    nlmsvc_decode_reboot(struct svc_rqst *, u32 *, struct nlm_reboot *);
+int    nlmsvc_decode_testargs(struct svc_rqst *, __be32 *, struct nlm_args *);
+int    nlmsvc_encode_testres(struct svc_rqst *, __be32 *, struct nlm_res *);
+int    nlmsvc_decode_lockargs(struct svc_rqst *, __be32 *, struct nlm_args *);
+int    nlmsvc_decode_cancargs(struct svc_rqst *, __be32 *, struct nlm_args *);
+int    nlmsvc_decode_unlockargs(struct svc_rqst *, __be32 *, struct nlm_args *);
+int    nlmsvc_encode_res(struct svc_rqst *, __be32 *, struct nlm_res *);
+int    nlmsvc_decode_res(struct svc_rqst *, __be32 *, struct nlm_res *);
+int    nlmsvc_encode_void(struct svc_rqst *, __be32 *, void *);
+int    nlmsvc_decode_void(struct svc_rqst *, __be32 *, void *);
+int    nlmsvc_decode_shareargs(struct svc_rqst *, __be32 *, struct nlm_args *);
+int    nlmsvc_encode_shareres(struct svc_rqst *, __be32 *, struct nlm_res *);
+int    nlmsvc_decode_notify(struct svc_rqst *, __be32 *, struct nlm_args *);
+int    nlmsvc_decode_reboot(struct svc_rqst *, __be32 *, struct nlm_reboot *);
 /*
 int    nlmclt_encode_testargs(struct rpc_rqst *, u32 *, struct nlm_args *);
 int    nlmclt_encode_lockargs(struct rpc_rqst *, u32 *, struct nlm_args *);