summaryrefslogtreecommitdiff
path: root/source3/smbd/close.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2008-05-27 11:23:59 -0700
committerJeremy Allison <jra@samba.org>2008-05-27 11:25:46 -0700
commit6811dc3fc236e62f042e43efa500cc55346c29d6 (patch)
tree0f4cb174567fb6baf89bc4358435c90fba63d680 /source3/smbd/close.c
parent7df9e11f156c01e0dce120120877b3dc4dc4f683 (diff)
downloadsamba-6811dc3fc236e62f042e43efa500cc55346c29d6.tar.gz
samba-6811dc3fc236e62f042e43efa500cc55346c29d6.tar.bz2
samba-6811dc3fc236e62f042e43efa500cc55346c29d6.zip
Allow server manager to close open files selected by id.
Jeremy. (This used to be commit 7eeed8bb41059ec2bddedb6a71deddeec7f33af2)
Diffstat (limited to 'source3/smbd/close.c')
-rw-r--r--source3/smbd/close.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/source3/smbd/close.c b/source3/smbd/close.c
index df188bafe1..818b4c70a8 100644
--- a/source3/smbd/close.c
+++ b/source3/smbd/close.c
@@ -736,3 +736,37 @@ NTSTATUS close_file(files_struct *fsp, enum file_close_type close_type)
return status;
}
+
+/****************************************************************************
+ Deal with an (authorized) message to close a file given the share mode
+ entry.
+****************************************************************************/
+
+void msg_close_file(struct messaging_context *msg_ctx,
+ void *private_data,
+ uint32_t msg_type,
+ struct server_id server_id,
+ DATA_BLOB *data)
+{
+ files_struct *fsp = NULL;
+ struct share_mode_entry e;
+
+ message_to_share_mode_entry(&e, (char *)data->data);
+
+ if(DEBUGLVL(10)) {
+ char *sm_str = share_mode_str(NULL, 0, &e);
+ if (!sm_str) {
+ smb_panic("talloc failed");
+ }
+ DEBUG(10,("msg_close_file: got request to close share mode "
+ "entry %s\n", sm_str));
+ TALLOC_FREE(sm_str);
+ }
+
+ fsp = file_find_dif(e.id, e.share_file_id);
+ if (!fsp) {
+ DEBUG(10,("msg_close_file: failed to find file.\n"));
+ return;
+ }
+ close_file(fsp, NORMAL_CLOSE);
+}