uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
file_attributes,
oplock_request,
allocation_size,
+ private_flags,
sd,
ea_list,
result,
uint32 *paccess_mask,
uint32 *pshare_mode,
uint32 *pcreate_disposition,
- uint32 *pcreate_options);
+ uint32 *pcreate_options,
+ uint32_t *pprivate_flags);
NTSTATUS open_file_fchmod(struct smb_request *req, connection_struct *conn,
struct smb_filename *smb_fname,
files_struct **result);
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
SMB_OFF_T pos;
uint32 private_options; /* NT Create options, but we only look at
* NTCREATEX_OPTIONS_PRIVATE_DENY_DOS and
- * NTCREATEX_OPTIONS_PRIVATE_DENY_FCB (Except
+ * NTCREATEX_OPTIONS_PRIVATE_DENY_FCB and
+ * NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE
* for print files *only*, where
* DELETE_ON_CLOSE is not stored in the share
* mode database.
/*
* Private create options used by the ntcreatex processing code. From Samba4.
- * We reuse some ignored flags for private use.
+ * We reuse some ignored flags for private use. Passed in the private_flags
+ * argument.
*/
-#define NTCREATEX_OPTIONS_PRIVATE_DENY_DOS 0x00010000
-#define NTCREATEX_OPTIONS_PRIVATE_DENY_FCB 0x00020000
+#define NTCREATEX_OPTIONS_PRIVATE_DENY_DOS 0x0001
+#define NTCREATEX_OPTIONS_PRIVATE_DENY_FCB 0x0002
/* Private options for streams support */
-#define NTCREATEX_OPTIONS_PRIVATE_STREAM_DELETE 0x00040000
+#define NTCREATEX_OPTIONS_PRIVATE_STREAM_DELETE 0x0004
+
+/* Private options for printer support */
+#define NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE 0x0008
/* Responses when opening a file. */
#define FILE_WAS_SUPERSEDED 0
* return to fs_capabilities call. JRA. */
/* Leave at 27 - not yet released. Add translate_name VFS call to convert
UNIX names to Windows supported names -- asrinivasan. */
-#define SMB_VFS_INTERFACE_VERSION 27
+/* Changed to version 28 - Add private_flags uint32_t to CREATE call. */
+#define SMB_VFS_INTERFACE_VERSION 28
/* to bug old modules which are trying to compile with the old functions */
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
#define SMB_VFS_NEXT_OPEN(handle, fname, fsp, flags, mode) \
smb_vfs_call_open((handle)->next, (fname), (fsp), (flags), (mode))
-#define SMB_VFS_CREATE_FILE(conn, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, create_options, file_attributes, oplock_request, allocation_size, sd, ea_list, result, pinfo) \
- smb_vfs_call_create_file((conn)->vfs_handles, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), (create_options), (file_attributes), (oplock_request), (allocation_size), (sd), (ea_list), (result), (pinfo))
-#define SMB_VFS_NEXT_CREATE_FILE(handle, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, create_options, file_attributes, oplock_request, allocation_size, sd, ea_list, result, pinfo) \
- smb_vfs_call_create_file((handle)->next, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), (create_options), (file_attributes), (oplock_request), (allocation_size), (sd), (ea_list), (result), (pinfo))
+#define SMB_VFS_CREATE_FILE(conn, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, \
+ create_options, file_attributes, oplock_request, allocation_size, private_flags, sd, ea_list, result, pinfo) \
+ smb_vfs_call_create_file((conn)->vfs_handles, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), \
+ (create_options), (file_attributes), (oplock_request), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo))
+#define SMB_VFS_NEXT_CREATE_FILE(handle, req, root_dir_fid, smb_fname, access_mask, share_access, create_disposition, \
+ create_options, file_attributes, oplock_request, allocation_size, private_flags, sd, ea_list, result, pinfo) \
+ smb_vfs_call_create_file((handle)->next, (req), (root_dir_fid), (smb_fname), (access_mask), (share_access), (create_disposition), \
+ (create_options), (file_attributes), (oplock_request), (allocation_size), (private_flags), (sd), (ea_list), (result), (pinfo))
#define SMB_VFS_CLOSE(fsp) \
smb_vfs_call_close_fn((fsp)->conn->vfs_handles, (fsp))
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
uint32 create_options,
uint32 new_dos_attributes,
int oplock_request,
+ uint32_t private_flags,
struct security_descriptor *sd,
files_struct *fsp,
int *pinfo,
DEBUG(10, ("fsp = %p\n", fsp));
fsp->share_access = share_access;
- fsp->fh->private_options = create_options;
+ fsp->fh->private_options = private_flags;
fsp->access_mask = open_access_mask; /* We change this to the
* requested access_mask after
* the open is done. */
* calls. */
/* Try to find dup fsp if possible. */
- if (create_options &
+ if (private_flags &
(NTCREATEX_OPTIONS_PRIVATE_DENY_DOS|
NTCREATEX_OPTIONS_PRIVATE_DENY_FCB)) {
* deny mode is compatible with all current opens.
*/
- /* Record the options we were opened with. */
- fsp->share_access = share_access;
- fsp->fh->private_options = create_options;
/*
* According to Samba4, SEC_FILE_READ_ATTRIBUTE is always granted,
*/
fsp->can_write = False;
fsp->share_access = share_access;
- fsp->fh->private_options = create_options;
+ fsp->fh->private_options = 0;
/*
* According to Samba4, SEC_FILE_READ_ATTRIBUTE is always granted,
*/
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
DEBUG(10,("onefs_create_file_unixpath: access_mask = 0x%x "
"file_attributes = 0x%x, share_access = 0x%x, "
"create_disposition = 0x%x create_options = 0x%x "
- "oplock_request = 0x%x ea_list = 0x%p, sd = 0x%p, "
+ "oplock_request = 0x%x private_flags = 0x%x "
+ "ea_list = 0x%p, sd = 0x%p, "
"fname = %s\n",
(unsigned int)access_mask,
(unsigned int)file_attributes,
(unsigned int)create_disposition,
(unsigned int)create_options,
(unsigned int)oplock_request,
+ (unsigned int)private_flags,
ea_list, sd, smb_fname_str_dbg(smb_fname)));
if (create_options & FILE_OPEN_BY_FILE_ID) {
file_attributes, /* file_attributes */
NO_OPLOCK, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&base_fsp, /* result */
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
DEBUG(10,("onefs_create_file: access_mask = 0x%x "
"file_attributes = 0x%x, share_access = 0x%x, "
"create_disposition = 0x%x create_options = 0x%x "
- "oplock_request = 0x%x "
+ "oplock_request = 0x%x private_flags = 0x%x"
"root_dir_fid = 0x%x, ea_list = 0x%p, sd = 0x%p, "
"fname = %s\n",
(unsigned int)access_mask,
(unsigned int)create_disposition,
(unsigned int)create_options,
(unsigned int)oplock_request,
+ (unsigned int)private_flags,
(unsigned int)root_dir_fid,
ea_list, sd, smb_fname_str_dbg(smb_fname)));
file_attributes, /* file_attributes */
oplock_request, /* oplock_request */
allocation_size, /* allocation_size */
+ private_flags,
sd, /* sd */
ea_list, /* ea_list */
&fsp, /* result */
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
file_attributes,
oplock_request,
allocation_size,
+ private_flags,
sd,
ea_list,
result,
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
access_mask, share_access,
create_disposition, create_options,
file_attributes, oplock_request,
- allocation_size, sd, ea_list, result,
+ allocation_size, private_flags,
+ sd, ea_list, result,
pinfo);
}
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result_fsp,
file_attributes, /* file_attributes */
oplock_request, /* oplock_request */
allocation_size, /* allocation_size */
+ private_flags,
sd, /* sd */
ea_list, /* ea_list */
result_fsp, /* result */
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
access_mask, share_access,
create_disposition, create_options,
file_attributes, oplock_request,
- allocation_size, sd, ea_list, result, pinfo),
+ allocation_size, private_flags,
+ sd, ea_list, result, pinfo),
NTSTATUS);
}
FILE_ATTRIBUTE_NORMAL, /* file_attributes */
INTERNAL_OPEN_ONLY, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
FILE_ATTRIBUTE_NORMAL, /* file_attributes */
INTERNAL_OPEN_ONLY, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
0, /* create_options */
FILE_ATTRIBUTE_NORMAL, /* file_attributes */
INTERNAL_OPEN_ONLY, /* oplock_request */
+ 0, /* private_flags */
0, /* allocation_size */
NULL, /* sd */
NULL, /* ea_list */
{
uint32 jobid;
- if (fsp->fh->private_options & FILE_DELETE_ON_CLOSE) {
+ if (fsp->fh->private_options & NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE) {
/*
* Truncate the job. print_job_end will take
* care of deleting it for us. JRA.
0, /* file_attributes */
INTERNAL_OPEN_ONLY, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
0, /* file_attributes */
INTERNAL_OPEN_ONLY, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
file_attributes, /* file_attributes */
oplock_request, /* oplock_request */
allocation_size, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
file_attributes, /* file_attributes */
oplock_request, /* oplock_request */
allocation_size, /* allocation_size */
+ 0, /* private_flags */
sd, /* sd */
ea_list, /* ea_list */
&fsp, /* result */
FILE_ATTRIBUTE_NORMAL, /* file_attributes */
NO_OPLOCK, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp1, /* result */
fattr, /* file_attributes */
NO_OPLOCK, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp2, /* result */
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
uint32 *paccess_mask,
uint32 *pshare_mode,
uint32 *pcreate_disposition,
- uint32 *pcreate_options)
+ uint32 *pcreate_options,
+ uint32_t *pprivate_flags)
{
uint32 access_mask;
uint32 share_mode;
uint32 create_disposition;
uint32 create_options = FILE_NON_DIRECTORY_FILE;
+ uint32_t private_flags = 0;
DEBUG(10,("map_open_params_to_ntcreate: fname = %s, deny_mode = 0x%x, "
"open_func = 0x%x\n",
break;
case DENY_DOS:
- create_options |= NTCREATEX_OPTIONS_PRIVATE_DENY_DOS;
+ private_flags |= NTCREATEX_OPTIONS_PRIVATE_DENY_DOS;
if (is_executable(smb_fname->base_name)) {
share_mode = FILE_SHARE_READ|FILE_SHARE_WRITE;
} else {
break;
case DENY_FCB:
- create_options |= NTCREATEX_OPTIONS_PRIVATE_DENY_FCB;
+ private_flags |= NTCREATEX_OPTIONS_PRIVATE_DENY_FCB;
share_mode = FILE_SHARE_NONE;
break;
DEBUG(10,("map_open_params_to_ntcreate: file %s, access_mask = 0x%x, "
"share_mode = 0x%x, create_disposition = 0x%x, "
- "create_options = 0x%x\n",
+ "create_options = 0x%x private_flags = 0x%x\n",
smb_fname_str_dbg(smb_fname),
(unsigned int)access_mask,
(unsigned int)share_mode,
(unsigned int)create_disposition,
- (unsigned int)create_options ));
+ (unsigned int)create_options,
+ (unsigned int)private_flags));
if (paccess_mask) {
*paccess_mask = access_mask;
if (pcreate_options) {
*pcreate_options = create_options;
}
+ if (pprivate_flags) {
+ *pprivate_flags = private_flags;
+ }
return True;
uint32 new_dos_attributes, /* attributes used for new file. */
int oplock_request, /* internal Samba oplock codes. */
/* Information (FILE_EXISTS etc.) */
+ uint32_t private_flags, /* Samba specific flags. */
int *pinfo,
files_struct *fsp)
{
DEBUG(10, ("open_file_ntcreate: fname=%s, dos_attrs=0x%x "
"access_mask=0x%x share_access=0x%x "
"create_disposition = 0x%x create_options=0x%x "
- "unix mode=0%o oplock_request=%d\n",
+ "unix mode=0%o oplock_request=%d private_flags = 0x%x\n",
smb_fname_str_dbg(smb_fname), new_dos_attributes,
access_mask, share_access, create_disposition,
- create_options, (unsigned int)unx_mode, oplock_request));
+ create_options, (unsigned int)unx_mode, oplock_request,
+ (unsigned int)private_flags));
if ((req == NULL) && ((oplock_request & INTERNAL_OPEN_ONLY) == 0)) {
DEBUG(0, ("No smb request but not an internal only open!\n"));
/* DENY_DOS opens are always underlying read-write on the
file handle, no matter what the requested access mask
says. */
- if ((create_options & NTCREATEX_OPTIONS_PRIVATE_DENY_DOS) ||
+ if ((private_flags & NTCREATEX_OPTIONS_PRIVATE_DENY_DOS) ||
access_mask & (FILE_READ_ATTRIBUTES|FILE_READ_DATA|FILE_READ_EA|FILE_EXECUTE)) {
flags = O_RDWR;
} else {
fsp->file_id = vfs_file_id_from_sbuf(conn, &smb_fname->st);
fsp->share_access = share_access;
- fsp->fh->private_options = create_options;
+ fsp->fh->private_options = private_flags;
fsp->access_mask = open_access_mask; /* We change this to the
* requested access_mask after
* the open is done. */
/* Check if this can be done with the deny_dos and fcb
* calls. */
- if (create_options &
+ if (private_flags &
(NTCREATEX_OPTIONS_PRIVATE_DENY_DOS|
NTCREATEX_OPTIONS_PRIVATE_DENY_FCB)) {
if (req == NULL) {
}
}
- /* Record the options we were opened with. */
- fsp->share_access = share_access;
- fsp->fh->private_options = create_options;
/*
* According to Samba4, SEC_FILE_READ_ATTRIBUTE is always granted,
*/
0, /* file_attributes */
0, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
fsp->can_write = False;
fsp->share_access = share_access;
- fsp->fh->private_options = create_options;
+ fsp->fh->private_options = 0;
/*
* According to Samba4, SEC_FILE_READ_ATTRIBUTE is always granted,
*/
FILE_ATTRIBUTE_DIRECTORY, /* file_attributes */
0, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
(FILE_SHARE_READ | /* share_access */
FILE_SHARE_WRITE | FILE_SHARE_DELETE),
FILE_OPEN, /* create_disposition*/
- NTCREATEX_OPTIONS_PRIVATE_STREAM_DELETE, /* create_options */
+ 0, /* create_options */
FILE_ATTRIBUTE_NORMAL, /* file_attributes */
0, /* oplock_request */
0, /* allocation_size */
+ NTCREATEX_OPTIONS_PRIVATE_STREAM_DELETE, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&streams[i], /* result */
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
DEBUG(10,("create_file_unixpath: access_mask = 0x%x "
"file_attributes = 0x%x, share_access = 0x%x, "
"create_disposition = 0x%x create_options = 0x%x "
- "oplock_request = 0x%x ea_list = 0x%p, sd = 0x%p, "
+ "oplock_request = 0x%x private_flags = 0x%x "
+ "ea_list = 0x%p, sd = 0x%p, "
"fname = %s\n",
(unsigned int)access_mask,
(unsigned int)file_attributes,
(unsigned int)create_disposition,
(unsigned int)create_options,
(unsigned int)oplock_request,
+ (unsigned int)private_flags,
ea_list, sd, smb_fname_str_dbg(smb_fname)));
if (create_options & FILE_OPEN_BY_FILE_ID) {
if ((conn->fs_capabilities & FILE_NAMED_STREAMS)
&& is_ntfs_stream_smb_fname(smb_fname)
- && (!(create_options & NTCREATEX_OPTIONS_PRIVATE_STREAM_DELETE))) {
+ && (!(private_flags & NTCREATEX_OPTIONS_PRIVATE_STREAM_DELETE))) {
uint32 base_create_disposition;
struct smb_filename *smb_fname_base = NULL;
| FILE_SHARE_WRITE
| FILE_SHARE_DELETE,
base_create_disposition,
- 0, 0, 0, 0, NULL, NULL,
+ 0, 0, 0, 0, 0, NULL, NULL,
&base_fsp, NULL);
TALLOC_FREE(smb_fname_base);
create_options,
file_attributes,
oplock_request,
+ private_flags,
&info,
fsp);
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
"file_attributes = 0x%x, share_access = 0x%x, "
"create_disposition = 0x%x create_options = 0x%x "
"oplock_request = 0x%x "
+ "private_flags = 0x%x "
"root_dir_fid = 0x%x, ea_list = 0x%p, sd = 0x%p, "
"fname = %s\n",
(unsigned int)access_mask,
(unsigned int)create_disposition,
(unsigned int)create_options,
(unsigned int)oplock_request,
+ (unsigned int)private_flags,
(unsigned int)root_dir_fid,
ea_list, sd, smb_fname_str_dbg(smb_fname)));
status = create_file_unixpath(
conn, req, smb_fname, access_mask, share_access,
create_disposition, create_options, file_attributes,
- oplock_request, allocation_size, sd, ea_list,
+ oplock_request, allocation_size, private_flags,
+ sd, ea_list,
&fsp, &info);
if (!NT_STATUS_IS_OK(status)) {
uint32 share_mode;
uint32 create_disposition;
uint32 create_options = 0;
+ uint32_t private_flags = 0;
NTSTATUS status;
bool ask_sharemode = lp_parm_bool(SNUM(conn), "smbd", "search ask sharemode", true);
TALLOC_CTX *ctx = talloc_tos();
if (!map_open_params_to_ntcreate(smb_fname, deny_mode,
OPENX_FILE_EXISTS_OPEN, &access_mask,
&share_mode, &create_disposition,
- &create_options)) {
+ &create_options, &private_flags)) {
reply_force_doserror(req, ERRDOS, ERRbadaccess);
goto out;
}
dos_attr, /* file_attributes */
oplock_request, /* oplock_request */
0, /* allocation_size */
+ private_flags,
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
uint32 share_mode;
uint32 create_disposition;
uint32 create_options = 0;
+ uint32_t private_flags = 0;
TALLOC_CTX *ctx = talloc_tos();
START_PROFILE(SMBopenX);
if (!map_open_params_to_ntcreate(smb_fname, deny_mode, smb_ofun,
&access_mask, &share_mode,
&create_disposition,
- &create_options)) {
+ &create_options,
+ &private_flags)) {
reply_force_doserror(req, ERRDOS, ERRbadaccess);
goto out;
}
smb_attr, /* file_attributes */
oplock_request, /* oplock_request */
0, /* allocation_size */
+ private_flags,
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
fattr, /* file_attributes */
oplock_request, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
fattr, /* file_attributes */
oplock_request, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
FILE_ATTRIBUTE_NORMAL,
0, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
FILE_ATTRIBUTE_DIRECTORY, /* file_attributes */
0, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
posix_pathnames ? FILE_FLAG_POSIX_SEMANTICS|0777 : 0, /* file_attributes */
0, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
posix_pathnames ? FILE_FLAG_POSIX_SEMANTICS|0777 : 0, /* file_attributes */
0, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
if (!map_open_params_to_ntcreate(smb_fname_dst_tmp, 0, ofun,
NULL, NULL,
&new_create_disposition,
+ NULL,
NULL)) {
status = NT_STATUS_INVALID_PARAMETER;
goto out;
FILE_ATTRIBUTE_NORMAL, /* file_attributes */
INTERNAL_OPEN_ONLY, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp1, /* result */
dosattrs, /* file_attributes */
INTERNAL_OPEN_ONLY, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp2, /* result */
in_file_attributes,
0, /* oplock_request */
allocation_size,
+ 0, /* private_flags */
sec_desc,
ea_list,
&result,
if ((file_info_level == SMB_SET_FILE_DISPOSITION_INFO)
&& in_input_buffer.length >= 1
&& CVAL(in_input_buffer.data,0)) {
- fsp->fh->private_options |= FILE_DELETE_ON_CLOSE;
+ fsp->fh->private_options |= NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE;
DEBUG(3,("smbd_smb2_setinfo_send: "
"Cancelling print job (%s)\n",
uint32 share_mode;
uint32 create_disposition;
uint32 create_options = 0;
+ uint32_t private_flags = 0;
TALLOC_CTX *ctx = talloc_tos();
/*
if (!map_open_params_to_ntcreate(smb_fname, deny_mode, open_ofun,
&access_mask, &share_mode,
&create_disposition,
- &create_options)) {
+ &create_options,
+ &private_flags)) {
reply_nterror(req, NT_STATUS_ACCESS_DENIED);
goto out;
}
open_attr, /* file_attributes */
oplock_request, /* oplock_request */
open_size, /* allocation_size */
+ private_flags,
NULL, /* sd */
ea_list, /* ea_list */
&fsp, /* result */
FILE_ATTRIBUTE_NORMAL, /* file_attributes */
FORCE_OPLOCK_BREAK_TO_NONE, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&new_fsp, /* result */
FILE_ATTRIBUTE_NORMAL, /* file_attributes */
FORCE_OPLOCK_BREAK_TO_NONE, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&new_fsp, /* result */
mod_unixmode, /* file_attributes */
0, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
mod_unixmode, /* file_attributes */
oplock_request, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
FILE_FLAG_POSIX_SEMANTICS|0777, /* file_attributes */
0, /* oplock_request */
0, /* allocation_size */
+ 0, /* private_flags */
NULL, /* sd */
NULL, /* ea_list */
&fsp, /* result */
* Doing a DELETE_ON_CLOSE should cancel a print job.
*/
if ((info_level == SMB_SET_FILE_DISPOSITION_INFO) && CVAL(pdata,0)) {
- fsp->fh->private_options |= FILE_DELETE_ON_CLOSE;
+ fsp->fh->private_options |= NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE;
DEBUG(3,("call_trans2setfilepathinfo: "
"Cancelling print job (%s)\n",
uint32_t file_attributes,
uint32_t oplock_request,
uint64_t allocation_size,
+ uint32_t private_flags,
struct security_descriptor *sd,
struct ea_list *ea_list,
files_struct **result,
return handle->fns->create_file(
handle, req, root_dir_fid, smb_fname, access_mask,
share_access, create_disposition, create_options,
- file_attributes, oplock_request, allocation_size, sd, ea_list,
+ file_attributes, oplock_request, allocation_size,
+ private_flags, sd, ea_list,
result, pinfo);
}