s3: libsmbclient: Add server-side copy support
[samba.git] / libcli / smb / smbXcli_base.c
index 075420323d0391cf7ec075003a60604cc6afc5c6..2f47fe60d4fd5a1f7abf97b4277d236e2c7cd58f 100644 (file)
@@ -130,6 +130,9 @@ struct smbXcli_conn {
                uint16_t cur_credits;
                uint16_t max_credits;
 
+               uint32_t cc_chunk_len;
+               uint32_t cc_max_chunks;
+
                uint8_t io_priority;
 
                uint8_t preauth_sha512[64];
@@ -409,6 +412,13 @@ struct smbXcli_conn *smbXcli_conn_create(TALLOC_CTX *mem_ctx,
        conn->smb2.max_credits = 0;
        conn->smb2.io_priority = 1;
 
+       /*
+        * Samba and Windows servers accept a maximum of 16 MiB with a maximum
+        * chunk length of 1 MiB.
+        */
+       conn->smb2.cc_chunk_len = 1024 * 1024;
+       conn->smb2.cc_max_chunks = 16;
+
        talloc_set_destructor(conn, smbXcli_conn_destructor);
        return conn;
 
@@ -2595,6 +2605,28 @@ void smb2cli_conn_set_io_priority(struct smbXcli_conn *conn,
        conn->smb2.io_priority = io_priority;
 }
 
+uint32_t smb2cli_conn_cc_chunk_len(struct smbXcli_conn *conn)
+{
+       return conn->smb2.cc_chunk_len;
+}
+
+void smb2cli_conn_set_cc_chunk_len(struct smbXcli_conn *conn,
+                                   uint32_t chunk_len)
+{
+       conn->smb2.cc_chunk_len = chunk_len;
+}
+
+uint32_t smb2cli_conn_cc_max_chunks(struct smbXcli_conn *conn)
+{
+       return conn->smb2.cc_max_chunks;
+}
+
+void smb2cli_conn_set_cc_max_chunks(struct smbXcli_conn *conn,
+                                   uint32_t max_chunks)
+{
+       conn->smb2.cc_max_chunks = max_chunks;
+}
+
 static void smb2cli_req_cancel_done(struct tevent_req *subreq);
 
 static bool smb2cli_req_cancel(struct tevent_req *req)