1 /* 2 * include/linux/nfsd/nfsfh.h 3 * 4 * This file describes the layout of the file handles as passed 5 * over the wire. 6 * 7 * Earlier versions of knfsd used to sign file handles using keyed MD5 8 * or SHA. I've removed this code, because it doesn't give you more 9 * security than blocking external access to port 2049 on your firewall. 10 * 11 * Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de> 12 */ 13 #ifndef _LINUX_NFSD_FH_H 14 #define _LINUX_NFSD_FH_H 15 16 # include <linux/sunrpc/svc.h> 17 #include <uapi/linux/nfsd/nfsfh.h> 18 ino_t_to_u32(ino_t ino)19static inline __u32 ino_t_to_u32(ino_t ino) 20 { 21 return (__u32) ino; 22 } 23 u32_to_ino_t(__u32 uino)24static inline ino_t u32_to_ino_t(__u32 uino) 25 { 26 return (ino_t) uino; 27 } 28 29 /* 30 * This is the internal representation of an NFS handle used in knfsd. 31 * pre_mtime/post_version will be used to support wcc_attr's in NFSv3. 32 */ 33 typedef struct svc_fh { 34 struct knfsd_fh fh_handle; /* FH data */ 35 struct dentry * fh_dentry; /* validated dentry */ 36 struct svc_export * fh_export; /* export pointer */ 37 int fh_maxsize; /* max size for fh_handle */ 38 39 unsigned char fh_locked; /* inode locked by us */ 40 unsigned char fh_want_write; /* remount protection taken */ 41 42 #ifdef CONFIG_NFSD_V3 43 unsigned char fh_post_saved; /* post-op attrs saved */ 44 unsigned char fh_pre_saved; /* pre-op attrs saved */ 45 46 /* Pre-op attributes saved during fh_lock */ 47 __u64 fh_pre_size; /* size before operation */ 48 struct timespec fh_pre_mtime; /* mtime before oper */ 49 struct timespec fh_pre_ctime; /* ctime before oper */ 50 /* 51 * pre-op nfsv4 change attr: note must check IS_I_VERSION(inode) 52 * to find out if it is valid. 53 */ 54 u64 fh_pre_change; 55 56 /* Post-op attributes saved in fh_unlock */ 57 struct kstat fh_post_attr; /* full attrs after operation */ 58 u64 fh_post_change; /* nfsv4 change; see above */ 59 #endif /* CONFIG_NFSD_V3 */ 60 61 } svc_fh; 62 63 #endif /* _LINUX_NFSD_FH_H */ 64