X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=support%2Finclude%2Fnfs%2Fnfs.h;h=937c1be633eeabb65555dd86b5d12ce039a782e1;hp=0cfed07bc4410b3300f87945ca30a3154677b96f;hb=93a8e35ff8def529f41b82a13440f2e9b46d0dbd;hpb=6a66bb69d8fdb43f0abb58fd74566461f0e96633 diff --git a/support/include/nfs/nfs.h b/support/include/nfs/nfs.h index 0cfed07..937c1be 100644 --- a/support/include/nfs/nfs.h +++ b/support/include/nfs/nfs.h @@ -7,36 +7,17 @@ #include #include -struct dentry; +#define NFS3_FHSIZE 64 +#define NFS_FHSIZE 32 -/* - * This is the new "dentry style" Linux NFSv2 file handle. - * - * The xino and xdev fields are currently used to transport the - * ino/dev of the exported inode. - */ -struct nfs_fhbase { - struct dentry * fb_dentry; /* dentry cookie */ - u_int32_t fb_ino; /* our inode number */ - u_int32_t fb_dirino; /* dir inode number */ - u_int32_t fb_dev; /* our device */ - u_int32_t fb_xdev; - u_int32_t fb_xino; +struct nfs_fh_len { + int fh_size; + u_int8_t fh_handle[NFS3_FHSIZE]; }; - -#define NFS_FH_PADDING (NFS_FHSIZE - sizeof(struct nfs_fhbase)) -struct knfs_fh { - struct nfs_fhbase fh_base; - u_int8_t fh_cookie[NFS_FH_PADDING]; +struct nfs_fh_old { + u_int8_t fh_handle[NFS_FHSIZE]; }; -#define fh_dcookie fh_base.fb_dentry -#define fh_ino fh_base.fb_ino -#define fh_dirino fh_base.fb_dirino -#define fh_dev fh_base.fb_dev -#define fh_xdev fh_base.fb_xdev -#define fh_xino fh_base.fb_xino - /* * Version of the syscall interface */ @@ -53,6 +34,7 @@ struct knfs_fh { #define NFSCTL_UGIDUPDATE 5 /* update a client's uid/gid map. */ #define NFSCTL_GETFH 6 /* get an fh (used by mountd) */ #define NFSCTL_GETFD 7 /* get an fh by path (used by mountd) */ +#define NFSCTL_GETFS 8 /* get an fh by path with max size (used by mountd) */ /* Above this is for lockd. */ #define NFSCTL_LOCKD 0x10000 @@ -113,6 +95,13 @@ struct nfsctl_fdparm { int gd_version; }; +/* GETFS - GET Filehandle with Size */ +struct nfsctl_fsparm { + struct sockaddr gd_addr; + char gd_path[NFS_MAXPATHLEN+1]; + int gd_maxlen; +}; + /* * This is the argument union. */ @@ -125,7 +114,7 @@ struct nfsctl_arg { struct nfsctl_uidmap u_umap; struct nfsctl_fhparm u_getfh; struct nfsctl_fdparm u_getfd; - unsigned int u_debug; + struct nfsctl_fsparm u_getfs; } u; #define ca_svc u.u_svc #define ca_client u.u_client @@ -133,13 +122,13 @@ struct nfsctl_arg { #define ca_umap u.u_umap #define ca_getfh u.u_getfh #define ca_getfd u.u_getfd +#define ca_getfs u.u_getfs #define ca_authd u.u_authd -#define ca_debug u.u_debug }; union nfsctl_res { - struct knfs_fh cr_getfh; - unsigned int cr_debug; + struct nfs_fh_old cr_getfh; + struct nfs_fh_len cr_getfs; }; #endif /* _NFS_NFS_H */