2 Unix SMB/Netbios implementation.
4 VFS structures and parameters
5 Copyright (C) Tim Potter 1999
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 /* Avoid conflict with an AIX include file */
32 * As we're now (thanks Andrew ! :-) using file_structs and connection
33 * structs in the vfs - then anyone writing a vfs must include includes.h...
37 * This next constant specifies the version number of the VFS interface
38 * this smbd will load. Increment this if *ANY* changes are made to the
42 #define SMB_VFS_INTERFACE_VERSION 1
44 /* VFS operations structure */
46 struct connection_struct
;
48 struct security_descriptor_info
;
54 int (*connect
)(struct connection_struct
*conn
, char *service
, char *user
);
55 void (*disconnect
)(struct connection_struct
*conn
);
56 SMB_BIG_UINT (*disk_free
)(struct connection_struct
*conn
, char *path
, BOOL small_query
, SMB_BIG_UINT
*bsize
,
57 SMB_BIG_UINT
*dfree
, SMB_BIG_UINT
*dsize
);
59 /* Directory operations */
61 DIR *(*opendir
)(struct connection_struct
*conn
, char *fname
);
62 struct dirent
*(*readdir
)(struct connection_struct
*conn
, DIR *dirp
);
63 int (*mkdir
)(struct connection_struct
*conn
, char *path
, mode_t mode
);
64 int (*rmdir
)(struct connection_struct
*conn
, char *path
);
65 int (*closedir
)(struct connection_struct
*conn
, DIR *dir
);
69 int (*open
)(struct connection_struct
*conn
, char *fname
, int flags
, mode_t mode
);
70 int (*close
)(struct files_struct
*fsp
, int fd
);
71 ssize_t (*read
)(struct files_struct
*fsp
, int fd
, char *data
, size_t n
);
72 ssize_t (*write
)(struct files_struct
*fsp
, int fd
, char *data
, size_t n
);
73 SMB_OFF_T (*lseek
)(struct files_struct
*fsp
, int filedes
, SMB_OFF_T offset
, int whence
);
74 int (*rename
)(struct connection_struct
*conn
, char *old
, char *new);
75 int (*fsync
)(struct files_struct
*fsp
, int fd
);
76 int (*stat
)(struct connection_struct
*conn
, char *fname
, SMB_STRUCT_STAT
*sbuf
);
77 int (*fstat
)(struct files_struct
*fsp
, int fd
, SMB_STRUCT_STAT
*sbuf
);
78 int (*lstat
)(struct connection_struct
*conn
, char *path
, SMB_STRUCT_STAT
*sbuf
);
79 int (*unlink
)(struct connection_struct
*conn
, char *path
);
80 int (*chmod
)(struct connection_struct
*conn
, char *path
, mode_t mode
);
81 int (*fchmod
)(struct files_struct
*fsp
, int fd
, mode_t mode
);
82 int (*chown
)(struct connection_struct
*conn
, char *path
, uid_t uid
, gid_t gid
);
83 int (*fchown
)(struct files_struct
*fsp
, int fd
, uid_t uid
, gid_t gid
);
84 int (*chdir
)(struct connection_struct
*conn
, char *path
);
85 char *(*getwd
)(struct connection_struct
*conn
, char *buf
);
86 int (*utime
)(struct connection_struct
*conn
, char *path
, struct utimbuf
*times
);
87 int (*ftruncate
)(struct files_struct
*fsp
, int fd
, SMB_OFF_T offset
);
88 BOOL (*lock
)(struct files_struct
*fsp
, int fd
, int op
, SMB_OFF_T offset
, SMB_OFF_T count
, int type
);
89 int (*symlink
)(struct connection_struct
*conn
, const char *oldpath
, const char *newpath
);
90 int (*readlink
)(struct connection_struct
*conn
, const char *path
, char *buf
, size_t bufsiz
);
92 /* NT ACL operations. */
94 size_t (*fget_nt_acl
)(struct files_struct
*fsp
, int fd
, struct security_descriptor_info
**ppdesc
);
95 size_t (*get_nt_acl
)(struct files_struct
*fsp
, char *name
, struct security_descriptor_info
**ppdesc
);
96 BOOL (*fset_nt_acl
)(struct files_struct
*fsp
, int fd
, uint32 security_info_sent
, struct security_descriptor_info
*psd
);
97 BOOL (*set_nt_acl
)(struct files_struct
*fsp
, char *name
, uint32 security_info_sent
, struct security_descriptor_info
*psd
);
99 /* POSIX ACL operations. */
101 int (*chmod_acl
)(struct connection_struct
*conn
, char *name
, mode_t mode
);
102 int (*fchmod_acl
)(struct files_struct
*fsp
, int fd
, mode_t mode
);
107 struct vfs_options
*prev
, *next
;