diff options
Diffstat (limited to 'source3/include')
-rw-r--r-- | source3/include/config.h.in | 10 | ||||
-rw-r--r-- | source3/include/includes.h | 6 | ||||
-rw-r--r-- | source3/include/trans2.h | 54 | ||||
-rw-r--r-- | source3/include/vfs.h | 53 |
4 files changed, 96 insertions, 27 deletions
diff --git a/source3/include/config.h.in b/source3/include/config.h.in index 1d301d561a..164d2fb755 100644 --- a/source3/include/config.h.in +++ b/source3/include/config.h.in @@ -147,6 +147,7 @@ #undef WITH_MSDFS #undef WITH_LIBICONV #undef HAVE_INO64_T +#undef HAVE_DEV64_T #undef HAVE_STRUCT_FLOCK64 #undef SIZEOF_INO_T #undef SIZEOF_OFF_T @@ -602,6 +603,9 @@ /* Define if you have the innetgr function. */ #undef HAVE_INNETGR +/* Define if you have the link function. */ +#undef HAVE_LINK + /* Define if you have the llseek function. */ #undef HAVE_LLSEEK @@ -617,6 +621,12 @@ /* Define if you have the memset function. */ #undef HAVE_MEMSET +/* Define if you have the mknod function. */ +#undef HAVE_MKNOD + +/* Define if you have the mknod64 function. */ +#undef HAVE_MKNOD64 + /* Define if you have the mktime function. */ #undef HAVE_MKTIME diff --git a/source3/include/includes.h b/source3/include/includes.h index fa6fad4605..0ea387c19c 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -523,7 +523,11 @@ typedef int socklen_t; */ #ifndef SMB_DEV_T -#define SMB_DEV_T dev_t +# if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_DEV64_T) +# define SMB_DEV_T dev64_t +# else +# define SMB_DEV_T dev_t +# endif #endif /* diff --git a/source3/include/trans2.h b/source3/include/trans2.h index 3bf6203710..55b1670aa7 100644 --- a/source3/include/trans2.h +++ b/source3/include/trans2.h @@ -235,6 +235,14 @@ Byte offset Type name description * Thursby MAC extensions.... */ +/* + * MAC CIFS Extensions have the range 0x300 - 0x2FF reserved. + * Supposedly Microsoft have agreed to this. + */ + +#define MIN_MAC_INFO_LEVEL 0x300 +#define MAX_MAC_INFO_LEVEL 0x3FF + #define SMB_MAC_QUERY_FS_INFO 0x301 #define DIRLEN_GUESS (45+MAX(l1_achName,l2_achName)) @@ -299,8 +307,52 @@ Byte offset Type name description #define SMB_FILE_TRACKING_INFORMATION 1036 #define SMB_FILE_MAXIMUM_INFORMATION 1037 +/* UNIX CIFS Extensions - created by HP */ +/* + * UNIX CIFS Extensions have the range 0x200 - 0x2FF reserved. + * Supposedly Microsoft have agreed to this. + */ -#endif +#define MIN_UNIX_INFO_LEVEL 0x200 +#define MAX_UNIX_INFO_LEVEL 0x2FF +#define SMB_QUERY_FILE_UNIX_BASIC 0x200 /* UNIX File Info*/ +#define SMB_SET_FILE_UNIX_BASIC 0x200 +#define MODE_NO_CHANGE -1 /* file mode value which */ + /* means "don't change it" */ +/* + LARGE_INTEGER EndOfFile File size + LARGE_INTEGER Blocks Number of bytes used on disk (st_blocks). + LARGE_INTEGER CreationTime Creation time + LARGE_INTEGER LastAccessTime Last access time + LARGE_INTEGER LastModificationTime Last modification time + LARGE_INTEGER Uid Numeric user id for the owner + LARGE_INTEGER Gid Numeric group id of owner + ULONG Type Enumeration specifying the pathname type: + 0 -- File + 1 -- Directory + 2 -- Symbolic link + 3 -- Character device + 4 -- Block device + 5 -- FIFO (named pipe) + + LARGE_INTEGER devmajor Major device number if type is device + LARGE_INTEGER devminor Minor device number if type is device + LARGE_INTEGER uniqueid This is a server-assigned unique id for the file. The client + will typically map this onto an inode number. The scope of + uniqueness is the share. + LARGE_INTEGER permissions Standard UNIX file permissions + LARGE_INTEGER nlinks The number of directory entries that map to this entry + (number of hard links) + +*/ + +#define SMB_QUERY_FILE_UNIX_LINK 0x201 +#define SMB_SET_FILE_UNIX_LINK 0x201 +#define SMB_SET_FILE_UNIX_HLINK 0x203 + +#define SMB_FIND_FILE_UNIX 0x202 + +#endif diff --git a/source3/include/vfs.h b/source3/include/vfs.h index 5a8451fb14..1856255385 100644 --- a/source3/include/vfs.h +++ b/source3/include/vfs.h @@ -39,6 +39,7 @@ * vfs_ops below. JRA. */ +/* Changed to version 2 for CIFS UNIX extensions (mknod and link added). JRA. */ #define SMB_VFS_INTERFACE_VERSION 2 /* VFS operations structure */ @@ -49,36 +50,36 @@ struct security_descriptor_info; struct vfs_ops { - /* Disk operations */ + /* Disk operations */ - int (*connect)(struct connection_struct *conn, const char *service, const char *user); - void (*disconnect)(struct connection_struct *conn); - SMB_BIG_UINT (*disk_free)(struct connection_struct *conn, const char *path, BOOL small_query, SMB_BIG_UINT *bsize, - SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize); + int (*connect)(struct connection_struct *conn, const char *service, const char *user); + void (*disconnect)(struct connection_struct *conn); + SMB_BIG_UINT (*disk_free)(struct connection_struct *conn, const char *path, BOOL small_query, SMB_BIG_UINT *bsize, + SMB_BIG_UINT *dfree, SMB_BIG_UINT *dsize); - /* Directory operations */ + /* Directory operations */ - DIR *(*opendir)(struct connection_struct *conn, const char *fname); - struct dirent *(*readdir)(struct connection_struct *conn, DIR *dirp); - int (*mkdir)(struct connection_struct *conn, const char *path, mode_t mode); - int (*rmdir)(struct connection_struct *conn, const char *path); - int (*closedir)(struct connection_struct *conn, DIR *dir); + DIR *(*opendir)(struct connection_struct *conn, const char *fname); + struct dirent *(*readdir)(struct connection_struct *conn, DIR *dirp); + int (*mkdir)(struct connection_struct *conn, const char *path, mode_t mode); + int (*rmdir)(struct connection_struct *conn, const char *path); + int (*closedir)(struct connection_struct *conn, DIR *dir); - /* File operations */ + /* File operations */ - int (*open)(struct connection_struct *conn, const char *fname, int flags, mode_t mode); - int (*close)(struct files_struct *fsp, int fd); - ssize_t (*read)(struct files_struct *fsp, int fd, void *data, size_t n); - ssize_t (*write)(struct files_struct *fsp, int fd, const void *data, size_t n); - SMB_OFF_T (*lseek)(struct files_struct *fsp, int filedes, SMB_OFF_T offset, int whence); - int (*rename)(struct connection_struct *conn, const char *old, const char *new); - int (*fsync)(struct files_struct *fsp, int fd); - int (*stat)(struct connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf); - int (*fstat)(struct files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf); - int (*lstat)(struct connection_struct *conn, const char *path, SMB_STRUCT_STAT *sbuf); - int (*unlink)(struct connection_struct *conn, const char *path); - int (*chmod)(struct connection_struct *conn, const char *path, mode_t mode); - int (*fchmod)(struct files_struct *fsp, int fd, mode_t mode); + int (*open)(struct connection_struct *conn, const char *fname, int flags, mode_t mode); + int (*close)(struct files_struct *fsp, int fd); + ssize_t (*read)(struct files_struct *fsp, int fd, void *data, size_t n); + ssize_t (*write)(struct files_struct *fsp, int fd, const void *data, size_t n); + SMB_OFF_T (*lseek)(struct files_struct *fsp, int filedes, SMB_OFF_T offset, int whence); + int (*rename)(struct connection_struct *conn, const char *old, const char *new); + int (*fsync)(struct files_struct *fsp, int fd); + int (*stat)(struct connection_struct *conn, const char *fname, SMB_STRUCT_STAT *sbuf); + int (*fstat)(struct files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf); + int (*lstat)(struct connection_struct *conn, const char *path, SMB_STRUCT_STAT *sbuf); + int (*unlink)(struct connection_struct *conn, const char *path); + int (*chmod)(struct connection_struct *conn, const char *path, mode_t mode); + int (*fchmod)(struct files_struct *fsp, int fd, mode_t mode); int (*chown)(struct connection_struct *conn, const char *path, uid_t uid, gid_t gid); int (*fchown)(struct files_struct *fsp, int fd, uid_t uid, gid_t gid); int (*chdir)(struct connection_struct *conn, const char *path); @@ -88,6 +89,8 @@ struct vfs_ops { BOOL (*lock)(struct files_struct *fsp, int fd, int op, SMB_OFF_T offset, SMB_OFF_T count, int type); int (*symlink)(struct connection_struct *conn, const char *oldpath, const char *newpath); int (*readlink)(struct connection_struct *conn, const char *path, char *buf, size_t bufsiz); + int (*link)(struct connection_struct *conn, const char *oldpath, const char *newpath); + int (*mknod)(struct connection_struct *conn, const char *path, mode_t mode, SMB_DEV_T dev); /* NT ACL operations. */ |