From 264877bf8e26506f68fef3bea421ef38c05e5066 Mon Sep 17 00:00:00 2001 From: Sam Liddicott Date: Fri, 7 Nov 2008 15:39:57 +0000 Subject: [PATCH] Add SMB_QFS_PROXY_INFO to identify WAFS proxy capabilities CIFS_UNIX_PROXY_CAP 0x400 Proxy capability, supports 0xACE ntioctl and QFS PROXY call. SMB_QUERY_FS_PROXY 0x204 New NTIOCTL available (0xACE) for WAN friendly SMB --- source4/libcli/raw/interfaces.h | 16 ++++++++++++++-- source4/libcli/raw/trans2.h | 3 +++ source4/ntvfs/proxy/vfs_proxy.c | 8 ++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/source4/libcli/raw/interfaces.h b/source4/libcli/raw/interfaces.h index c2269cbbc2f..a505dfe9f3e 100644 --- a/source4/libcli/raw/interfaces.h +++ b/source4/libcli/raw/interfaces.h @@ -1147,7 +1147,8 @@ enum smb_fsinfo_level { RAW_QFS_DEVICE_INFO = SMB_QFS_DEVICE_INFO, RAW_QFS_ATTRIBUTE_INFO = SMB_QFS_ATTRIBUTE_INFO, RAW_QFS_UNIX_INFO = SMB_QFS_UNIX_INFO, - RAW_QFS_VOLUME_INFORMATION = SMB_QFS_VOLUME_INFORMATION, + RAW_QFS_PROXY_INFO = SMB_QFS_PROXY_INFO, + RAW_QFS_VOLUME_INFORMATION = SMB_QFS_VOLUME_INFORMATION, RAW_QFS_SIZE_INFORMATION = SMB_QFS_SIZE_INFORMATION, RAW_QFS_DEVICE_INFORMATION = SMB_QFS_DEVICE_INFORMATION, RAW_QFS_ATTRIBUTE_INFORMATION = SMB_QFS_ATTRIBUTE_INFORMATION, @@ -1280,7 +1281,18 @@ union smb_fsinfo { } out; } unix_info; - /* trans2 RAW_QFS_QUOTA_INFORMATION interface */ + /* TRANS2 RAW_QFS_PROXY_INFO interface */ + struct { + enum smb_fsinfo_level level; + + struct { + uint16_t major_version; + uint16_t minor_version; + uint64_t capability; + } out; + } proxy_info; + + /* trans2 RAW_QFS_QUOTA_INFORMATION interface */ struct { enum smb_fsinfo_level level; struct smb2_handle handle; /* only for smb2 */ diff --git a/source4/libcli/raw/trans2.h b/source4/libcli/raw/trans2.h index 63632eb5edb..de9a8a3361a 100644 --- a/source4/libcli/raw/trans2.h +++ b/source4/libcli/raw/trans2.h @@ -75,6 +75,7 @@ Found 4 aliased levels #define SMB_QFS_UNIX_INFO 0x200 #define SMB_QFS_POSIX_INFO 0x201 #define SMB_QFS_POSIX_WHOAMI 0x202 +#define SMB_QFS_PROXY_INFO 0x204 #define SMB_QFS_VOLUME_INFORMATION 1001 #define SMB_QFS_SIZE_INFORMATION 1003 #define SMB_QFS_DEVICE_INFORMATION 1004 @@ -470,6 +471,8 @@ Size Offset Value #define CIFS_UNIX_FCNTL_LOCKS_CAP 0x1 #define CIFS_UNIX_POSIX_ACLS_CAP 0x2 +/* Proxy capability, supports 0xACE ntioctl and QFS PROXY call */ +#define CIFS_UNIX_PROXY_CAP 0x400 /* ... more as we think of them :-). */ diff --git a/source4/ntvfs/proxy/vfs_proxy.c b/source4/ntvfs/proxy/vfs_proxy.c index e27c50901bb..3d1bfbd63ff 100644 --- a/source4/ntvfs/proxy/vfs_proxy.c +++ b/source4/ntvfs/proxy/vfs_proxy.c @@ -959,6 +959,14 @@ static NTSTATUS proxy_fsinfo(struct ntvfs_module_context *ntvfs, SETUP_PID; + /* QFS Proxy */ + if (fs->generic.level == RAW_QFS_PROXY_INFO) { + fs->proxy_info.out.major_version=1; + fs->proxy_info.out.minor_version=0; + fs->proxy_info.out.capability=0; + return NT_STATUS_OK; + } + if (!(req->async_states->state & NTVFS_ASYNC_STATE_MAY_ASYNC)) { return smb_raw_fsinfo(private->tree, req, fs); } -- 2.11.4.GIT