return ndr_pull_udlong(ndr, ndr_flags, v);
}
+/*
+ parse a pointer
+*/
+NTSTATUS ndr_pull_pointer(struct ndr_pull *ndr, int ndr_flags, void* *v)
+{
+ uint64_t h;
+ NTSTATUS status;
+ NDR_PULL_ALIGN(ndr, 8);
+ status = ndr_pull_udlong(ndr, ndr_flags, &h);
+ *v = (void *)((intptr_t)h);
+ return status;
+}
+
/*
pull a NTSTATUS
*/
return ndr_push_udlong(ndr, NDR_SCALARS, v);
}
+/*
+ push a pointer
+*/
+NTSTATUS ndr_push_pointer(struct ndr_push *ndr, int ndr_flags, void* v)
+{
+ NDR_PUSH_ALIGN(ndr, 8);
+ return ndr_push_udlong(ndr, NDR_SCALARS, (intptr_t)v);
+}
+
NTSTATUS ndr_push_align(struct ndr_push *ndr, size_t size)
{
NDR_PUSH_ALIGN(ndr, size);
ndr_print_dlong(ndr, name, v);
}
+void ndr_print_pointer(struct ndr_print *ndr, const char *name, void *v)
+{
+ ndr->print(ndr, "%-25s: %p", name, v);
+}
+
void ndr_print_ptr(struct ndr_print *ndr, const char *name, const void *p)
{
if (p) {