return pres2;
}
+NTSTATUS dcerpc_presentation_status(const struct dcerpc_presentation *pres)
+{
+ struct dcerpc_ack_ctx *ack = &pres->negotiate.ack;
+
+ switch (ack->result) {
+ case DCERPC_BIND_ACK_RESULT_ACCEPTANCE:
+ return NT_STATUS_OK;
+
+ case DCERPC_BIND_ACK_RESULT_NEGOTIATE_ACK:
+ /*
+ * We have not asked for this...
+ */
+ return NT_STATUS_RPC_PROTOCOL_ERROR;
+ default:
+ break;
+ }
+
+ switch (ack->reason.value) {
+ case DCERPC_BIND_ACK_REASON_ABSTRACT_SYNTAX_NOT_SUPPORTED:
+ return NT_STATUS_RPC_UNSUPPORTED_NAME_SYNTAX;
+
+ case DCERPC_BIND_ACK_REASON_TRANSFER_SYNTAXES_NOT_SUPPORTED:
+ return NT_STATUS_RPC_UNSUPPORTED_NAME_SYNTAX;
+
+ default:
+ break;
+ }
+
+ return NT_STATUS_UNSUCCESSFUL;
+}
+
struct dcerpc_call *dcerpc_call_allocate(TALLOC_CTX *mem_ctx,
struct dcerpc_association *assoc,
struct dcerpc_security *sec,
const uint32_t *context_id,
const struct ndr_interface_table *table,
const struct ndr_syntax_id *transfer);
+NTSTATUS dcerpc_presentation_status(const struct dcerpc_presentation *pres);
struct dcerpc_call *dcerpc_call_allocate(TALLOC_CTX *mem_ctx,
struct dcerpc_association *assoc,
struct dcerpc_security *sec,