components/samba/samba/patches/worm.patch
author Jiri Sasek <Jiri.Sasek@Oracle.COM>
Tue, 07 Jan 2014 04:04:31 -0800
branchs11u1-sru
changeset 3010 07878573dad3
child 4371 29fdb14099eb
permissions -rw-r--r--
15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3010
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     1
Samba.org patch source is referenced below.
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     2
WiKi page is:
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     3
https://wiki.samba.org/index.php/VFS/vfs_worm
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     4
changes against the community version:
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     5
 - removed support of grace time on file
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     6
 - slightly modified to run on VFS rev.28
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     7
-- Jiri Sasek
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     8
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
     9
From 2004317c09d781a4ec1275aaa4a29289e798eff3 Mon Sep 17 00:00:00 2001
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    10
From: Volker Lendecke <[email protected]>
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    11
Date: Wed, 20 Nov 2013 12:09:47 +0100
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    12
Subject: [PATCH] s3-modules: add new vfs_worm module
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    13
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    14
VFS module to disallow writes for older files.
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    15
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    16
Signed-off-by: Volker Lendecke <[email protected]>
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    17
Reviewed-by: Stefan Metzmacher <[email protected]>
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    18
Reviewed-by: Jeremy Allison <[email protected]>
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    19
---
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    20
 source3/modules/vfs_worm.c |   97 ++++++++++++++++++++++++++++++++++++++++++++
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    21
 1 files changed, 97 insertions(+), 0 deletions(-)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    22
 create mode 100644 source3/modules/vfs_worm.c
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    23
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    24
diff --git a/source3/modules/vfs_worm.c b/source3/modules/vfs_worm.c
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    25
new file mode 100644
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    26
index 0000000..77a18ca
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    27
--- /dev/null
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    28
+++ b/source3/modules/vfs_worm.c
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    29
@@ -0,0 +1,93 @@
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    30
+/*
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    31
+ * VFS module to disallow writes for older files
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    32
+ *
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    33
+ * Copyright (C) 2013, Volker Lendecke
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    34
+ *
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    35
+ * This program is free software; you can redistribute it and/or modify
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    36
+ * it under the terms of the GNU General Public License as published by
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    37
+ * the Free Software Foundation; either version 3 of the License, or
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    38
+ * (at your option) any later version.
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    39
+ *
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    40
+ * This program is distributed in the hope that it will be useful,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    41
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    42
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    43
+ * GNU General Public License for more details.
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    44
+ *
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    45
+ * You should have received a copy of the GNU General Public License
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    46
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    47
+ */
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    48
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    49
+#include "includes.h"
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    50
+#include "smbd/smbd.h"
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    51
+#include "system/filesys.h"
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    52
+#include "libcli/security/security.h"
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    53
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    54
+static NTSTATUS vfs_worm_create_file(vfs_handle_struct *handle,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    55
+				     struct smb_request *req,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    56
+				     uint16_t root_dir_fid,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    57
+				     struct smb_filename *smb_fname,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    58
+				     uint32_t access_mask,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    59
+				     uint32_t share_access,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    60
+				     uint32_t create_disposition,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    61
+				     uint32_t create_options,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    62
+				     uint32_t file_attributes,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    63
+				     uint32_t oplock_request,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    64
+				     uint64_t allocation_size,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    65
+				     uint32_t private_flags,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    66
+				     struct security_descriptor *sd,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    67
+				     struct ea_list *ea_list,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    68
+				     files_struct **result,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    69
+				     int *pinfo)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    70
+{
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    71
+	bool readonly = false;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    72
+	const uint32_t write_access_flags =
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    73
+		FILE_WRITE_DATA | FILE_APPEND_DATA |
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    74
+		FILE_WRITE_ATTRIBUTES | DELETE_ACCESS |
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    75
+		WRITE_DAC_ACCESS | WRITE_OWNER_ACCESS;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    76
+	NTSTATUS status;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    77
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    78
+	if (VALID_STAT(smb_fname->st)) {
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    79
+		/* no grace_period supported */
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    80
+		readonly = true;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    81
+	}
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    82
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    83
+	if (readonly && (access_mask & write_access_flags)) {
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    84
+		return NT_STATUS_ACCESS_DENIED;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    85
+	}
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    86
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    87
+	status = SMB_VFS_NEXT_CREATE_FILE(
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    88
+		handle, req, root_dir_fid, smb_fname, access_mask,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    89
+		share_access, create_disposition, create_options,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    90
+		file_attributes, oplock_request, allocation_size,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    91
+		private_flags, sd, ea_list, result, pinfo);
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    92
+	if (!NT_STATUS_IS_OK(status)) {
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    93
+		return status;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    94
+	}
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    95
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    96
+	/*
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    97
+	 * Access via MAXIMUM_ALLOWED_ACCESS?
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    98
+	 */
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
    99
+	if (readonly && ((*result)->access_mask & write_access_flags)) {
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   100
+		close_file(req, *result, NORMAL_CLOSE);
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   101
+		return NT_STATUS_ACCESS_DENIED;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   102
+	}
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   103
+	return NT_STATUS_OK;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   104
+}
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   105
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   106
+static struct vfs_fn_pointers vfs_worm_fns = {
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   107
+	.create_file = vfs_worm_create_file,
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   108
+};
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   109
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   110
+NTSTATUS vfs_worm_init(void);
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   111
+NTSTATUS vfs_worm_init(void)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   112
+{
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   113
+	NTSTATUS ret;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   114
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   115
+	ret = smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "worm",
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   116
+			       &vfs_worm_fns);
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   117
+	if (!NT_STATUS_IS_OK(ret)) {
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   118
+		return ret;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   119
+	}
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   120
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   121
+	return ret;
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   122
+}
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   123
-- 
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   124
1.7.0.4
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   125
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   126
   Makefile.in and configure.in adds
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   127
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   128
--- a/source3/configure.in	2013-01-17 15:54:47.194376100 -0800
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   129
+++ b/source3/configure.in	2013-01-17 15:58:39.854303900 -0800
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   130
@@ -6994,6 +6994,7 @@
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   131
 SMB_MODULE(vfs_preopen, \$(VFS_PREOPEN_OBJ), "bin/preopen.$SHLIBEXT", VFS)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   132
 SMB_MODULE(vfs_syncops, \$(VFS_SYNCOPS_OBJ), "bin/syncops.$SHLIBEXT", VFS)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   133
 SMB_MODULE(vfs_zfsacl, \$(VFS_ZFSACL_OBJ), "bin/zfsacl.$SHLIBEXT", VFS)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   134
+SMB_MODULE(vfs_worm, \$(VFS_WORM_OBJ), "bin/worm.$SHLIBEXT", VFS)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   135
 AC_SUBST(SAMFS_LIBS)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   136
 SMB_MODULE(vfs_samfs, \$(VFS_SAMFS_OBJ), "bin/samfs.$SHLIBEXT", VFS)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   137
 SMB_MODULE(vfs_notify_fam, \$(VFS_NOTIFY_FAM_OBJ), "bin/notify_fam.$SHLIBEXT", VFS)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   138
--- a/source3/Makefile.in	2013-01-17 15:55:00.777531900 -0800
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   139
+++ b/source3/Makefile.in	2013-01-17 16:02:06.513093500 -0800
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   140
@@ -813,6 +813,7 @@
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   141
 VFS_AIXACL2_OBJ = modules/vfs_aixacl2.o modules/vfs_aixacl_util.o modules/nfs4_acls.o
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   142
 VFS_SOLARISACL_OBJ = modules/vfs_solarisacl.o
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   143
 VFS_ZFSACL_OBJ = modules/vfs_zfsacl.o modules/nfs4_acls.o
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   144
+VFS_WORM_OBJ = modules/vfs_worm.o
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   145
 VFS_SAMFS_OBJ = modules/vfs_samfs.o
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   146
 VFS_HPUXACL_OBJ = modules/vfs_hpuxacl.o
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   147
 VFS_IRIXACL_OBJ = modules/vfs_irixacl.o
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   148
@@ -2967,6 +2968,10 @@
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   149
 	@echo "Building plugin $@"
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   150
 	@$(SHLD_MODULE) $(VFS_ZFSACL_OBJ) @ZFSACL_LIBS@
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   151
 
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   152
+bin/worm.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_WORM_OBJ)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   153
+	@echo "Building plugin $@"
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   154
+	@$(SHLD_MODULE) $(VFS_WORM_OBJ)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   155
+
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   156
 bin/samfs.@SHLIBEXT@: $(BINARY_PREREQS) $(VFS_SAMFS_OBJ)
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   157
 	@echo "Building plugin $@"
07878573dad3 15782587 SUNBT7157974 RFE: Request to include a Samba VFS module which implements WORM
Jiri Sasek <Jiri.Sasek@Oracle.COM>
parents:
diff changeset
   158
 	@$(SHLD_MODULE) $(VFS_SAMFS_OBJ) @SAMFS_LIBS@