summaryrefslogtreecommitdiff
path: root/source3/include
diff options
context:
space:
mode:
authorRichard Sharpe <realrichardsharpe@gmail.com>2011-09-16 11:52:22 -0700
committerRichard Sharpe <realrichardsharpe@gmail.com>2011-10-01 07:02:20 -0700
commitc875ab8747d65cc6556228616f076b0928013c87 (patch)
treebc7b582ac872d66273e8a1cd643770d6b01aa63a /source3/include
parente8f143a45cceb8d2c01d45167a0c90d5c7f38289 (diff)
downloadsamba-c875ab8747d65cc6556228616f076b0928013c87.tar.gz
samba-c875ab8747d65cc6556228616f076b0928013c87.tar.bz2
samba-c875ab8747d65cc6556228616f076b0928013c87.zip
Move FSCTL handling into the VFS. Initial code changes. Passes smbtorture NTTRANS-FSCTL. Test added to selftests.
Diffstat (limited to 'source3/include')
-rw-r--r--source3/include/vfs.h22
-rw-r--r--source3/include/vfs_macros.h6
2 files changed, 28 insertions, 0 deletions
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index b47e80f674..3b5e0e7f6a 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -136,6 +136,7 @@
/* Leave at 28 - not yet released. Rename open function to open_fn. - gd */
/* Leave at 28 - not yet released. Make getwd function always return malloced memory. JRA. */
/* Bump to version 29 - Samba 3.6.0 will ship with interface version 28. */
+/* Leave at 29 - not yet releases. Add fsctl. Richard Sharpe */
#define SMB_VFS_INTERFACE_VERSION 29
/*
@@ -329,6 +330,17 @@ struct vfs_fn_pointers {
TALLOC_CTX *mem_ctx,
char **mapped_name);
+ NTSTATUS (*fsctl)(struct vfs_handle_struct *handle,
+ struct files_struct *fsp,
+ TALLOC_CTX *ctx,
+ uint32_t function,
+ uint16_t req_flags,
+ const uint8_t *_in_data,
+ uint32_t in_len,
+ uint8_t **_out_data,
+ uint32_t max_out_len,
+ uint32_t *out_len);
+
/* NT ACL operations. */
NTSTATUS (*fget_nt_acl)(struct vfs_handle_struct *handle,
@@ -692,6 +704,16 @@ NTSTATUS smb_vfs_call_translate_name(struct vfs_handle_struct *handle,
enum vfs_translate_direction direction,
TALLOC_CTX *mem_ctx,
char **mapped_name);
+NTSTATUS smb_vfs_call_fsctl(struct vfs_handle_struct *handle,
+ struct files_struct *fsp,
+ TALLOC_CTX *ctx,
+ uint32_t function,
+ uint16_t req_flags,
+ const uint8_t *_in_data,
+ uint32_t in_len,
+ uint8_t **_out_data,
+ uint32_t max_out_len,
+ uint32_t *out_len);
NTSTATUS smb_vfs_call_fget_nt_acl(struct vfs_handle_struct *handle,
struct files_struct *fsp,
uint32 security_info,
diff --git a/source3/include/vfs_macros.h b/source3/include/vfs_macros.h
index c7686f1db5..3dd6a64249 100644
--- a/source3/include/vfs_macros.h
+++ b/source3/include/vfs_macros.h
@@ -364,6 +364,12 @@
#define SMB_VFS_NEXT_TRANSLATE_NAME(handle, name, direction, mem_ctx, mapped_name) \
smb_vfs_call_translate_name((handle)->next, (name), (direction), (mem_ctx), (mapped_name))
+#define SMB_VFS_FSCTL(fsp, ctx, function, req_flags, in_data, in_len, out_data, max_out_len, out_len) \
+ smb_vfs_call_fsctl((fsp)->conn->vfs_handles, (fsp), (ctx), (function), (req_flags), (in_data), (in_len), (out_data), (max_out_len), (out_len))
+
+#define SMB_VFS_NEXT_FSCTL(handle, fsp, ctx, function, req_flags, in_data, in_len, out_data, max_out_len, out_len) \
+ smb_vfs_call_fsctl((handle)->next, (fsp), (ctx), (function), (req_flags), (in_data), (in_len), (out_data), (max_out_len), (out_len))
+
#define SMB_VFS_FGET_NT_ACL(fsp, security_info, ppdesc) \
smb_vfs_call_fget_nt_acl((fsp)->conn->vfs_handles, (fsp), (security_info), (ppdesc))
#define SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp, security_info, ppdesc) \