xref: /openbmc/linux/fs/nfs/callback.h (revision a72b44222d222749d54b3e370d825094352e389f)
11da177e4SLinus Torvalds /*
21da177e4SLinus Torvalds  * linux/fs/nfs/callback.h
31da177e4SLinus Torvalds  *
41da177e4SLinus Torvalds  * Copyright (C) 2004 Trond Myklebust
51da177e4SLinus Torvalds  *
61da177e4SLinus Torvalds  * NFSv4 callback definitions
71da177e4SLinus Torvalds  */
81da177e4SLinus Torvalds #ifndef __LINUX_FS_NFS_CALLBACK_H
91da177e4SLinus Torvalds #define __LINUX_FS_NFS_CALLBACK_H
101da177e4SLinus Torvalds 
111da177e4SLinus Torvalds #define NFS4_CALLBACK 0x40000000
121da177e4SLinus Torvalds #define NFS4_CALLBACK_XDRSIZE 2048
131da177e4SLinus Torvalds #define NFS4_CALLBACK_BUFSIZE (1024 + NFS4_CALLBACK_XDRSIZE)
141da177e4SLinus Torvalds 
151da177e4SLinus Torvalds enum nfs4_callback_procnum {
161da177e4SLinus Torvalds 	CB_NULL = 0,
171da177e4SLinus Torvalds 	CB_COMPOUND = 1,
181da177e4SLinus Torvalds };
191da177e4SLinus Torvalds 
201da177e4SLinus Torvalds enum nfs4_callback_opnum {
211da177e4SLinus Torvalds 	OP_CB_GETATTR = 3,
221da177e4SLinus Torvalds 	OP_CB_RECALL  = 4,
231da177e4SLinus Torvalds 	OP_CB_ILLEGAL = 10044,
241da177e4SLinus Torvalds };
251da177e4SLinus Torvalds 
261da177e4SLinus Torvalds struct cb_compound_hdr_arg {
271da177e4SLinus Torvalds 	int taglen;
281da177e4SLinus Torvalds 	const char *tag;
291da177e4SLinus Torvalds 	unsigned int callback_ident;
301da177e4SLinus Torvalds 	unsigned nops;
311da177e4SLinus Torvalds };
321da177e4SLinus Torvalds 
331da177e4SLinus Torvalds struct cb_compound_hdr_res {
341da177e4SLinus Torvalds 	uint32_t *status;
351da177e4SLinus Torvalds 	int taglen;
361da177e4SLinus Torvalds 	const char *tag;
371da177e4SLinus Torvalds 	uint32_t *nops;
381da177e4SLinus Torvalds };
391da177e4SLinus Torvalds 
401da177e4SLinus Torvalds struct cb_getattrargs {
411da177e4SLinus Torvalds 	struct sockaddr_in *addr;
421da177e4SLinus Torvalds 	struct nfs_fh fh;
431da177e4SLinus Torvalds 	uint32_t bitmap[2];
441da177e4SLinus Torvalds };
451da177e4SLinus Torvalds 
461da177e4SLinus Torvalds struct cb_getattrres {
471da177e4SLinus Torvalds 	uint32_t status;
481da177e4SLinus Torvalds 	uint32_t bitmap[2];
491da177e4SLinus Torvalds 	uint64_t size;
501da177e4SLinus Torvalds 	uint64_t change_attr;
511da177e4SLinus Torvalds 	struct timespec ctime;
521da177e4SLinus Torvalds 	struct timespec mtime;
531da177e4SLinus Torvalds };
541da177e4SLinus Torvalds 
551da177e4SLinus Torvalds struct cb_recallargs {
561da177e4SLinus Torvalds 	struct sockaddr_in *addr;
571da177e4SLinus Torvalds 	struct nfs_fh fh;
581da177e4SLinus Torvalds 	nfs4_stateid stateid;
591da177e4SLinus Torvalds 	uint32_t truncate;
601da177e4SLinus Torvalds };
611da177e4SLinus Torvalds 
621da177e4SLinus Torvalds extern unsigned nfs4_callback_getattr(struct cb_getattrargs *args, struct cb_getattrres *res);
631da177e4SLinus Torvalds extern unsigned nfs4_callback_recall(struct cb_recallargs *args, void *dummy);
641da177e4SLinus Torvalds 
651da177e4SLinus Torvalds extern int nfs_callback_up(void);
661da177e4SLinus Torvalds extern int nfs_callback_down(void);
671da177e4SLinus Torvalds 
68*a72b4422STrond Myklebust extern unsigned int nfs_callback_set_tcpport;
691da177e4SLinus Torvalds extern unsigned short nfs_callback_tcpport;
701da177e4SLinus Torvalds 
711da177e4SLinus Torvalds #endif /* __LINUX_FS_NFS_CALLBACK_H */
72