Lines Matching refs:mxa
54 static int ndr_recv_request(ndr_xa_t *mxa);
55 static int ndr_recv_frag(ndr_xa_t *mxa);
66 ndr_xa_t *mxa; in ndr_pipe_worker() local
72 if ((mxa = malloc(sizeof (*mxa))) == NULL) in ndr_pipe_worker()
76 bzero(mxa, sizeof (*mxa)); in ndr_pipe_worker()
77 rc = ndr_pipe_process(np, mxa); in ndr_pipe_worker()
80 free(mxa); in ndr_pipe_worker()
93 ndr_pipe_process(ndr_pipe_t *np, ndr_xa_t *mxa) in ndr_pipe_process() argument
99 mxa->pipe = np; in ndr_pipe_process()
100 mxa->binding_list = np->np_binding; in ndr_pipe_process()
102 if ((mxa->heap = ndr_heap_create()) == NULL) in ndr_pipe_process()
105 recv_nds = &mxa->recv_nds; in ndr_pipe_process()
106 rc = nds_initialize(recv_nds, 0, NDR_MODE_CALL_RECV, mxa->heap); in ndr_pipe_process()
110 send_nds = &mxa->send_nds; in ndr_pipe_process()
111 rc = nds_initialize(send_nds, 0, NDR_MODE_RETURN_SEND, mxa->heap); in ndr_pipe_process()
115 rc = ndr_recv_request(mxa); in ndr_pipe_process()
119 (void) ndr_svc_process(mxa); in ndr_pipe_process()
120 (void) ndr_send_reply(mxa); in ndr_pipe_process()
124 nds_destruct(&mxa->send_nds); in ndr_pipe_process()
126 nds_destruct(&mxa->recv_nds); in ndr_pipe_process()
128 ndr_heap_destroy(mxa->heap); in ndr_pipe_process()
138 ndr_recv_request(ndr_xa_t *mxa) in ndr_recv_request() argument
140 ndr_common_header_t *hdr = &mxa->recv_hdr.common_hdr; in ndr_recv_request()
141 ndr_stream_t *nds = &mxa->recv_nds; in ndr_recv_request()
145 rc = ndr_recv_frag(mxa); in ndr_recv_request()
152 rc = ndr_recv_frag(mxa); in ndr_recv_request()
163 rc = ndr_decode_pdu_hdr(mxa); in ndr_recv_request()
187 ndr_recv_frag(ndr_xa_t *mxa) in ndr_recv_frag() argument
189 ndr_common_header_t *hdr = &mxa->recv_hdr.common_hdr; in ndr_recv_frag()
190 ndr_stream_t *nds = &mxa->recv_nds; in ndr_recv_frag()
203 rc = NDR_PIPE_RECV(mxa->pipe, data, NDR_RSP_HDR_SIZE); in ndr_recv_frag()
214 hdr->frag_length > mxa->pipe->np_max_xmit_frag) in ndr_recv_frag()
230 rc = NDR_PIPE_RECV(mxa->pipe, data, pay_size); in ndr_recv_frag()
243 ndr_svc_process(ndr_xa_t *mxa) in ndr_svc_process() argument
247 (void) ndr_reply_prepare_hdr(mxa); in ndr_svc_process()
249 switch (mxa->ptype) { in ndr_svc_process()
251 rc = ndr_svc_bind(mxa); in ndr_svc_process()
255 rc = ndr_svc_request(mxa); in ndr_svc_process()
259 rc = ndr_svc_alter_context(mxa); in ndr_svc_process()
268 ndr_reply_fault(mxa, rc); in ndr_svc_process()
278 ndr_svc_bind(ndr_xa_t *mxa) in ndr_svc_bind() argument
294 cont_list = &mxa->recv_hdr.bind_hdr.p_context_elem; in ndr_svc_bind()
295 result_list = &mxa->send_hdr.bind_ack_hdr.p_result_list; in ndr_svc_bind()
302 sec_addr = &mxa->send_hdr.bind_ack_hdr.sec_addr; in ndr_svc_bind()
321 if ((mbind = ndr_svc_find_binding(mxa, p_cont_id)) != NULL) { in ndr_svc_bind()
329 if ((mbind = ndr_svc_new_binding(mxa)) == NULL) { in ndr_svc_bind()
355 sec_addr = &mxa->send_hdr.bind_ack_hdr.sec_addr; in ndr_svc_bind()
366 mxa->binding = mbind; in ndr_svc_bind()
374 rc = (msvc->bind_req)(mxa); in ndr_svc_bind()
398 ndr_svc_alter_context(ndr_xa_t *mxa) in ndr_svc_alter_context() argument
412 result_list = &mxa->send_hdr.alter_context_rsp_hdr.p_result_list; in ndr_svc_alter_context()
422 cont_list = &mxa->recv_hdr.alter_context_hdr.p_context_elem; in ndr_svc_alter_context()
425 if (ndr_svc_find_binding(mxa, p_cont_id) != NULL) in ndr_svc_alter_context()
428 if ((mbind = ndr_svc_new_binding(mxa)) == NULL) { in ndr_svc_alter_context()
452 mxa->binding = mbind; in ndr_svc_alter_context()
454 sec_addr = &mxa->send_hdr.alter_context_rsp_hdr.sec_addr; in ndr_svc_alter_context()
465 ndr_svc_request(ndr_xa_t *mxa) in ndr_svc_request() argument
472 mxa->opnum = mxa->recv_hdr.request_hdr.opnum; in ndr_svc_request()
473 p_cont_id = mxa->recv_hdr.request_hdr.p_cont_id; in ndr_svc_request()
475 if ((mbind = ndr_svc_find_binding(mxa, p_cont_id)) == NULL) in ndr_svc_request()
478 mxa->binding = mbind; in ndr_svc_request()
484 mxa->send_nds.pdu_scan_offset = NDR_RSP_HDR_SIZE; in ndr_svc_request()
487 rc = (*msvc->call_stub)(mxa); in ndr_svc_request()
489 rc = ndr_generic_call_stub(mxa); in ndr_svc_request()
493 msvc->name, mxa->opnum, rc); in ndr_svc_request()
505 ndr_generic_call_stub(ndr_xa_t *mxa) in ndr_generic_call_stub() argument
507 ndr_binding_t *mbind = mxa->binding; in ndr_generic_call_stub()
511 int opnum = mxa->opnum; in ndr_generic_call_stub()
516 if (mxa->heap == NULL) { in ndr_generic_call_stub()
527 if ((param = ndr_heap_malloc(mxa->heap, p_len)) == NULL) in ndr_generic_call_stub()
532 rc = ndr_decode_call(mxa, param); in ndr_generic_call_stub()
536 rc = (*ste->func)(param, mxa); in ndr_generic_call_stub()
538 rc = ndr_encode_return(mxa, param); in ndr_generic_call_stub()
549 ndr_reply_prepare_hdr(ndr_xa_t *mxa) in ndr_reply_prepare_hdr() argument
551 ndr_common_header_t *rhdr = &mxa->recv_hdr.common_hdr; in ndr_reply_prepare_hdr()
552 ndr_common_header_t *hdr = &mxa->send_hdr.common_hdr; in ndr_reply_prepare_hdr()
569 switch (mxa->ptype) { in ndr_reply_prepare_hdr()
576 if (mxa->pipe->np_max_xmit_frag > in ndr_reply_prepare_hdr()
577 mxa->recv_hdr.bind_hdr.max_xmit_frag) in ndr_reply_prepare_hdr()
578 mxa->pipe->np_max_xmit_frag = in ndr_reply_prepare_hdr()
579 mxa->recv_hdr.bind_hdr.max_xmit_frag; in ndr_reply_prepare_hdr()
580 if (mxa->pipe->np_max_recv_frag > in ndr_reply_prepare_hdr()
581 mxa->recv_hdr.bind_hdr.max_recv_frag) in ndr_reply_prepare_hdr()
582 mxa->pipe->np_max_recv_frag = in ndr_reply_prepare_hdr()
583 mxa->recv_hdr.bind_hdr.max_recv_frag; in ndr_reply_prepare_hdr()
586 mxa->send_hdr.bind_ack_hdr.max_xmit_frag = in ndr_reply_prepare_hdr()
587 mxa->pipe->np_max_xmit_frag; in ndr_reply_prepare_hdr()
588 mxa->send_hdr.bind_ack_hdr.max_recv_frag = in ndr_reply_prepare_hdr()
589 mxa->pipe->np_max_recv_frag; in ndr_reply_prepare_hdr()
596 mxa->send_hdr.bind_ack_hdr.assoc_group_id = in ndr_reply_prepare_hdr()
597 mxa->recv_hdr.bind_hdr.assoc_group_id; in ndr_reply_prepare_hdr()
598 if (mxa->send_hdr.bind_ack_hdr.assoc_group_id == 0) in ndr_reply_prepare_hdr()
599 mxa->send_hdr.bind_ack_hdr.assoc_group_id = in ndr_reply_prepare_hdr()
600 (DWORD)(uintptr_t)mxa->pipe; in ndr_reply_prepare_hdr()
607 mxa->send_hdr.response_hdr.p_cont_id = in ndr_reply_prepare_hdr()
608 mxa->recv_hdr.request_hdr.p_cont_id; in ndr_reply_prepare_hdr()
609 mxa->send_hdr.response_hdr.cancel_count = 0; in ndr_reply_prepare_hdr()
610 mxa->send_hdr.response_hdr.reserved = 0; in ndr_reply_prepare_hdr()
619 mxa->send_hdr.alter_context_rsp_hdr.max_xmit_frag = in ndr_reply_prepare_hdr()
620 mxa->recv_hdr.alter_context_hdr.max_xmit_frag; in ndr_reply_prepare_hdr()
621 mxa->send_hdr.alter_context_rsp_hdr.max_recv_frag = in ndr_reply_prepare_hdr()
622 mxa->recv_hdr.alter_context_hdr.max_recv_frag; in ndr_reply_prepare_hdr()
623 mxa->send_hdr.alter_context_rsp_hdr.assoc_group_id = in ndr_reply_prepare_hdr()
624 mxa->recv_hdr.alter_context_hdr.assoc_group_id; in ndr_reply_prepare_hdr()
637 ndr_reply_fault(ndr_xa_t *mxa, unsigned long drc) in ndr_reply_fault() argument
639 ndr_common_header_t *rhdr = &mxa->recv_hdr.common_hdr; in ndr_reply_fault()
640 ndr_common_header_t *hdr = &mxa->send_hdr.common_hdr; in ndr_reply_fault()
641 ndr_stream_t *nds = &mxa->send_nds; in ndr_reply_fault()
650 hdr->frag_length = sizeof (mxa->send_hdr.fault_hdr); in ndr_reply_fault()
685 mxa->send_hdr.fault_hdr.common_hdr.ptype = NDR_PTYPE_FAULT; in ndr_reply_fault()
686 mxa->send_hdr.fault_hdr.status = fault_status; in ndr_reply_fault()
687 mxa->send_hdr.response_hdr.alloc_hint = hdr->frag_length; in ndr_reply_fault()
695 ndr_send_reply(ndr_xa_t *mxa) in ndr_send_reply() argument
697 ndr_common_header_t *hdr = &mxa->send_hdr.common_hdr; in ndr_send_reply()
698 ndr_stream_t *nds = &mxa->send_nds; in ndr_send_reply()
705 frag_size = mxa->pipe->np_max_recv_frag; in ndr_send_reply()
718 hdr->frag_length = ndr_bind_ack_hdr_size(mxa); in ndr_send_reply()
727 mxa->send_hdr.response_hdr.alloc_hint = in ndr_send_reply()
741 (void) ndr_encode_pdu_hdr(mxa); in ndr_send_reply()
743 (void) NDR_PIPE_SEND(mxa->pipe, pdu_buf, pdu_size); in ndr_send_reply()
765 mxa->send_hdr.response_hdr.alloc_hint = pdu_data_size; in ndr_send_reply()
767 (void) ndr_encode_pdu_hdr(mxa); in ndr_send_reply()
768 (void) NDR_PIPE_SEND(mxa->pipe, pdu_buf, frag_size); in ndr_send_reply()
779 mxa->send_hdr.response_hdr.alloc_hint = pdu_data_size; in ndr_send_reply()
781 (void) ndr_encode_pdu_hdr(mxa); in ndr_send_reply()
783 (void) NDR_PIPE_SEND(mxa->pipe, pdu_buf, frag_size); in ndr_send_reply()
794 mxa->send_hdr.response_hdr.alloc_hint = pdu_data_size; in ndr_send_reply()
796 (void) ndr_encode_pdu_hdr(mxa); in ndr_send_reply()
798 (void) NDR_PIPE_SEND(mxa->pipe, pdu_buf, frag_size); in ndr_send_reply()