Rev 424 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
424 | giacomo | 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_MAXSTRLEN 1024 |
||
17 | |||
18 | #define QUADLEN(len) (((len) + 3) >> 2) |
||
19 | |||
20 | #define nlm_granted __constant_htonl(NLM_LCK_GRANTED) |
||
21 | #define nlm_lck_denied __constant_htonl(NLM_LCK_DENIED) |
||
22 | #define nlm_lck_denied_nolocks __constant_htonl(NLM_LCK_DENIED_NOLOCKS) |
||
23 | #define nlm_lck_blocked __constant_htonl(NLM_LCK_BLOCKED) |
||
24 | #define nlm_lck_denied_grace_period __constant_htonl(NLM_LCK_DENIED_GRACE_PERIOD) |
||
25 | |||
26 | /* Lock info passed via NLM */ |
||
27 | struct nlm_lock { |
||
28 | char * caller; |
||
29 | int len; /* length of "caller" */ |
||
30 | struct nfs_fh fh; |
||
31 | struct xdr_netobj oh; |
||
32 | struct file_lock fl; |
||
33 | }; |
||
34 | |||
35 | /* |
||
36 | * NLM cookies. Technically they can be 1K, Nobody uses over 8 bytes |
||
37 | * however. |
||
38 | */ |
||
39 | |||
40 | struct nlm_cookie |
||
41 | { |
||
42 | unsigned char data[8]; |
||
43 | unsigned int len; |
||
44 | }; |
||
45 | |||
46 | /* |
||
47 | * Generic lockd arguments for all but sm_notify |
||
48 | */ |
||
49 | struct nlm_args { |
||
50 | struct nlm_cookie cookie; |
||
51 | struct nlm_lock lock; |
||
52 | u32 block; |
||
53 | u32 reclaim; |
||
54 | u32 state; |
||
55 | u32 monitor; |
||
56 | u32 fsm_access; |
||
57 | u32 fsm_mode; |
||
58 | }; |
||
59 | |||
60 | typedef struct nlm_args nlm_args; |
||
61 | |||
62 | /* |
||
63 | * Generic lockd result |
||
64 | */ |
||
65 | struct nlm_res { |
||
66 | struct nlm_cookie cookie; |
||
67 | u32 status; |
||
68 | struct nlm_lock lock; |
||
69 | }; |
||
70 | |||
71 | /* |
||
72 | * statd callback when client has rebooted |
||
73 | */ |
||
74 | struct nlm_reboot { |
||
75 | char * mon; |
||
76 | int len; |
||
77 | u32 state; |
||
78 | u32 addr; |
||
79 | u32 vers; |
||
80 | u32 proto; |
||
81 | }; |
||
82 | |||
83 | /* |
||
84 | * Contents of statd callback when monitored host rebooted |
||
85 | */ |
||
86 | #define NLMSVC_XDRSIZE sizeof(struct nlm_args) |
||
87 | |||
88 | int nlmsvc_decode_testargs(struct svc_rqst *, u32 *, struct nlm_args *); |
||
89 | int nlmsvc_encode_testres(struct svc_rqst *, u32 *, struct nlm_res *); |
||
90 | int nlmsvc_decode_lockargs(struct svc_rqst *, u32 *, struct nlm_args *); |
||
91 | int nlmsvc_decode_cancargs(struct svc_rqst *, u32 *, struct nlm_args *); |
||
92 | int nlmsvc_decode_unlockargs(struct svc_rqst *, u32 *, struct nlm_args *); |
||
93 | int nlmsvc_encode_res(struct svc_rqst *, u32 *, struct nlm_res *); |
||
94 | int nlmsvc_decode_res(struct svc_rqst *, u32 *, struct nlm_res *); |
||
95 | int nlmsvc_encode_void(struct svc_rqst *, u32 *, void *); |
||
96 | int nlmsvc_decode_void(struct svc_rqst *, u32 *, void *); |
||
97 | int nlmsvc_decode_shareargs(struct svc_rqst *, u32 *, struct nlm_args *); |
||
98 | int nlmsvc_encode_shareres(struct svc_rqst *, u32 *, struct nlm_res *); |
||
99 | int nlmsvc_decode_notify(struct svc_rqst *, u32 *, struct nlm_args *); |
||
100 | int nlmsvc_decode_reboot(struct svc_rqst *, u32 *, struct nlm_reboot *); |
||
101 | /* |
||
102 | int nlmclt_encode_testargs(struct rpc_rqst *, u32 *, struct nlm_args *); |
||
103 | int nlmclt_encode_lockargs(struct rpc_rqst *, u32 *, struct nlm_args *); |
||
104 | int nlmclt_encode_cancargs(struct rpc_rqst *, u32 *, struct nlm_args *); |
||
105 | int nlmclt_encode_unlockargs(struct rpc_rqst *, u32 *, struct nlm_args *); |
||
106 | */ |
||
107 | |||
108 | #endif /* LOCKD_XDR_H */ |