2009-12-04 19:49:00 -05:00
/* XDR types for nfsd. This is mainly a typing exercise. */
2005-04-16 15:20:36 -07:00
# ifndef LINUX_NFSD_H
# define LINUX_NFSD_H
# include <linux/vfs.h>
2009-12-03 20:30:56 +02:00
# include "nfsd.h"
2009-12-04 19:36:06 -05:00
# include "nfsfh.h"
2005-04-16 15:20:36 -07:00
struct nfsd_fhandle {
struct svc_fh fh ;
} ;
struct nfsd_sattrargs {
struct svc_fh fh ;
struct iattr attrs ;
} ;
struct nfsd_diropargs {
struct svc_fh fh ;
char * name ;
2007-11-01 16:57:04 -04:00
unsigned int len ;
2005-04-16 15:20:36 -07:00
} ;
struct nfsd_readargs {
struct svc_fh fh ;
__u32 offset ;
__u32 count ;
int vlen ;
} ;
struct nfsd_writeargs {
svc_fh fh ;
__u32 offset ;
int len ;
int vlen ;
} ;
struct nfsd_createargs {
struct svc_fh fh ;
char * name ;
2007-11-01 16:57:04 -04:00
unsigned int len ;
2005-04-16 15:20:36 -07:00
struct iattr attrs ;
} ;
struct nfsd_renameargs {
struct svc_fh ffh ;
char * fname ;
2007-11-01 16:57:04 -04:00
unsigned int flen ;
2005-04-16 15:20:36 -07:00
struct svc_fh tfh ;
char * tname ;
2007-11-01 16:57:04 -04:00
unsigned int tlen ;
2005-04-16 15:20:36 -07:00
} ;
struct nfsd_readlinkargs {
struct svc_fh fh ;
char * buffer ;
} ;
struct nfsd_linkargs {
struct svc_fh ffh ;
struct svc_fh tfh ;
char * tname ;
2007-11-01 16:57:04 -04:00
unsigned int tlen ;
2005-04-16 15:20:36 -07:00
} ;
struct nfsd_symlinkargs {
struct svc_fh ffh ;
char * fname ;
2007-11-01 16:57:04 -04:00
unsigned int flen ;
2005-04-16 15:20:36 -07:00
char * tname ;
2007-11-01 16:57:25 -04:00
unsigned int tlen ;
2005-04-16 15:20:36 -07:00
struct iattr attrs ;
} ;
struct nfsd_readdirargs {
struct svc_fh fh ;
__u32 cookie ;
__u32 count ;
2006-10-19 23:28:56 -07:00
__be32 * buffer ;
2005-04-16 15:20:36 -07:00
} ;
struct nfsd_attrstat {
struct svc_fh fh ;
2006-01-06 00:19:58 -08:00
struct kstat stat ;
2005-04-16 15:20:36 -07:00
} ;
struct nfsd_diropres {
struct svc_fh fh ;
2006-01-06 00:19:58 -08:00
struct kstat stat ;
2005-04-16 15:20:36 -07:00
} ;
struct nfsd_readlinkres {
int len ;
} ;
struct nfsd_readres {
struct svc_fh fh ;
unsigned long count ;
2006-01-06 00:19:58 -08:00
struct kstat stat ;
2005-04-16 15:20:36 -07:00
} ;
struct nfsd_readdirres {
int count ;
struct readdir_cd common ;
2006-10-19 23:28:56 -07:00
__be32 * buffer ;
2005-04-16 15:20:36 -07:00
int buflen ;
2006-10-19 23:28:56 -07:00
__be32 * offset ;
2005-04-16 15:20:36 -07:00
} ;
struct nfsd_statfsres {
struct kstatfs stats ;
} ;
/*
* Storage requirements for XDR arguments and results .
*/
union nfsd_xdrstore {
struct nfsd_sattrargs sattr ;
struct nfsd_diropargs dirop ;
struct nfsd_readargs read ;
struct nfsd_writeargs write ;
struct nfsd_createargs create ;
struct nfsd_renameargs rename ;
struct nfsd_linkargs link ;
struct nfsd_symlinkargs symlink ;
struct nfsd_readdirargs readdir ;
} ;
# define NFS2_SVC_XDRSIZE sizeof(union nfsd_xdrstore)
2006-10-19 23:28:56 -07:00
int nfssvc_decode_void ( struct svc_rqst * , __be32 * , void * ) ;
int nfssvc_decode_fhandle ( struct svc_rqst * , __be32 * , struct nfsd_fhandle * ) ;
int nfssvc_decode_sattrargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_sattrargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_decode_diropargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_diropargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_decode_readargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_readargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_decode_writeargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_writeargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_decode_createargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_createargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_decode_renameargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_renameargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_decode_readlinkargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_readlinkargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_decode_linkargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_linkargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_decode_symlinkargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_symlinkargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_decode_readdirargs ( struct svc_rqst * , __be32 * ,
2005-04-16 15:20:36 -07:00
struct nfsd_readdirargs * ) ;
2006-10-19 23:28:56 -07:00
int nfssvc_encode_void ( struct svc_rqst * , __be32 * , void * ) ;
int nfssvc_encode_attrstat ( struct svc_rqst * , __be32 * , struct nfsd_attrstat * ) ;
int nfssvc_encode_diropres ( struct svc_rqst * , __be32 * , struct nfsd_diropres * ) ;
int nfssvc_encode_readlinkres ( struct svc_rqst * , __be32 * , struct nfsd_readlinkres * ) ;
int nfssvc_encode_readres ( struct svc_rqst * , __be32 * , struct nfsd_readres * ) ;
int nfssvc_encode_statfsres ( struct svc_rqst * , __be32 * , struct nfsd_statfsres * ) ;
int nfssvc_encode_readdirres ( struct svc_rqst * , __be32 * , struct nfsd_readdirres * ) ;
2005-04-16 15:20:36 -07:00
2007-01-26 00:57:10 -08:00
int nfssvc_encode_entry ( void * , const char * name ,
int namlen , loff_t offset , u64 ino , unsigned int ) ;
2005-04-16 15:20:36 -07:00
2006-10-19 23:28:56 -07:00
int nfssvc_release_fhandle ( struct svc_rqst * , __be32 * , struct nfsd_fhandle * ) ;
2005-04-16 15:20:36 -07:00
2005-06-22 17:16:26 +00:00
/* Helper functions for NFSv2 ACL code */
2006-10-19 23:28:56 -07:00
__be32 * nfs2svc_encode_fattr ( struct svc_rqst * rqstp , __be32 * p , struct svc_fh * fhp ) ;
__be32 * nfs2svc_decode_fh ( __be32 * p , struct svc_fh * fhp ) ;
2005-06-22 17:16:26 +00:00
2005-04-16 15:20:36 -07:00
# endif /* LINUX_NFSD_H */