libcli/smb: Add smbXcli_conn_use_status32
[obnox/samba/samba-obnox.git] / libcli / smb / smbXcli_base.h
index 67ffe1d7460560a88f07118032d4f5bb194379a8..82a4c90fa03b6a07180c38aeb90eac05f3cdb33c 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,7 +42,11 @@ 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_status32(struct smbXcli_conn *conn);
+bool smbXcli_conn_use_large_files(struct smbXcli_conn *conn);
 bool smbXcli_conn_use_unicode(struct smbXcli_conn *conn);
 
 void smbXcli_conn_set_sockopt(struct smbXcli_conn *conn, const char *options);
@@ -185,6 +191,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 +216,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 +239,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 +264,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 +305,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,
@@ -468,7 +491,7 @@ struct tevent_req *smb2cli_query_info_send(TALLOC_CTX *mem_ctx,
                                           struct smbXcli_conn *conn,
                                           uint32_t timeout_msec,
                                           struct smbXcli_session *session,
-                                          uint32_t tcon_id,
+                                          struct smbXcli_tcon *tcon,
                                           uint8_t in_info_type,
                                           uint8_t in_file_info_class,
                                           uint32_t in_max_output_length,
@@ -483,7 +506,7 @@ NTSTATUS smb2cli_query_info_recv(struct tevent_req *req,
 NTSTATUS smb2cli_query_info(struct smbXcli_conn *conn,
                            uint32_t timeout_msec,
                            struct smbXcli_session *session,
-                           uint32_t tcon_id,
+                           struct smbXcli_tcon *tcon,
                            uint8_t in_info_type,
                            uint8_t in_file_info_class,
                            uint32_t in_max_output_length,
@@ -500,7 +523,7 @@ struct tevent_req *smb2cli_query_directory_send(TALLOC_CTX *mem_ctx,
                                                struct smbXcli_conn *conn,
                                                uint32_t timeout_msec,
                                                struct smbXcli_session *session,
-                                               uint32_t tcon_id,
+                                               struct smbXcli_tcon *tcon,
                                                uint8_t level,
                                                uint8_t flags,
                                                uint32_t file_index,
@@ -515,7 +538,7 @@ NTSTATUS smb2cli_query_directory_recv(struct tevent_req *req,
 NTSTATUS smb2cli_query_directory(struct smbXcli_conn *conn,
                                 uint32_t timeout_msec,
                                 struct smbXcli_session *session,
-                                uint32_t tcon_id,
+                                struct smbXcli_tcon *tcon,
                                 uint8_t level,
                                 uint8_t flags,
                                 uint32_t file_index,
@@ -532,7 +555,7 @@ struct tevent_req *smb2cli_ioctl_send(TALLOC_CTX *mem_ctx,
                                      struct smbXcli_conn *conn,
                                      uint32_t timeout_msec,
                                      struct smbXcli_session *session,
-                                     uint32_t tcon_id,
+                                     struct smbXcli_tcon *tcon,
                                      uint64_t in_fid_persistent,
                                      uint64_t in_fid_volatile,
                                      uint32_t in_ctl_code,
@@ -548,7 +571,7 @@ NTSTATUS smb2cli_ioctl_recv(struct tevent_req *req,
 NTSTATUS smb2cli_ioctl(struct smbXcli_conn *conn,
                       uint32_t timeout_msec,
                       struct smbXcli_session *session,
-                      uint32_t tcon_id,
+                      struct smbXcli_tcon *tcon,
                       uint64_t in_fid_persistent,
                       uint64_t in_fid_volatile,
                       uint32_t in_ctl_code,
@@ -561,4 +584,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_ */