summaryrefslogtreecommitdiff
path: root/source4
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2024-08-09 09:07:40 +0200
committerAndreas Schneider <asn@cryptomilk.org>2025-01-29 11:20:33 +0000
commit6cb46e5cb60ce753cac55a8ba19f5cffb697d545 (patch)
tree3862317343ac800fe186435268f83bb26a7615cd /source4
parente2969ed00fd85d5b2bf62d2a17643b5f8481b278 (diff)
downloadsamba-6cb46e5cb60ce753cac55a8ba19f5cffb697d545.tar.gz
samba-6cb46e5cb60ce753cac55a8ba19f5cffb697d545.tar.bz2
samba-6cb46e5cb60ce753cac55a8ba19f5cffb697d545.zip
s4:libcli/smb2: add smb2_tree_channel() helper
This can be used after smb2_session_channel() in order to have a smb2_tree structure representing the same logic tree connect but uses a different channel/connection. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14430 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source4')
-rw-r--r--source4/libcli/smb2/tcon.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/source4/libcli/smb2/tcon.c b/source4/libcli/smb2/tcon.c
index 702e308aa63..e66f00790fd 100644
--- a/source4/libcli/smb2/tcon.c
+++ b/source4/libcli/smb2/tcon.c
@@ -50,3 +50,28 @@ struct smb2_tree *smb2_tree_init(struct smb2_session *session,
return tree;
}
+
+struct smb2_tree *smb2_tree_channel(struct smb2_tree *base_tree,
+ TALLOC_CTX *parent_ctx, bool primary,
+ struct smb2_session *session)
+{
+ struct smb2_tree *tree;
+
+ tree = talloc_zero(parent_ctx, struct smb2_tree);
+ if (!session) {
+ return NULL;
+ }
+ if (primary) {
+ tree->session = talloc_steal(tree, session);
+ } else {
+ tree->session = talloc_reference(tree, session);
+ }
+
+ tree->smbXcli = smbXcli_tcon_copy(tree, base_tree->smbXcli);
+ if (tree->smbXcli == NULL) {
+ talloc_free(tree);
+ return NULL;
+ }
+
+ return tree;
+}