⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vfs.h

📁 samba-3.0.22.tar.gz 编译smb服务器的源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*    Unix SMB/CIFS implementation.   VFS structures and parameters   Copyright (C) Jeremy Allison                         1999-2005   Copyright (C) Tim Potter				1999   Copyright (C) Alexander Bokovoy			2002-2005   Copyright (C) Stefan (metze) Metzmacher		2003      This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.      This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.      You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.   This work was sponsored by Optifacio Software Services, Inc.*/#ifndef _VFS_H#define _VFS_H/* Avoid conflict with an AIX include file */#ifdef vfs_ops#undef vfs_ops#endif/* * As we're now (thanks Andrew ! :-) using file_structs and connection * structs in the vfs - then anyone writing a vfs must include includes.h... *//* * This next constant specifies the version number of the VFS interface * this smbd will load. Increment this if *ANY* changes are made to the * vfs_ops below. JRA. * * If you change anything here, please also update modules/vfs_full_audit.c. * VL. *//* Changed to version 2 for CIFS UNIX extensions (mknod and link added). JRA. *//* Changed to version 3 for POSIX acl extensions. JRA. *//* Changed to version 4 for cascaded VFS interface. Alexander Bokovoy. *//* Changed to version 5 for sendfile addition. JRA. *//* Changed to version 6 for the new module system, fixed cascading and quota functions. --metze *//* Changed to version 7 to include the get_nt_acl info parameter. JRA. *//* Changed to version 8 includes EA calls. JRA. *//* Changed to version 9 to include the get_shadow_data call. --metze *//* Changed to version 10 to include pread/pwrite calls. *//* Changed to version 11 to include seekdir/telldir/rewinddir calls. JRA *//* Changed to version 12 to add mask and attributes to opendir(). JRA    Also include aio calls. JRA. *//* Changed to version 13 as the internal structure of files_struct has changed. JRA *//* Changed to version 14 as the we had to change DIR to SMB_STRUCT_DIR. JRA *//* Changed to version 15 as the we added the statvfs call. JRA */#define SMB_VFS_INTERFACE_VERSION 15/* to bug old modules which are trying to compile with the old functions */#define vfs_init __ERROR_please_port_this_module_to_SMB_VFS_INTERFACE_VERSION_8_donot_use_vfs_init_anymore(void) { __ERROR_please_port_this_module_to_SMB_VFS_INTERFACE_VERSION_8_donot_use_vfs_init_anymore };#define lp_parm_string __ERROR_please_port_lp_parm_string_to_lp_parm_const_string_or_lp_parm_talloc_string { \  __ERROR_please_port_lp_parm_string_to_lp_parm_const_string_or_lp_parm_talloc_string };#define lp_vfs_options __ERROR_please_donot_use_lp_vfs_options_anymore_use_lp_parm_xxxx_functions_instead { \  __ERROR_please_donot_use_lp_vfs_options_anymore_use_lp_parm_xxxx_functions_instead };/*    All intercepted VFS operations must be declared as static functions inside module source    in order to keep smbd namespace unpolluted. See source of audit, extd_audit, fake_perms and recycle    example VFS modules for more details.*//* VFS operations structure */struct vfs_handle_struct;struct connection_struct;struct files_struct;struct security_descriptor_info;struct vfs_statvfs_struct;/*    Available VFS operations. These values must be in sync with vfs_ops struct    (struct vfs_fn_pointers and struct vfs_handle_pointers inside of struct vfs_ops).     In particular, if new operations are added to vfs_ops, appropriate constants    should be added to vfs_op_type so that order of them kept same as in vfs_ops.*/typedef enum _vfs_op_type {	SMB_VFS_OP_NOOP = -1,		/* Disk operations */	SMB_VFS_OP_CONNECT = 0,	SMB_VFS_OP_DISCONNECT,	SMB_VFS_OP_DISK_FREE,	SMB_VFS_OP_GET_QUOTA,	SMB_VFS_OP_SET_QUOTA,	SMB_VFS_OP_GET_SHADOW_COPY_DATA,	SMB_VFS_OP_STATVFS,	/* Directory operations */	SMB_VFS_OP_OPENDIR,	SMB_VFS_OP_READDIR,	SMB_VFS_OP_SEEKDIR,	SMB_VFS_OP_TELLDIR,	SMB_VFS_OP_REWINDDIR,	SMB_VFS_OP_MKDIR,	SMB_VFS_OP_RMDIR,	SMB_VFS_OP_CLOSEDIR,	/* File operations */	SMB_VFS_OP_OPEN,	SMB_VFS_OP_CLOSE,	SMB_VFS_OP_READ,	SMB_VFS_OP_PREAD,	SMB_VFS_OP_WRITE,	SMB_VFS_OP_PWRITE,	SMB_VFS_OP_LSEEK,	SMB_VFS_OP_SENDFILE,	SMB_VFS_OP_RENAME,	SMB_VFS_OP_FSYNC,	SMB_VFS_OP_STAT,	SMB_VFS_OP_FSTAT,	SMB_VFS_OP_LSTAT,	SMB_VFS_OP_UNLINK,	SMB_VFS_OP_CHMOD,	SMB_VFS_OP_FCHMOD,	SMB_VFS_OP_CHOWN,	SMB_VFS_OP_FCHOWN,	SMB_VFS_OP_CHDIR,	SMB_VFS_OP_GETWD,	SMB_VFS_OP_UTIME,	SMB_VFS_OP_FTRUNCATE,	SMB_VFS_OP_LOCK,	SMB_VFS_OP_SYMLINK,	SMB_VFS_OP_READLINK,	SMB_VFS_OP_LINK,	SMB_VFS_OP_MKNOD,	SMB_VFS_OP_REALPATH,	/* NT ACL operations. */	SMB_VFS_OP_FGET_NT_ACL,	SMB_VFS_OP_GET_NT_ACL,	SMB_VFS_OP_FSET_NT_ACL,	SMB_VFS_OP_SET_NT_ACL,	/* POSIX ACL operations. */	SMB_VFS_OP_CHMOD_ACL,	SMB_VFS_OP_FCHMOD_ACL,	SMB_VFS_OP_SYS_ACL_GET_ENTRY,	SMB_VFS_OP_SYS_ACL_GET_TAG_TYPE,	SMB_VFS_OP_SYS_ACL_GET_PERMSET,	SMB_VFS_OP_SYS_ACL_GET_QUALIFIER,	SMB_VFS_OP_SYS_ACL_GET_FILE,	SMB_VFS_OP_SYS_ACL_GET_FD,	SMB_VFS_OP_SYS_ACL_CLEAR_PERMS,	SMB_VFS_OP_SYS_ACL_ADD_PERM,	SMB_VFS_OP_SYS_ACL_TO_TEXT,	SMB_VFS_OP_SYS_ACL_INIT,	SMB_VFS_OP_SYS_ACL_CREATE_ENTRY,	SMB_VFS_OP_SYS_ACL_SET_TAG_TYPE,	SMB_VFS_OP_SYS_ACL_SET_QUALIFIER,	SMB_VFS_OP_SYS_ACL_SET_PERMSET,	SMB_VFS_OP_SYS_ACL_VALID,	SMB_VFS_OP_SYS_ACL_SET_FILE,	SMB_VFS_OP_SYS_ACL_SET_FD,	SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE,	SMB_VFS_OP_SYS_ACL_GET_PERM,	SMB_VFS_OP_SYS_ACL_FREE_TEXT,	SMB_VFS_OP_SYS_ACL_FREE_ACL,	SMB_VFS_OP_SYS_ACL_FREE_QUALIFIER,		/* EA operations. */	SMB_VFS_OP_GETXATTR,	SMB_VFS_OP_LGETXATTR,	SMB_VFS_OP_FGETXATTR,	SMB_VFS_OP_LISTXATTR,	SMB_VFS_OP_LLISTXATTR,	SMB_VFS_OP_FLISTXATTR,	SMB_VFS_OP_REMOVEXATTR,	SMB_VFS_OP_LREMOVEXATTR,	SMB_VFS_OP_FREMOVEXATTR,	SMB_VFS_OP_SETXATTR,	SMB_VFS_OP_LSETXATTR,	SMB_VFS_OP_FSETXATTR,	/* aio operations */	SMB_VFS_OP_AIO_READ,	SMB_VFS_OP_AIO_WRITE,	SMB_VFS_OP_AIO_RETURN,	SMB_VFS_OP_AIO_CANCEL,	SMB_VFS_OP_AIO_ERROR,	SMB_VFS_OP_AIO_FSYNC,	SMB_VFS_OP_AIO_SUSPEND,	/* This should always be last enum value */		SMB_VFS_OP_LAST} vfs_op_type;/*    Please keep vfs_op_type, struct vfs_fn_pointers and struct vfs_handles_pointers in sync.*/struct vfs_ops {	struct vfs_fn_pointers {		/* Disk operations */				int (*connect_fn)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *service, const char *user);		void (*disconnect)(struct vfs_handle_struct *handle, struct connection_struct *conn);		SMB_BIG_UINT (*disk_free)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, BOOL small_query, SMB_BIG_UINT *bsize, 			SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize);		int (*get_quota)(struct vfs_handle_struct *handle, struct connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt);		int (*set_quota)(struct vfs_handle_struct *handle, struct connection_struct *conn, enum SMB_QUOTA_TYPE qtype, unid_t id, SMB_DISK_QUOTA *qt);		int (*get_shadow_copy_data)(struct vfs_handle_struct *handle, struct files_struct *fsp, SHADOW_COPY_DATA *shadow_copy_data, BOOL labels);		int (*statvfs)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, struct vfs_statvfs_struct *statbuf);				/* Directory operations */				SMB_STRUCT_DIR *(*opendir)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *fname, const char *mask, uint32 attributes);		SMB_STRUCT_DIRENT *(*readdir)(struct vfs_handle_struct *handle, struct connection_struct *conn, SMB_STRUCT_DIR *dirp);		void (*seekdir)(struct vfs_handle_struct *handle, struct connection_struct *conn, SMB_STRUCT_DIR *dirp, long offset);		long (*telldir)(struct vfs_handle_struct *handle, struct connection_struct *conn, SMB_STRUCT_DIR *dirp);		void (*rewind_dir)(struct vfs_handle_struct *handle, struct connection_struct *conn, SMB_STRUCT_DIR *dirp);		int (*mkdir)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, mode_t mode);		int (*rmdir)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path);		int (*closedir)(struct vfs_handle_struct *handle, struct connection_struct *conn, SMB_STRUCT_DIR *dir);				/* File operations */				int (*open)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *fname, int flags, mode_t mode);		int (*close_fn)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd);		ssize_t (*read)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, void *data, size_t n);		ssize_t (*pread)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, void *data, size_t n, SMB_OFF_T offset);		ssize_t (*write)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, const void *data, size_t n);		ssize_t (*pwrite)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, const void *data, size_t n, SMB_OFF_T offset);		SMB_OFF_T (*lseek)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, SMB_OFF_T offset, int whence);		ssize_t (*sendfile)(struct vfs_handle_struct *handle, int tofd, files_struct *fsp, int fromfd, const DATA_BLOB *header, SMB_OFF_T offset, size_t count);		int (*rename)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *oldname, const char *newname);		int (*fsync)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd);		int (*stat)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf);		int (*fstat)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf);		int (*lstat)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, SMB_STRUCT_STAT *sbuf);		int (*unlink)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path);		int (*chmod)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, mode_t mode);		int (*fchmod)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, mode_t mode);		int (*chown)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, uid_t uid, gid_t gid);		int (*fchown)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, uid_t uid, gid_t gid);		int (*chdir)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path);		char *(*getwd)(struct vfs_handle_struct *handle, struct connection_struct *conn, char *buf);		int (*utime)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, struct utimbuf *times);		int (*ftruncate)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, SMB_OFF_T offset);		BOOL (*lock)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type);		int (*symlink)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *oldpath, const char *newpath);		int (*readlink)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, char *buf, size_t bufsiz);		int (*link)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *oldpath, const char *newpath);		int (*mknod)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, mode_t mode, SMB_DEV_T dev);		char *(*realpath)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *path, char *resolved_path);				/* NT ACL operations. */				size_t (*fget_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd,  uint32 security_info, struct security_descriptor_info **ppdesc);		size_t (*get_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, const char *name,  uint32 security_info, struct security_descriptor_info **ppdesc);		BOOL (*fset_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, uint32 security_info_sent, struct security_descriptor_info *psd);		BOOL (*set_nt_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, const char *name, uint32 security_info_sent, struct security_descriptor_info *psd);				/* POSIX ACL operations. */				int (*chmod_acl)(struct vfs_handle_struct *handle, struct connection_struct *conn, const char *name, mode_t mode);		int (*fchmod_acl)(struct vfs_handle_struct *handle, struct files_struct *fsp, int fd, mode_t mode);				int (*sys_acl_get_entry)(struct vfs_handle_struct *handle, struct connection_struct *conn, SMB_ACL_T theacl, int entry_id, SMB_ACL_ENTRY_T *entry_p);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -