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