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