Lines Matching refs:mxa

246 	ndr_xa_t	*mxa;
259 if ((mxa = (ndr_xa_t *)malloc(sizeof (ndr_xa_t))) == NULL)
262 bzero(mxa, sizeof (ndr_xa_t));
263 mxa->fid = np->np_fid;
264 mxa->pipe = np;
265 mxa->binding_list = np->np_binding;
267 if ((mxa->heap = ndr_heap_create()) == NULL) {
268 free(mxa);
272 recv_nds = &mxa->recv_nds;
273 rc = nds_initialize(recv_nds, datalen, NDR_MODE_CALL_RECV, mxa->heap);
275 ndr_heap_destroy(mxa->heap);
276 free(mxa);
286 send_nds = &mxa->send_nds;
287 rc = nds_initialize(send_nds, 0, NDR_MODE_RETURN_SEND, mxa->heap);
289 nds_destruct(&mxa->recv_nds);
290 ndr_heap_destroy(mxa->heap);
291 free(mxa);
295 (void) ndr_svc_process(mxa);
298 nds_destruct(&mxa->recv_nds);
299 nds_destruct(&mxa->send_nds);
300 ndr_heap_destroy(mxa->heap);
301 free(mxa);
505 ndr_svc_process(ndr_xa_t *mxa)
507 ndr_common_header_t *hdr = &mxa->recv_hdr.common_hdr;
508 ndr_stream_t *nds = &mxa->recv_nds;
513 rc = ndr_decode_pdu_hdr(mxa);
517 (void) ndr_reply_prepare_hdr(mxa);
519 switch (mxa->ptype) {
521 rc = ndr_svc_bind(mxa);
543 rc = ndr_svc_defrag(mxa);
554 rc = ndr_svc_request(mxa);
558 rc = ndr_svc_alter_context(mxa);
568 ndr_reply_fault(mxa, rc);
570 (void) ndr_build_reply(mxa);
593 ndr_svc_defrag(ndr_xa_t *mxa)
595 ndr_stream_t *nds = &mxa->recv_nds;
625 ndr_svc_bind(ndr_xa_t *mxa)
641 cont_list = &mxa->recv_hdr.bind_hdr.p_context_elem;
642 result_list = &mxa->send_hdr.bind_ack_hdr.p_result_list;
649 sec_addr = &mxa->send_hdr.bind_ack_hdr.sec_addr;
668 if ((mbind = ndr_svc_find_binding(mxa, p_cont_id)) != NULL) {
676 if ((mbind = ndr_svc_new_binding(mxa)) == NULL) {
702 sec_addr = &mxa->send_hdr.bind_ack_hdr.sec_addr;
713 mxa->binding = mbind;
721 rc = (msvc->bind_req)(mxa);
745 ndr_svc_alter_context(ndr_xa_t *mxa)
759 result_list = &mxa->send_hdr.alter_context_rsp_hdr.p_result_list;
769 cont_list = &mxa->recv_hdr.alter_context_hdr.p_context_elem;
772 if (ndr_svc_find_binding(mxa, p_cont_id) != NULL)
775 if ((mbind = ndr_svc_new_binding(mxa)) == NULL) {
799 mxa->binding = mbind;
801 sec_addr = &mxa->send_hdr.alter_context_rsp_hdr.sec_addr;
812 ndr_svc_request(ndr_xa_t *mxa)
819 mxa->opnum = mxa->recv_hdr.request_hdr.opnum;
820 p_cont_id = mxa->recv_hdr.request_hdr.p_cont_id;
822 if ((mbind = ndr_svc_find_binding(mxa, p_cont_id)) == NULL)
825 mxa->binding = mbind;
831 mxa->send_nds.pdu_scan_offset = NDR_RSP_HDR_SIZE;
834 rc = (*msvc->call_stub)(mxa);
836 rc = ndr_generic_call_stub(mxa);
840 msvc->name, mxa->opnum, rc);
852 ndr_generic_call_stub(ndr_xa_t *mxa)
854 ndr_binding_t *mbind = mxa->binding;
858 int opnum = mxa->opnum;
863 if (mxa->heap == NULL) {
874 if ((param = ndr_heap_malloc(mxa->heap, p_len)) == NULL)
879 rc = ndr_decode_call(mxa, param);
883 rc = (*ste->func)(param, mxa);
885 rc = ndr_encode_return(mxa, param);
896 ndr_reply_prepare_hdr(ndr_xa_t *mxa)
898 ndr_common_header_t *rhdr = &mxa->recv_hdr.common_hdr;
899 ndr_common_header_t *hdr = &mxa->send_hdr.common_hdr;
916 switch (mxa->ptype) {
919 mxa->send_hdr.bind_ack_hdr.max_xmit_frag =
920 mxa->recv_hdr.bind_hdr.max_xmit_frag;
921 mxa->send_hdr.bind_ack_hdr.max_recv_frag =
922 mxa->recv_hdr.bind_hdr.max_recv_frag;
923 mxa->send_hdr.bind_ack_hdr.assoc_group_id =
924 mxa->recv_hdr.bind_hdr.assoc_group_id;
926 if (mxa->send_hdr.bind_ack_hdr.assoc_group_id == 0)
927 mxa->send_hdr.bind_ack_hdr.assoc_group_id = time(0);
933 mxa->pipe->np_max_xmit_frag =
934 mxa->recv_hdr.bind_hdr.max_xmit_frag;
935 mxa->pipe->np_max_recv_frag =
936 mxa->recv_hdr.bind_hdr.max_recv_frag;
941 /* mxa->send_hdr.response_hdr.alloc_hint */
942 mxa->send_hdr.response_hdr.p_cont_id =
943 mxa->recv_hdr.request_hdr.p_cont_id;
944 mxa->send_hdr.response_hdr.cancel_count = 0;
945 mxa->send_hdr.response_hdr.reserved = 0;
954 mxa->send_hdr.alter_context_rsp_hdr.max_xmit_frag =
955 mxa->recv_hdr.alter_context_hdr.max_xmit_frag;
956 mxa->send_hdr.alter_context_rsp_hdr.max_recv_frag =
957 mxa->recv_hdr.alter_context_hdr.max_recv_frag;
958 mxa->send_hdr.alter_context_rsp_hdr.assoc_group_id =
959 mxa->recv_hdr.alter_context_hdr.assoc_group_id;
972 ndr_reply_fault(ndr_xa_t *mxa, unsigned long drc)
974 ndr_common_header_t *rhdr = &mxa->recv_hdr.common_hdr;
975 ndr_common_header_t *hdr = &mxa->send_hdr.common_hdr;
976 ndr_stream_t *nds = &mxa->send_nds;
985 hdr->frag_length = sizeof (mxa->send_hdr.fault_hdr);
1020 mxa->send_hdr.fault_hdr.common_hdr.ptype = NDR_PTYPE_FAULT;
1021 mxa->send_hdr.fault_hdr.status = fault_status;
1022 mxa->send_hdr.response_hdr.alloc_hint = hdr->frag_length;
1030 ndr_build_reply(ndr_xa_t *mxa)
1032 ndr_common_header_t *hdr = &mxa->send_hdr.common_hdr;
1033 ndr_stream_t *nds = &mxa->send_nds;
1053 hdr->frag_length = ndr_bind_ack_hdr_size(mxa);
1062 mxa->send_hdr.response_hdr.alloc_hint =
1076 (void) ndr_encode_pdu_hdr(mxa);
1087 mxa->send_hdr.response_hdr.alloc_hint = pdu_size - NDR_RSP_HDR_SIZE;
1089 (void) ndr_encode_pdu_hdr(mxa);
1104 mxa->send_hdr.response_hdr.alloc_hint -= frag_data_size;
1118 (void) ndr_encode_pdu_hdr(mxa);