libcli/smb: Introduce smbXcli_conn_dfs_supported
[obnox/samba/samba-obnox.git] / libcli / smb / smbXcli_base.h
index 60ef2727a60b3e88dd9e02e465f737359217cb34..332203d784eef75563ed5b252bb39ad595e27c85 100644 (file)
@@ -26,6 +26,8 @@ struct smbXcli_session;
 struct smbXcli_tcon;
 struct smb_trans_enc_state;
 struct GUID;
+struct iovec;
+struct smb2_create_blobs;
 
 struct smbXcli_conn *smbXcli_conn_create(TALLOC_CTX *mem_ctx,
                                         int fd,
@@ -40,6 +42,8 @@ void smbXcli_conn_disconnect(struct smbXcli_conn *conn, NTSTATUS status);
 
 bool smbXcli_conn_has_async_calls(struct smbXcli_conn *conn);
 
+bool smbXcli_conn_dfs_supported(struct smbXcli_conn *conn);
+
 enum protocol_types smbXcli_conn_protocol(struct smbXcli_conn *conn);
 bool smbXcli_conn_use_unicode(struct smbXcli_conn *conn);
 
@@ -185,6 +189,16 @@ NTSTATUS smb1cli_trans(TALLOC_CTX *mem_ctx, struct smbXcli_conn *conn,
                uint8_t **rparam, uint32_t min_rparam, uint32_t *num_rparam,
                uint8_t **rdata, uint32_t min_rdata, uint32_t *num_rdata);
 
+struct tevent_req *smb1cli_echo_send(TALLOC_CTX *mem_ctx,
+                                    struct tevent_context *ev,
+                                    struct smbXcli_conn *conn,
+                                    uint32_t timeout_msec,
+                                    uint16_t num_echos,
+                                    DATA_BLOB data);
+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);
+
 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);
@@ -200,8 +214,7 @@ struct tevent_req *smb2cli_req_create(TALLOC_CTX *mem_ctx,
                                      uint32_t additional_flags,
                                      uint32_t clear_flags,
                                      uint32_t timeout_msec,
-                                     uint32_t pid,
-                                     uint32_t tid,
+                                     struct smbXcli_tcon *tcon,
                                      struct smbXcli_session *session,
                                      const uint8_t *fixed,
                                      uint16_t fixed_len,
@@ -224,8 +237,7 @@ struct tevent_req *smb2cli_req_send(TALLOC_CTX *mem_ctx,
                                    uint32_t additional_flags,
                                    uint32_t clear_flags,
                                    uint32_t timeout_msec,
-                                   uint32_t pid,
-                                   uint32_t tid,
+                                   struct smbXcli_tcon *tcon,
                                    struct smbXcli_session *session,
                                    const uint8_t *fixed,
                                    uint16_t fixed_len,
@@ -250,18 +262,25 @@ NTSTATUS smbXcli_negprot(struct smbXcli_conn *conn,
 
 struct smbXcli_session *smbXcli_session_create(TALLOC_CTX *mem_ctx,
                                               struct smbXcli_conn *conn);
+struct smbXcli_session *smbXcli_session_copy(TALLOC_CTX *mem_ctx,
+                                              struct smbXcli_session *src);
+NTSTATUS smbXcli_session_application_key(struct smbXcli_session *session,
+                                        TALLOC_CTX *mem_ctx,
+                                        DATA_BLOB *key);
+void smbXcli_session_set_disconnect_expired(struct smbXcli_session *session);
 uint16_t smb1cli_session_current_id(struct smbXcli_session* session);
 void smb1cli_session_set_id(struct smbXcli_session* session,
                            uint16_t session_id);
+NTSTATUS smb1cli_session_set_session_key(struct smbXcli_session *session,
+                                        const DATA_BLOB _session_key);
+NTSTATUS smb1cli_session_protect_session_key(struct smbXcli_session *session);
 uint8_t smb2cli_session_security_mode(struct smbXcli_session *session);
 uint64_t smb2cli_session_current_id(struct smbXcli_session *session);
 uint16_t smb2cli_session_get_flags(struct smbXcli_session *session);
-NTSTATUS smb2cli_session_application_key(struct smbXcli_session *session,
-                                        TALLOC_CTX *mem_ctx,
-                                        DATA_BLOB *key);
 void smb2cli_session_set_id_and_flags(struct smbXcli_session *session,
                                      uint64_t session_id,
                                      uint16_t session_flags);
+void smb2cli_session_increment_channel_sequence(struct smbXcli_session *session);
 NTSTATUS smb2cli_session_set_session_key(struct smbXcli_session *session,
                                         const DATA_BLOB session_key,
                                         const struct iovec *recv_iov);
@@ -284,7 +303,9 @@ bool smb1cli_tcon_set_values(struct smbXcli_tcon *tcon,
                             const char *service,
                             const char *fs_type);
 uint32_t smb2cli_tcon_current_id(struct smbXcli_tcon *tcon);
+uint32_t smb2cli_tcon_capabilities(struct smbXcli_tcon *tcon);
 void smb2cli_tcon_set_values(struct smbXcli_tcon *tcon,
+                            struct smbXcli_session *session,
                             uint32_t tcon_id,
                             uint8_t type,
                             uint32_t flags,
@@ -561,4 +582,12 @@ NTSTATUS smb2cli_ioctl(struct smbXcli_conn *conn,
                       DATA_BLOB *out_input_buffer,
                       DATA_BLOB *out_output_buffer);
 
+struct tevent_req *smb2cli_echo_send(TALLOC_CTX *mem_ctx,
+                                    struct tevent_context *ev,
+                                    struct smbXcli_conn *conn,
+                                    uint32_t timeout_msec);
+NTSTATUS smb2cli_echo_recv(struct tevent_req *req);
+NTSTATUS smb2cli_echo(struct smbXcli_conn *conn,
+                     uint32_t timeout_msec);
+
 #endif /* _SMBXCLI_BASE_H_ */