64 строки
1.8 KiB
C
64 строки
1.8 KiB
C
/*
|
|
* include/linux/nfsd/nfsfh.h
|
|
*
|
|
* This file describes the layout of the file handles as passed
|
|
* over the wire.
|
|
*
|
|
* Earlier versions of knfsd used to sign file handles using keyed MD5
|
|
* or SHA. I've removed this code, because it doesn't give you more
|
|
* security than blocking external access to port 2049 on your firewall.
|
|
*
|
|
* Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de>
|
|
*/
|
|
#ifndef _LINUX_NFSD_FH_H
|
|
#define _LINUX_NFSD_FH_H
|
|
|
|
# include <linux/sunrpc/svc.h>
|
|
#include <uapi/linux/nfsd/nfsfh.h>
|
|
|
|
static inline __u32 ino_t_to_u32(ino_t ino)
|
|
{
|
|
return (__u32) ino;
|
|
}
|
|
|
|
static inline ino_t u32_to_ino_t(__u32 uino)
|
|
{
|
|
return (ino_t) uino;
|
|
}
|
|
|
|
/*
|
|
* This is the internal representation of an NFS handle used in knfsd.
|
|
* pre_mtime/post_version will be used to support wcc_attr's in NFSv3.
|
|
*/
|
|
typedef struct svc_fh {
|
|
struct knfsd_fh fh_handle; /* FH data */
|
|
struct dentry * fh_dentry; /* validated dentry */
|
|
struct svc_export * fh_export; /* export pointer */
|
|
int fh_maxsize; /* max size for fh_handle */
|
|
|
|
unsigned char fh_locked; /* inode locked by us */
|
|
unsigned char fh_want_write; /* remount protection taken */
|
|
|
|
#ifdef CONFIG_NFSD_V3
|
|
unsigned char fh_post_saved; /* post-op attrs saved */
|
|
unsigned char fh_pre_saved; /* pre-op attrs saved */
|
|
|
|
/* Pre-op attributes saved during fh_lock */
|
|
__u64 fh_pre_size; /* size before operation */
|
|
struct timespec fh_pre_mtime; /* mtime before oper */
|
|
struct timespec fh_pre_ctime; /* ctime before oper */
|
|
/*
|
|
* pre-op nfsv4 change attr: note must check IS_I_VERSION(inode)
|
|
* to find out if it is valid.
|
|
*/
|
|
u64 fh_pre_change;
|
|
|
|
/* Post-op attributes saved in fh_unlock */
|
|
struct kstat fh_post_attr; /* full attrs after operation */
|
|
u64 fh_post_change; /* nfsv4 change; see above */
|
|
#endif /* CONFIG_NFSD_V3 */
|
|
|
|
} svc_fh;
|
|
|
|
#endif /* _LINUX_NFSD_FH_H */
|