libcli/smb: add smb2cli_conn_req_possible()
authorStefan Metzmacher <metze@samba.org>
Tue, 13 Aug 2013 13:49:19 +0000 (15:49 +0200)
committerKarolin Seeger <kseeger@samba.org>
Fri, 30 Aug 2013 09:53:23 +0000 (11:53 +0200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
(cherry picked from commit 7efdc323d1a1abdae70bcafefe07b3cffcdb2521)

libcli/smb/smbXcli_base.c
libcli/smb/smbXcli_base.h

index 028f1522d41f7171ebb329fc55c02f89024fd196..b502f4f70543ac719baf0ad09c7e301c1f62430f 100644 (file)
@@ -2452,6 +2452,28 @@ bool smbXcli_conn_has_async_calls(struct smbXcli_conn *conn)
                || (talloc_array_length(conn->pending) != 0));
 }
 
+bool smb2cli_conn_req_possible(struct smbXcli_conn *conn, uint32_t *max_dyn_len)
+{
+       uint16_t credits = 1;
+
+       if (conn->smb2.cur_credits == 0) {
+               if (max_dyn_len != NULL) {
+                       *max_dyn_len = 0;
+               }
+               return false;
+       }
+
+       if (conn->smb2.server.capabilities & SMB2_CAP_LARGE_MTU) {
+               credits = conn->smb2.cur_credits;
+       }
+
+       if (max_dyn_len != NULL) {
+               *max_dyn_len = credits * 65536;
+       }
+
+       return true;
+}
+
 uint32_t smb2cli_conn_server_capabilities(struct smbXcli_conn *conn)
 {
        return conn->smb2.server.capabilities;
index 6b3156f42a0b387891576eb7065623419e25c0ee..a7cfcc32607329c3ad7a7a5a437198ebff98a229 100644 (file)
@@ -199,6 +199,7 @@ NTSTATUS smb1cli_echo_recv(struct tevent_req *req);
 NTSTATUS smb1cli_echo(struct smbXcli_conn *conn, uint32_t timeout_msec,
                      uint16_t num_echos, DATA_BLOB data);
 
+bool smb2cli_conn_req_possible(struct smbXcli_conn *conn, uint32_t *max_dyn_len);
 uint32_t smb2cli_conn_server_capabilities(struct smbXcli_conn *conn);
 uint16_t smb2cli_conn_server_security_mode(struct smbXcli_conn *conn);
 uint32_t smb2cli_conn_max_trans_size(struct smbXcli_conn *conn);