s3-dcerpc: add dcerpc_pull_ncacn_packet().
authorGünther Deschner <gd@samba.org>
Mon, 23 Mar 2009 11:00:12 +0000 (12:00 +0100)
committerSimo Sorce <idra@samba.org>
Thu, 8 Jul 2010 03:45:50 +0000 (23:45 -0400)
Guenther

Signed-off-by: Simo Sorce <idra@samba.org>
source3/include/proto.h
source3/rpc_client/cli_pipe.c

index 2cbe8b3ccc84e4f27974f8c07992dc1b7dc80ce8..a998becfbee5e39583881772686b0533d567b64c 100644 (file)
@@ -4841,6 +4841,9 @@ NTSTATUS dcerpc_push_ncacn_packet(TALLOC_CTX *mem_ctx,
                                  uint32_t call_id,
                                  union dcerpc_payload u,
                                  DATA_BLOB *blob);
+NTSTATUS dcerpc_pull_ncacn_packet(TALLOC_CTX *mem_ctx,
+                                 const DATA_BLOB *blob,
+                                 struct ncacn_packet *r);
 struct tevent_req *rpc_pipe_bind_send(TALLOC_CTX *mem_ctx,
                                      struct event_context *ev,
                                      struct rpc_pipe_client *cli,
index db6fdc5ba2fdb9afb33408fcc6f76d3dad40e809..5b3894c6ec87110a50fdcf2cd43df7fcacf7d7d1 100644 (file)
@@ -335,6 +335,28 @@ NTSTATUS dcerpc_push_ncacn_packet(TALLOC_CTX *mem_ctx,
        return NT_STATUS_OK;
 }
 
+/*******************************************************************
+*******************************************************************/
+
+NTSTATUS dcerpc_pull_ncacn_packet(TALLOC_CTX *mem_ctx,
+                                 const DATA_BLOB *blob,
+                                 struct ncacn_packet *r)
+{
+       enum ndr_err_code ndr_err;
+
+       ndr_err = ndr_pull_struct_blob(blob, mem_ctx, r,
+               (ndr_pull_flags_fn_t)ndr_pull_ncacn_packet);
+       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+               return ndr_map_error2ntstatus(ndr_err);
+       }
+
+       if (DEBUGLEVEL >= 10) {
+               NDR_PRINT_DEBUG(ncacn_packet, r);
+       }
+
+       return NT_STATUS_OK;
+}
+
 /*******************************************************************
  Use SMBreadX to get rest of one fragment's worth of rpc data.
  Reads the whole size or give an error message