/* little-endian flag */
const uint8 DCERPC_DREP_LE = 0x10;
- /* header only version of ncacn_packet */
- typedef [public] struct {
- uint8 rpc_vers; /* RPC version */
- uint8 rpc_vers_minor; /* Minor version */
- dcerpc_pkt_type ptype; /* Packet type */
- uint8 pfc_flags; /* Fragmentation flags */
- uint8 drep[4]; /* NDR data representation */
- uint16 frag_length; /* Total length of fragment */
- uint16 auth_length; /* authenticator length */
- uint32 call_id; /* Call identifier */
- } ncacn_packet_header;
-
typedef [public] struct {
uint8 rpc_vers; /* RPC version */
uint8 rpc_vers_minor; /* Minor version */
uint32_t call_id,
union dcerpc_payload *u,
DATA_BLOB *blob);
-NTSTATUS dcerpc_push_ncacn_packet_header(TALLOC_CTX *mem_ctx,
- enum dcerpc_pkt_type ptype,
- uint8_t pfc_flags,
- uint16_t frag_length,
- uint16_t auth_length,
- uint32_t call_id,
- DATA_BLOB *blob);
NTSTATUS dcerpc_pull_ncacn_packet(TALLOC_CTX *mem_ctx,
const DATA_BLOB *blob,
struct ncacn_packet *r);
-NTSTATUS dcerpc_pull_ncacn_packet_header(TALLOC_CTX *mem_ctx,
- const DATA_BLOB *blob,
- struct ncacn_packet_header *r);
NTSTATUS dcerpc_push_dcerpc_auth(TALLOC_CTX *mem_ctx,
enum dcerpc_AuthType auth_type,
enum dcerpc_AuthLevel auth_level,
return NT_STATUS_OK;
}
-NTSTATUS dcerpc_push_ncacn_packet_header(TALLOC_CTX *mem_ctx,
- enum dcerpc_pkt_type ptype,
- uint8_t pfc_flags,
- uint16_t frag_length,
- uint16_t auth_length,
- uint32_t call_id,
- DATA_BLOB *blob)
-{
- struct ncacn_packet_header r;
- enum ndr_err_code ndr_err;
-
- r.rpc_vers = 5;
- r.rpc_vers_minor = 0;
- r.ptype = ptype;
- r.pfc_flags = pfc_flags;
- r.drep[0] = DCERPC_DREP_LE;
- r.drep[1] = 0;
- r.drep[2] = 0;
- r.drep[3] = 0;
- r.frag_length = frag_length;
- r.auth_length = auth_length;
- r.call_id = call_id;
-
- ndr_err = ndr_push_struct_blob(blob, mem_ctx, &r,
- (ndr_push_flags_fn_t)ndr_push_ncacn_packet_header);
- if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
- return ndr_map_error2ntstatus(ndr_err);
- }
-
- if (DEBUGLEVEL >= 10) {
- NDR_PRINT_DEBUG(ncacn_packet_header, &r);
- }
-
- return NT_STATUS_OK;
-}
-
/*******************************************************************
*******************************************************************/
return NT_STATUS_OK;
}
-/*******************************************************************
-*******************************************************************/
-
-NTSTATUS dcerpc_pull_ncacn_packet_header(TALLOC_CTX *mem_ctx,
- const DATA_BLOB *blob,
- struct ncacn_packet_header *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_header);
- if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
- return ndr_map_error2ntstatus(ndr_err);
- }
-
- if (DEBUGLEVEL >= 10) {
- NDR_PRINT_DEBUG(ncacn_packet_header, r);
- }
-
- return NT_STATUS_OK;
-}
-
/*******************************************************************
********************************************************************/