| 
									
										
										
										
											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 */ | 
					
						
							| 
									
										
										
										
											2013-02-01 15:13:04 -05:00
										 |  |  | __be32 *nfs2svc_encode_fattr(struct svc_rqst *rqstp, __be32 *p, struct svc_fh *fhp, struct kstat *stat); | 
					
						
							| 
									
										
										
										
											2006-10-19 23:28:56 -07:00
										 |  |  | __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 */
 |