Merge commit 'release-4-0-0alpha15' into master4-tmp
[amitay/samba.git] / source3 / include / async_smb.h
index 40a8d3476eee1684c82c812deaa201cf26dea90e..1685d4985d44f119a98dc7c8883b73d4b06d68ae 100644 (file)
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "includes.h"
+#ifndef __ASYNC_SMB_H__
+#define __ASYNC_SMB_H__
 
-/*
- * Ship a new smb request to the server
- */
-
-struct async_req *cli_request_send(TALLOC_CTX *mem_ctx,
-                                  struct event_context *ev,
-                                  struct cli_state *cli,
-                                  uint8_t smb_command,
-                                  uint8_t additional_flags,
-                                  uint8_t wct, const uint16_t *vwv,
-                                  uint16_t num_bytes, const uint8_t *bytes);
-
-/*
- * Convenience function to get the SMB part out of an async_req
- */
-
-struct cli_request *cli_request_get(struct async_req *req);
+struct cli_state;
 
 /*
  * Fetch an error out of a NBT packet
@@ -48,3 +33,49 @@ NTSTATUS cli_pull_error(char *buf);
  */
 
 void cli_set_error(struct cli_state *cli, NTSTATUS status);
+
+struct tevent_req *cli_smb_req_create(TALLOC_CTX *mem_ctx,
+                                     struct event_context *ev,
+                                     struct cli_state *cli,
+                                     uint8_t smb_command,
+                                     uint8_t additional_flags,
+                                     uint8_t wct, uint16_t *vwv,
+                                     int iov_count,
+                                     struct iovec *bytes_iov);
+NTSTATUS cli_smb_req_send(struct tevent_req *req);
+size_t cli_smb_wct_ofs(struct tevent_req **reqs, int num_reqs);
+NTSTATUS cli_smb_chain_send(struct tevent_req **reqs, int num_reqs);
+uint8_t *cli_smb_inbuf(struct tevent_req *req);
+bool cli_has_async_calls(struct cli_state *cli);
+void cli_smb_req_unset_pending(struct tevent_req *req);
+bool cli_smb_req_set_pending(struct tevent_req *req);
+uint16_t cli_smb_req_mid(struct tevent_req *req);
+void cli_smb_req_set_mid(struct tevent_req *req, uint16_t mid);
+uint32_t cli_smb_req_seqnum(struct tevent_req *req);
+void cli_smb_req_set_seqnum(struct tevent_req *req, uint32_t seqnum);
+struct tevent_req *cli_smb_send(TALLOC_CTX *mem_ctx, struct event_context *ev,
+                               struct cli_state *cli,
+                               uint8_t smb_command, uint8_t additional_flags,
+                               uint8_t wct, uint16_t *vwv,
+                               uint32_t num_bytes,
+                               const uint8_t *bytes);
+NTSTATUS cli_smb_recv(struct tevent_req *req,
+                     TALLOC_CTX *mem_ctx, uint8_t **pinbuf,
+                     uint8_t min_wct, uint8_t *pwct, uint16_t **pvwv,
+                     uint32_t *pnum_bytes, uint8_t **pbytes);
+
+struct tevent_req *cli_smb_oplock_break_waiter_send(TALLOC_CTX *mem_ctx,
+                                                   struct event_context *ev,
+                                                   struct cli_state *cli);
+NTSTATUS cli_smb_oplock_break_waiter_recv(struct tevent_req *req,
+                                         uint16_t *pfnum,
+                                         uint8_t *plevel);
+
+struct tevent_req *cli_session_request_send(TALLOC_CTX *mem_ctx,
+                                           struct tevent_context *ev,
+                                           int sock,
+                                           const struct nmb_name *called,
+                                           const struct nmb_name *calling);
+bool cli_session_request_recv(struct tevent_req *req, int *err, uint8_t *resp);
+
+#endif