2005-04-17 02:20:36 +04:00
/*
* linux / fs / nfs / callback . h
*
* Copyright ( C ) 2004 Trond Myklebust
*
* NFSv4 callback definitions
*/
# ifndef __LINUX_FS_NFS_CALLBACK_H
# define __LINUX_FS_NFS_CALLBACK_H
# define NFS4_CALLBACK 0x40000000
# define NFS4_CALLBACK_XDRSIZE 2048
# define NFS4_CALLBACK_BUFSIZE (1024 + NFS4_CALLBACK_XDRSIZE)
enum nfs4_callback_procnum {
CB_NULL = 0 ,
CB_COMPOUND = 1 ,
} ;
enum nfs4_callback_opnum {
OP_CB_GETATTR = 3 ,
OP_CB_RECALL = 4 ,
OP_CB_ILLEGAL = 10044 ,
} ;
struct cb_compound_hdr_arg {
2007-05-15 01:20:41 +04:00
unsigned int taglen ;
2005-04-17 02:20:36 +04:00
const char * tag ;
unsigned int callback_ident ;
unsigned nops ;
} ;
struct cb_compound_hdr_res {
2006-10-20 10:28:51 +04:00
__be32 * status ;
2007-05-15 01:20:41 +04:00
unsigned int taglen ;
2005-04-17 02:20:36 +04:00
const char * tag ;
2006-10-20 10:28:51 +04:00
__be32 * nops ;
2005-04-17 02:20:36 +04:00
} ;
struct cb_getattrargs {
2007-12-10 22:58:22 +03:00
struct sockaddr * addr ;
2005-04-17 02:20:36 +04:00
struct nfs_fh fh ;
uint32_t bitmap [ 2 ] ;
} ;
struct cb_getattrres {
2006-10-20 10:28:50 +04:00
__be32 status ;
2005-04-17 02:20:36 +04:00
uint32_t bitmap [ 2 ] ;
uint64_t size ;
uint64_t change_attr ;
struct timespec ctime ;
struct timespec mtime ;
} ;
struct cb_recallargs {
2007-12-10 22:58:29 +03:00
struct sockaddr * addr ;
2005-04-17 02:20:36 +04:00
struct nfs_fh fh ;
nfs4_stateid stateid ;
uint32_t truncate ;
} ;
2006-10-20 10:28:50 +04:00
extern __be32 nfs4_callback_getattr ( struct cb_getattrargs * args , struct cb_getattrres * res ) ;
extern __be32 nfs4_callback_recall ( struct cb_recallargs * args , void * dummy ) ;
2005-04-17 02:20:36 +04:00
2006-08-23 04:06:08 +04:00
# ifdef CONFIG_NFS_V4
2005-04-17 02:20:36 +04:00
extern int nfs_callback_up ( void ) ;
2006-08-23 04:06:08 +04:00
extern void nfs_callback_down ( void ) ;
# else
# define nfs_callback_up() (0)
# define nfs_callback_down() do {} while(0)
# endif
2005-04-17 02:20:36 +04:00
2006-01-03 11:55:41 +03:00
extern unsigned int nfs_callback_set_tcpport ;
2005-04-17 02:20:36 +04:00
extern unsigned short nfs_callback_tcpport ;
# endif /* __LINUX_FS_NFS_CALLBACK_H */