Passing NULL means use none.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=14512
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
uint32_t capabilities;
uint16_t security_mode;
struct GUID guid;
+ struct smb311_capabilities smb3_capabilities;
} client;
struct {
enum smb_signing_setting signing_state,
uint32_t smb1_capabilities,
struct GUID *client_guid,
- uint32_t smb2_capabilities)
+ uint32_t smb2_capabilities,
+ const struct smb311_capabilities *smb3_capabilities)
{
struct smbXcli_conn *conn = NULL;
void *ss = NULL;
conn->smb2.client.guid = *client_guid;
}
conn->smb2.client.capabilities = smb2_capabilities;
+ if (smb3_capabilities != NULL) {
+ conn->smb2.client.smb3_capabilities = *smb3_capabilities;
+ }
conn->smb2.cur_credits = 1;
conn->smb2.max_credits = 0;
struct iovec;
struct smb2_create_blobs;
struct smb_create_returns;
+struct smb311_capabilities;
struct smbXcli_conn *smbXcli_conn_create(TALLOC_CTX *mem_ctx,
int fd,
enum smb_signing_setting signing_state,
uint32_t smb1_capabilities,
struct GUID *client_guid,
- uint32_t smb2_capabilities);
+ uint32_t smb2_capabilities,
+ const struct smb311_capabilities *smb3_capabilities);
bool smbXcli_conn_is_connected(struct smbXcli_conn *conn);
void smbXcli_conn_disconnect(struct smbXcli_conn *conn, NTSTATUS status);
#include "../libcli/smb/smb_seal.h"
#include "async_smb.h"
#include "../libcli/smb/smbXcli_base.h"
+#include "../libcli/smb/smb2_negotiate_context.h"
#include "../librpc/ndr/libndr.h"
#include "../include/client.h"
bool use_level_II_oplocks = false;
uint32_t smb1_capabilities = 0;
uint32_t smb2_capabilities = 0;
+ struct smb311_capabilities smb3_capabilities = { };
struct GUID client_guid;
if (!GUID_all_zero(&cli_state_client_guid)) {
signing_state,
smb1_capabilities,
&client_guid,
- smb2_capabilities);
+ smb2_capabilities,
+ &smb3_capabilities);
if (cli->conn == NULL) {
goto error;
}
}
conn = smbXcli_conn_create(talloc_tos(), fd, host, SMB_SIGNING_OFF, 0,
- NULL, 0);
+ NULL, 0, NULL);
if (conn == NULL) {
d_fprintf(stderr, "smbXcli_conn_create failed\n");
return false;
options->signing,
smb1_capabilities,
NULL, /* client_guid */
- 0); /* smb2_capabilities */
+ 0, /* smb2_capabilities */
+ NULL); /* smb3_ciphers */
if (transport->conn == NULL) {
TALLOC_FREE(sock);
TALLOC_FREE(transport);
options->signing,
0, /* smb1_capabilities */
&options->client_guid,
- options->smb2_capabilities);
+ options->smb2_capabilities,
+ &options->smb3_capabilities);
if (transport->conn == NULL) {
talloc_free(transport);
return NULL;
state->options.signing,
smb1_capabilities,
&state->options.client_guid,
- state->options.smb2_capabilities);
+ state->options.smb2_capabilities,
+ &state->options.smb3_capabilities);
if (tevent_req_nomem(state->conn, req)) {
return;
}