{
typedef [public,bitmap16bit] bitmap {
SHARE_ENTRY_FLAG_POSIX_OPEN = 0x0001,
- SHARE_ENTRY_FLAG_STREAM_BASEOPEN = 0x0002
+ SHARE_ENTRY_FLAG_STREAM_BASEOPEN = 0x0002,
+ SHARE_ENTRY_FLAG_DENY_DOS = 0x0004,
+ SHARE_ENTRY_FLAG_DENY_FCB = 0x0008
} share_entry_flags;
typedef [enum16bit] enum {
if (private_options & NTCREATEX_FLAG_STREAM_BASEOPEN) {
flags |= SHARE_ENTRY_FLAG_STREAM_BASEOPEN;
}
+ if (private_options & NTCREATEX_FLAG_DENY_DOS) {
+ flags |= SHARE_ENTRY_FLAG_DENY_DOS;
+ }
+ if (private_options & NTCREATEX_FLAG_DENY_FCB) {
+ flags |= SHARE_ENTRY_FLAG_DENY_FCB;
+ }
return flags;
}
* of restoring an fsp when doing a Durable Handle reconnect.
*/
SMB_ASSERT(!(flags & SHARE_ENTRY_FLAG_STREAM_BASEOPEN));
+
+ /*
+ * SHARE_ENTRY_FLAG_DENY_[DOS|FCB] are only valid for SMB1, so
+ * they're not supposed to be set when we're called as part
+ * of restoring an fsp when doing a Durable Handle reconnect.
+ */
+ SMB_ASSERT(!(flags & SHARE_ENTRY_FLAG_DENY_DOS));
+ SMB_ASSERT(!(flags & SHARE_ENTRY_FLAG_DENY_FCB));
}
}
static uint32_t map_share_mode_to_deny_mode(
- uint32_t share_access, uint32_t private_options)
+ uint32_t share_access, uint16_t flags)
{
switch (share_access & ~FILE_SHARE_DELETE) {
case FILE_SHARE_NONE:
case FILE_SHARE_READ|FILE_SHARE_WRITE:
return DENY_NONE;
}
- if (private_options & NTCREATEX_FLAG_DENY_DOS) {
+ if (flags & SHARE_ENTRY_FLAG_DENY_DOS) {
return DENY_DOS;
- } else if (private_options & NTCREATEX_FLAG_DENY_FCB) {
+ } else if (flags & SHARE_ENTRY_FLAG_DENY_FCB) {
return DENY_FCB;
}
}
denymode_int = map_share_mode_to_deny_mode(e->share_access,
- e->private_options);
+ e->flags);
switch (denymode_int) {
case DENY_NONE:
denymode = "DENY_NONE";