mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
s3/libsmb: make use of smbXcli_tcon_is_dfs_share()
Bug: https://bugzilla.samba.org/show_bug.cgi?id=10200 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
This commit is contained in:
parent
114e33717d
commit
37f0e3722c
@ -822,6 +822,8 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx,
|
|||||||
SMB_STRUCT_STAT sbuf;
|
SMB_STRUCT_STAT sbuf;
|
||||||
uint32 attributes;
|
uint32 attributes;
|
||||||
NTSTATUS status;
|
NTSTATUS status;
|
||||||
|
struct smbXcli_tcon *root_tcon = NULL;
|
||||||
|
struct smbXcli_tcon *target_tcon = NULL;
|
||||||
|
|
||||||
if ( !rootcli || !path || !targetcli ) {
|
if ( !rootcli || !path || !targetcli ) {
|
||||||
return NT_STATUS_INVALID_PARAMETER;
|
return NT_STATUS_INVALID_PARAMETER;
|
||||||
@ -829,7 +831,13 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx,
|
|||||||
|
|
||||||
/* Don't do anything if this is not a DFS root. */
|
/* Don't do anything if this is not a DFS root. */
|
||||||
|
|
||||||
if ( !rootcli->dfsroot) {
|
if (smbXcli_conn_protocol(rootcli->conn) >= PROTOCOL_SMB2_02) {
|
||||||
|
root_tcon = rootcli->smb2.tcon;
|
||||||
|
} else {
|
||||||
|
root_tcon = rootcli->smb1.tcon;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!smbXcli_tcon_is_dfs_share(root_tcon)) {
|
||||||
*targetcli = rootcli;
|
*targetcli = rootcli;
|
||||||
*pp_targetpath = talloc_strdup(ctx, path);
|
*pp_targetpath = talloc_strdup(ctx, path);
|
||||||
if (!*pp_targetpath) {
|
if (!*pp_targetpath) {
|
||||||
@ -1029,8 +1037,14 @@ NTSTATUS cli_resolve_path(TALLOC_CTX *ctx,
|
|||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
||||||
|
if (smbXcli_conn_protocol((*targetcli)->conn) >= PROTOCOL_SMB2_02) {
|
||||||
|
target_tcon = (*targetcli)->smb2.tcon;
|
||||||
|
} else {
|
||||||
|
target_tcon = (*targetcli)->smb1.tcon;
|
||||||
|
}
|
||||||
|
|
||||||
/* If returning true ensure we return a dfs root full path. */
|
/* If returning true ensure we return a dfs root full path. */
|
||||||
if ((*targetcli)->dfsroot) {
|
if (smbXcli_tcon_is_dfs_share(target_tcon)) {
|
||||||
dfs_path = talloc_strdup(ctx, *pp_targetpath);
|
dfs_path = talloc_strdup(ctx, *pp_targetpath);
|
||||||
if (!dfs_path) {
|
if (!dfs_path) {
|
||||||
return NT_STATUS_NO_MEMORY;
|
return NT_STATUS_NO_MEMORY;
|
||||||
|
@ -364,6 +364,13 @@ SMBC_fstatvfs_ctx(SMBCCTX *context,
|
|||||||
unsigned long flags = 0;
|
unsigned long flags = 0;
|
||||||
uint32 fs_attrs = 0;
|
uint32 fs_attrs = 0;
|
||||||
struct cli_state *cli = file->srv->cli;
|
struct cli_state *cli = file->srv->cli;
|
||||||
|
struct smbXcli_tcon *tcon;
|
||||||
|
|
||||||
|
if (smbXcli_conn_protocol(cli->conn) >= PROTOCOL_SMB2_02) {
|
||||||
|
tcon = cli->smb2.tcon;
|
||||||
|
} else {
|
||||||
|
tcon = cli->smb1.tcon;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize all fields (at least until we actually use them) */
|
/* Initialize all fields (at least until we actually use them) */
|
||||||
memset(st, 0, sizeof(*st));
|
memset(st, 0, sizeof(*st));
|
||||||
@ -469,7 +476,9 @@ SMBC_fstatvfs_ctx(SMBCCTX *context,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* See if DFS is supported */
|
/* See if DFS is supported */
|
||||||
if (smbXcli_conn_dfs_supported(cli->conn) && cli->dfsroot) {
|
if (smbXcli_conn_dfs_supported(cli->conn) &&
|
||||||
|
smbXcli_tcon_is_dfs_share(tcon))
|
||||||
|
{
|
||||||
flags |= SMBC_VFS_FEATURE_DFS;
|
flags |= SMBC_VFS_FEATURE_DFS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user