xref: /openbmc/linux/fs/nfs/callback.h (revision 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2)
1*1da177e4SLinus Torvalds /*
2*1da177e4SLinus Torvalds  * linux/fs/nfs/callback.h
3*1da177e4SLinus Torvalds  *
4*1da177e4SLinus Torvalds  * Copyright (C) 2004 Trond Myklebust
5*1da177e4SLinus Torvalds  *
6*1da177e4SLinus Torvalds  * NFSv4 callback definitions
7*1da177e4SLinus Torvalds  */
8*1da177e4SLinus Torvalds #ifndef __LINUX_FS_NFS_CALLBACK_H
9*1da177e4SLinus Torvalds #define __LINUX_FS_NFS_CALLBACK_H
10*1da177e4SLinus Torvalds 
11*1da177e4SLinus Torvalds #define NFS4_CALLBACK 0x40000000
12*1da177e4SLinus Torvalds #define NFS4_CALLBACK_XDRSIZE 2048
13*1da177e4SLinus Torvalds #define NFS4_CALLBACK_BUFSIZE (1024 + NFS4_CALLBACK_XDRSIZE)
14*1da177e4SLinus Torvalds 
15*1da177e4SLinus Torvalds enum nfs4_callback_procnum {
16*1da177e4SLinus Torvalds 	CB_NULL = 0,
17*1da177e4SLinus Torvalds 	CB_COMPOUND = 1,
18*1da177e4SLinus Torvalds };
19*1da177e4SLinus Torvalds 
20*1da177e4SLinus Torvalds enum nfs4_callback_opnum {
21*1da177e4SLinus Torvalds 	OP_CB_GETATTR = 3,
22*1da177e4SLinus Torvalds 	OP_CB_RECALL  = 4,
23*1da177e4SLinus Torvalds 	OP_CB_ILLEGAL = 10044,
24*1da177e4SLinus Torvalds };
25*1da177e4SLinus Torvalds 
26*1da177e4SLinus Torvalds struct cb_compound_hdr_arg {
27*1da177e4SLinus Torvalds 	int taglen;
28*1da177e4SLinus Torvalds 	const char *tag;
29*1da177e4SLinus Torvalds 	unsigned int callback_ident;
30*1da177e4SLinus Torvalds 	unsigned nops;
31*1da177e4SLinus Torvalds };
32*1da177e4SLinus Torvalds 
33*1da177e4SLinus Torvalds struct cb_compound_hdr_res {
34*1da177e4SLinus Torvalds 	uint32_t *status;
35*1da177e4SLinus Torvalds 	int taglen;
36*1da177e4SLinus Torvalds 	const char *tag;
37*1da177e4SLinus Torvalds 	uint32_t *nops;
38*1da177e4SLinus Torvalds };
39*1da177e4SLinus Torvalds 
40*1da177e4SLinus Torvalds struct cb_getattrargs {
41*1da177e4SLinus Torvalds 	struct sockaddr_in *addr;
42*1da177e4SLinus Torvalds 	struct nfs_fh fh;
43*1da177e4SLinus Torvalds 	uint32_t bitmap[2];
44*1da177e4SLinus Torvalds };
45*1da177e4SLinus Torvalds 
46*1da177e4SLinus Torvalds struct cb_getattrres {
47*1da177e4SLinus Torvalds 	uint32_t status;
48*1da177e4SLinus Torvalds 	uint32_t bitmap[2];
49*1da177e4SLinus Torvalds 	uint64_t size;
50*1da177e4SLinus Torvalds 	uint64_t change_attr;
51*1da177e4SLinus Torvalds 	struct timespec ctime;
52*1da177e4SLinus Torvalds 	struct timespec mtime;
53*1da177e4SLinus Torvalds };
54*1da177e4SLinus Torvalds 
55*1da177e4SLinus Torvalds struct cb_recallargs {
56*1da177e4SLinus Torvalds 	struct sockaddr_in *addr;
57*1da177e4SLinus Torvalds 	struct nfs_fh fh;
58*1da177e4SLinus Torvalds 	nfs4_stateid stateid;
59*1da177e4SLinus Torvalds 	uint32_t truncate;
60*1da177e4SLinus Torvalds };
61*1da177e4SLinus Torvalds 
62*1da177e4SLinus Torvalds extern unsigned nfs4_callback_getattr(struct cb_getattrargs *args, struct cb_getattrres *res);
63*1da177e4SLinus Torvalds extern unsigned nfs4_callback_recall(struct cb_recallargs *args, void *dummy);
64*1da177e4SLinus Torvalds 
65*1da177e4SLinus Torvalds extern int nfs_callback_up(void);
66*1da177e4SLinus Torvalds extern int nfs_callback_down(void);
67*1da177e4SLinus Torvalds 
68*1da177e4SLinus Torvalds extern unsigned short nfs_callback_tcpport;
69*1da177e4SLinus Torvalds 
70*1da177e4SLinus Torvalds #endif /* __LINUX_FS_NFS_CALLBACK_H */
71