Lines Matching defs:outer_ref

293 	ndr_ref_t *outer_ref = 0;
321 NDR_SET_ERROR(outer_ref, error);
329 NDR_SET_ERROR(outer_ref, error);
335 NDR_SET_ERROR(outer_ref, error);
353 NDR_SET_ERROR(outer_ref, error);
357 outer_ref = ndr_enter_outer_queue(top_ref);
358 if (!outer_ref)
369 outer_ref->inner_flags = top_ref->inner_flags;
370 outer_ref->outer_flags = 0;
371 outer_ref->datum = top_ref->datum;
374 if (!ndr_outer_align(outer_ref))
378 outer_ref->pdu_offset = nds->pdu_scan_offset;
380 rc = ndr_outer_grow(outer_ref, n_fixed);
384 outer_ref->pdu_end_offset = outer_ref->pdu_offset + n_fixed;
387 nds->outer_current = outer_ref;
389 nds->pdu_scan_offset = outer_ref->pdu_end_offset;
392 rc = ndr_inner(outer_ref);
396 nds->pdu_scan_offset = outer_ref->pdu_end_offset;
407 ndr_ref_t *outer_ref;
410 outer_ref = (ndr_ref_t *)NDS_MALLOC(nds, sizeof (*outer_ref), arg_ref);
411 if (!outer_ref) {
416 *outer_ref = *arg_ref;
419 outer_ref->outer_flags = arg_ref->inner_flags & NDR_F_PARAMS_MASK;
420 outer_ref->inner_flags = 0;
421 outer_ref->enclosing = nds->outer_current;
422 outer_ref->backptr = 0;
423 outer_ref->datum = 0;
427 outer_ref->next = *nds->outer_queue_tailp;
428 *nds->outer_queue_tailp = outer_ref;
429 nds->outer_queue_tailp = &outer_ref->next;
430 return (outer_ref);
588 ndr_outer(ndr_ref_t *outer_ref)
590 ndr_stream_t *nds = outer_ref->stream;
591 ndr_typeinfo_t *ti = outer_ref->ti;
598 params = outer_ref->outer_flags & NDR_F_PARAMS_MASK;
600 NDR_TATTLE(outer_ref, "--OUTER--");
603 if (!ndr_outer_align(outer_ref))
607 outer_ref->pdu_offset = nds->pdu_scan_offset;
611 NDR_SET_ERROR(outer_ref, error);
618 return (ndr_outer_string(outer_ref));
620 return (ndr_outer_conformant_construct(outer_ref));
622 return (ndr_outer_fixed(outer_ref));
634 return (ndr_outer_conformant_array(outer_ref));
636 return (ndr_outer_fixed_array(outer_ref));
647 NDR_SET_ERROR(outer_ref, error);
652 ndr_outer_fixed(ndr_ref_t *outer_ref)
654 ndr_stream_t *nds = outer_ref->stream;
655 ndr_typeinfo_t *ti = outer_ref->ti;
669 params = outer_ref->outer_flags & NDR_F_PARAMS_MASK;
690 rc = ndr_outer_grow(outer_ref, n_pdu_total);
696 valp = outer_ref->datum;
698 NDR_SET_ERROR(outer_ref, NDR_ERR_OUTER_PARAMS_BAD);
701 if (outer_ref->backptr)
702 assert(valp == *outer_ref->backptr);
706 valp = NDS_MALLOC(nds, n_alloc, outer_ref);
708 NDR_SET_ERROR(outer_ref, NDR_ERR_MALLOC_FAILED);
711 if (outer_ref->backptr)
712 *outer_ref->backptr = valp;
713 outer_ref->datum = valp;
717 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
723 myref.enclosing = outer_ref;
724 myref.ti = outer_ref->ti;
725 myref.datum = outer_ref->datum;
730 myref.pdu_offset = outer_ref->pdu_offset;
731 outer_ref->pdu_end_offset = outer_ref->pdu_offset + n_pdu_total;
737 nds->pdu_scan_offset = outer_ref->pdu_end_offset;
742 ndr_outer_fixed_array(ndr_ref_t *outer_ref)
744 ndr_stream_t *nds = outer_ref->stream;
745 ndr_typeinfo_t *ti = outer_ref->ti;
759 params = outer_ref->outer_flags & NDR_F_PARAMS_MASK;
768 n_fixed = ti->pdu_size_fixed_part * outer_ref->dimension_is;
780 rc = ndr_outer_grow(outer_ref, n_pdu_total);
786 valp = outer_ref->datum;
788 NDR_SET_ERROR(outer_ref, NDR_ERR_OUTER_PARAMS_BAD);
791 if (outer_ref->backptr)
792 assert(valp == *outer_ref->backptr);
796 valp = NDS_MALLOC(nds, n_alloc, outer_ref);
798 NDR_SET_ERROR(outer_ref, NDR_ERR_MALLOC_FAILED);
801 if (outer_ref->backptr)
802 *outer_ref->backptr = valp;
803 outer_ref->datum = valp;
807 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
813 myref.enclosing = outer_ref;
814 myref.ti = outer_ref->ti;
815 myref.datum = outer_ref->datum;
819 myref.dimension_is = outer_ref->dimension_is;
821 myref.pdu_offset = outer_ref->pdu_offset;
822 outer_ref->pdu_end_offset = outer_ref->pdu_offset + n_pdu_total;
828 nds->pdu_scan_offset = outer_ref->pdu_end_offset;
833 ndr_outer_conformant_array(ndr_ref_t *outer_ref)
835 ndr_stream_t *nds = outer_ref->stream;
836 ndr_typeinfo_t *ti = outer_ref->ti;
852 params = outer_ref->outer_flags & NDR_F_PARAMS_MASK;
865 n_variable = ti->pdu_size_fixed_part * outer_ref->size_is;
873 rc = ndr_outer_grow(outer_ref, n_pdu_total);
879 size_is = outer_ref->size_is;
880 rc = ndr_outer_poke_sizing(outer_ref, 0, &size_is);
884 valp = outer_ref->datum;
886 NDR_SET_ERROR(outer_ref, NDR_ERR_OUTER_PARAMS_BAD);
889 if (outer_ref->backptr)
890 assert(valp == *outer_ref->backptr);
896 size_is = outer_ref->size_is;
900 rc = ndr_outer_peek_sizing(outer_ref, 0, &size_is);
904 if (size_is != outer_ref->size_is) {
905 NDR_SET_ERROR(outer_ref,
914 valp = NDS_MALLOC(nds, n_alloc, outer_ref);
916 NDR_SET_ERROR(outer_ref, NDR_ERR_MALLOC_FAILED);
921 if (outer_ref->backptr)
922 *outer_ref->backptr = valp;
923 outer_ref->datum = valp;
927 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
931 outer_ref->pdu_end_offset = outer_ref->pdu_offset + n_pdu_total;
932 outer_ref->type_flags = NDR_F_NONE;
933 outer_ref->inner_flags = NDR_F_NONE;
938 myref.enclosing = outer_ref;
939 myref.ti = outer_ref->ti;
940 myref.datum = outer_ref->datum;
944 myref.size_is = outer_ref->size_is;
947 myref.dimension_is = outer_ref->size_is; /* convenient */
949 myref.pdu_offset = outer_ref->pdu_offset + n_ptr_offset;
956 nds->pdu_scan_offset = outer_ref->pdu_end_offset;
961 ndr_outer_conformant_construct(ndr_ref_t *outer_ref)
963 ndr_stream_t *nds = outer_ref->stream;
964 ndr_typeinfo_t *ti = outer_ref->ti;
979 params = outer_ref->outer_flags & NDR_F_PARAMS_MASK;
1000 rc = ndr_outer_grow(outer_ref, n_pdu_total);
1012 rc = ndr_outer_poke_sizing(outer_ref, 0, &size_is);
1016 valp = outer_ref->datum;
1018 NDR_SET_ERROR(outer_ref, NDR_ERR_OUTER_PARAMS_BAD);
1021 if (outer_ref->backptr)
1022 assert(valp == *outer_ref->backptr);
1032 rc = ndr_outer_peek_sizing(outer_ref, 0, &size_is);
1041 rc = ndr_outer_grow(outer_ref, n_pdu_total);
1045 outer_ref->size_is = size_is; /* verified later */
1047 valp = NDS_MALLOC(nds, n_alloc, outer_ref);
1049 NDR_SET_ERROR(outer_ref, NDR_ERR_MALLOC_FAILED);
1052 if (outer_ref->backptr)
1053 *outer_ref->backptr = valp;
1054 outer_ref->datum = valp;
1058 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
1062 outer_ref->pdu_end_offset = outer_ref->pdu_offset + n_pdu_total;
1063 outer_ref->type_flags = NDR_F_SIZE_IS; /* indicate pending */
1064 outer_ref->inner_flags = NDR_F_NONE; /* indicate pending */
1068 myref.enclosing = outer_ref;
1069 myref.ti = outer_ref->ti;
1070 myref.datum = outer_ref->datum;
1074 myref.size_is = outer_ref->size_is;
1076 myref.pdu_offset = outer_ref->pdu_offset + 4;
1082 nds->pdu_scan_offset = outer_ref->pdu_end_offset;
1084 if (outer_ref->inner_flags != NDR_F_SIZE_IS) {
1096 ndr_ref_t *outer_ref = nds->outer_current;
1097 ndr_typeinfo_t *ti = outer_ref->ti;
1108 if (outer_ref->type_flags != NDR_F_SIZE_IS) {
1113 if (outer_ref->inner_flags & NDR_F_SIZE_IS) {
1124 rc = ndr_outer_grow(outer_ref, n_pdu_total);
1134 rc = ndr_outer_poke_sizing(outer_ref, 0, &size_is);
1145 if (size_is != outer_ref->size_is) {
1152 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
1156 outer_ref->inner_flags |= NDR_F_SIZE_IS;
1157 outer_ref->size_is = ref->size_is;
1162 ndr_outer_string(ndr_ref_t *outer_ref)
1164 ndr_stream_t *nds = outer_ref->stream;
1165 ndr_typeinfo_t *ti = outer_ref->ti;
1184 params = outer_ref->outer_flags & NDR_F_PARAMS_MASK;
1195 if (!ndr_outer_grow(outer_ref, n_hdr))
1200 valp = outer_ref->datum;
1202 NDR_SET_ERROR(outer_ref, NDR_ERR_OUTER_PARAMS_BAD);
1206 if (outer_ref->backptr)
1207 assert(valp == *outer_ref->backptr);
1221 NDR_SET_ERROR(outer_ref, NDR_ERR_STRLEN);
1225 valp = outer_ref->datum;
1239 NDR_SET_ERROR(outer_ref, NDR_ERR_STRLEN);
1252 if (!ndr_outer_poke_sizing(outer_ref, 0, &size_is) ||
1253 !ndr_outer_poke_sizing(outer_ref, 4, &first_is) ||
1254 !ndr_outer_poke_sizing(outer_ref, 8, &length_is))
1259 if (!ndr_outer_peek_sizing(outer_ref, 0, &size_is) ||
1260 !ndr_outer_peek_sizing(outer_ref, 4, &first_is) ||
1261 !ndr_outer_peek_sizing(outer_ref, 8, &length_is))
1280 NDR_SET_ERROR(outer_ref, NDR_ERR_STRING_SIZING);
1296 valp = NDS_MALLOC(nds, n_alloc, outer_ref);
1298 NDR_SET_ERROR(outer_ref, NDR_ERR_MALLOC_FAILED);
1304 if (outer_ref->backptr)
1305 *outer_ref->backptr = valp;
1306 outer_ref->datum = valp;
1310 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
1331 rc = ndr_outer_grow(outer_ref, n_pdu_total);
1338 myref.enclosing = outer_ref;
1339 myref.ti = outer_ref->ti;
1340 myref.datum = outer_ref->datum;
1352 myref.pdu_offset = outer_ref->pdu_offset + 12;
1358 nds->pdu_scan_offset = outer_ref->pdu_end_offset;
1368 nds->pdu_scan_offset = outer_ref->pdu_end_offset;
1373 ndr_outer_peek_sizing(ndr_ref_t *outer_ref, unsigned offset,
1376 ndr_stream_t *nds = outer_ref->stream;
1380 pdu_offset = outer_ref->pdu_offset + offset;
1385 NDR_SET_ERROR(outer_ref, NDR_ERR_BOUNDS_CHECK);
1391 NDR_SET_ERROR(outer_ref, NDR_ERR_UNIMPLEMENTED);
1396 nds->swap, outer_ref);
1400 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
1408 ndr_outer_poke_sizing(ndr_ref_t *outer_ref, unsigned offset,
1411 ndr_stream_t *nds = outer_ref->stream;
1415 pdu_offset = outer_ref->pdu_offset + offset;
1420 NDR_SET_ERROR(outer_ref, NDR_ERR_BOUNDS_CHECK);
1427 nds->swap, outer_ref);
1431 NDR_SET_ERROR(outer_ref, NDR_ERR_UNIMPLEMENTED);
1435 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
1448 ndr_outer_align(ndr_ref_t *outer_ref)
1450 ndr_stream_t *nds = outer_ref->stream;
1455 if (outer_ref->packed_alignment && outer_ref->ti != &ndt_s_wchar) {
1456 align = outer_ref->ti->alignment;
1465 if (!ndr_outer_grow(outer_ref, n_pad))
1470 rc = NDS_PAD_PDU(nds, nds->pdu_scan_offset, n_pad, outer_ref);
1472 NDR_SET_ERROR(outer_ref, NDR_ERR_PAD_FAILED);
1481 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
1490 ndr_outer_grow(ndr_ref_t *outer_ref, unsigned n_total)
1492 ndr_stream_t *nds = outer_ref->stream;
1506 rc = NDS_GROW_PDU(nds, pdu_want_size, outer_ref);
1508 NDR_SET_ERROR(outer_ref, NDR_ERR_GROW_FAILED);
1516 NDR_SET_ERROR(outer_ref, NDR_ERR_UNDERFLOW);
1520 NDR_SET_ERROR(outer_ref, NDR_ERR_M_OP_INVALID);
1527 outer_ref->pdu_end_offset = pdu_want_size;
1623 ndr_ref_t *outer_ref;
1630 outer_ref = ndr_enter_outer_queue(arg_ref);
1631 if (!outer_ref)
1638 outer_ref->outer_flags = arg_ref->inner_flags & NDR_F_PARAMS_MASK;
1639 if ((outer_ref->outer_flags & NDR_F_SIZE_IS) == 0)
1640 outer_ref->outer_flags &= ~NDR_F_IS_POINTER;
1642 outer_ref->outer_flags |= NDR_F_BACKPTR;
1643 if (outer_ref->outer_flags & NDR_F_SIZE_IS) {
1644 outer_ref->outer_flags |= NDR_F_ARRAY+NDR_F_CONFORMANT;
1648 outer_ref->backptr = valpp;
1652 outer_ref->datum = *valpp;
1662 outer_ref->datum = 0;
1675 ndr_ref_t *outer_ref;
1677 outer_ref = ndr_enter_outer_queue(arg_ref);
1678 if (!outer_ref)
1685 outer_ref->outer_flags = arg_ref->inner_flags & NDR_F_PARAMS_MASK;
1686 if ((outer_ref->outer_flags & NDR_F_SIZE_IS) == 0)
1687 outer_ref->outer_flags &= ~NDR_F_IS_REFERENCE;
1689 outer_ref->outer_flags |= NDR_F_BACKPTR;
1690 if (outer_ref->outer_flags & NDR_F_SIZE_IS) {
1691 outer_ref->outer_flags |= NDR_F_ARRAY+NDR_F_CONFORMANT;
1695 outer_ref->backptr = valpp;
1699 outer_ref->datum = *valpp;
1709 outer_ref->datum = 0;