/* parser auto-generated by pidl */ #include "includes.h" NTSTATUS ndr_push_echo_AddOne(struct ndr_push *ndr, struct echo_AddOne *r) { NDR_CHECK(ndr_push_uint32(ndr, *r->in.v)); return NT_STATUS_OK; } NTSTATUS ndr_push_echo_EchoData(struct ndr_push *ndr, struct echo_EchoData *r) { NDR_CHECK(ndr_push_uint32(ndr, r->in.len)); if (r->in.in_data) { NDR_CHECK(ndr_push_uint32(ndr, r->in.len)); NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.in_data, r->in.len)); } return NT_STATUS_OK; } NTSTATUS ndr_push_echo_SinkData(struct ndr_push *ndr, struct echo_SinkData *r) { NDR_CHECK(ndr_push_uint32(ndr, r->in.len)); if (r->in.data) { NDR_CHECK(ndr_push_uint32(ndr, r->in.len)); NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.data, r->in.len)); } return NT_STATUS_OK; } NTSTATUS ndr_push_echo_SourceData(struct ndr_push *ndr, struct echo_SourceData *r) { NDR_CHECK(ndr_push_uint32(ndr, r->in.len)); return NT_STATUS_OK; } NTSTATUS ndr_push_TestCall(struct ndr_push *ndr, struct TestCall *r) { NDR_CHECK(ndr_push_uint16(ndr, r->in.level)); return NT_STATUS_OK; } NTSTATUS ndr_pull_echo_AddOne(struct ndr_pull *ndr, struct echo_AddOne *r) { NDR_CHECK(ndr_pull_uint32(ndr, r->out.v)); return NT_STATUS_OK; } NTSTATUS ndr_pull_echo_EchoData(struct ndr_pull *ndr, struct echo_EchoData *r) { if (r->out.out_data) { { uint32 _array_size; NDR_CHECK(ndr_pull_uint32(ndr, &_array_size)); if (r->in.len > _array_size) { return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should be %u", _array_size, r->in.len); } } NDR_ALLOC_N_SIZE(ndr, r->out.out_data, r->in.len, sizeof(r->out.out_data[0])); NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.out_data, r->in.len)); } return NT_STATUS_OK; } NTSTATUS ndr_pull_echo_SinkData(struct ndr_pull *ndr, struct echo_SinkData *r) { return NT_STATUS_OK; } NTSTATUS ndr_pull_echo_SourceData(struct ndr_pull *ndr, struct echo_SourceData *r) { if (r->out.data) { { uint32 _array_size; NDR_CHECK(ndr_pull_uint32(ndr, &_array_size)); if (r->in.len > _array_size) { return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should be %u", _array_size, r->in.len); } } NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.data, r->in.len)); } return NT_STATUS_OK; } NTSTATUS ndr_pull_echo_ServerRole(struct ndr_pull *ndr, int ndr_flags, struct echo_ServerRole *r) { NDR_CHECK(ndr_pull_struct_start(ndr)); if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_pull_align(ndr, 2)); NDR_CHECK(ndr_pull_uint16(ndr, &r->role)); ndr_pull_struct_end(ndr); buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; done: return NT_STATUS_OK; } NTSTATUS ndr_pull_echo_PolicyInformation(struct ndr_pull *ndr, int ndr_flags, uint16 *level, union echo_PolicyInformation *r) { if (!(ndr_flags & NDR_SCALARS)) goto buffers; NDR_CHECK(ndr_pull_struct_start(ndr)); NDR_CHECK(ndr_pull_uint16(ndr, level)); switch (*level) { case 6: { NDR_CHECK(ndr_pull_echo_ServerRole(ndr, NDR_SCALARS, &r->role)); break; } default: return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", *level); } ndr_pull_struct_end(ndr); buffers: if (!(ndr_flags & NDR_BUFFERS)) goto done; switch (*level) { case 6: NDR_CHECK(ndr_pull_echo_ServerRole(ndr, NDR_BUFFERS, &r->role)); break; default: return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", *level); } done: return NT_STATUS_OK; } NTSTATUS ndr_pull_TestCall(struct ndr_pull *ndr, struct TestCall *r) { uint32 _ptr_info; NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_info)); if (_ptr_info) { NDR_ALLOC(ndr, r->out.info); } else { r->out.info = NULL; } if (r->out.info) { { uint16 _level = r->in.level; NDR_CHECK(ndr_pull_echo_PolicyInformation(ndr, NDR_SCALARS|NDR_BUFFERS, &_level, r->out.info)); if (((NDR_SCALARS|NDR_BUFFERS) & NDR_SCALARS) && (_level != r->in.level)) return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u in info"); } } return NT_STATUS_OK; } void ndr_print_echo_AddOne(struct ndr_print *ndr, const char *name, int flags, struct echo_AddOne *r) { ndr_print_struct(ndr, name, "echo_AddOne"); ndr->depth++; if (flags & NDR_IN) { ndr_print_struct(ndr, "in", "echo_AddOne"); ndr->depth++; ndr_print_ptr(ndr, "v", r->in.v); ndr->depth++; ndr_print_uint32(ndr, "v", *r->in.v); ndr->depth--; ndr->depth--; } if (flags & NDR_OUT) { ndr_print_struct(ndr, "out", "echo_AddOne"); ndr->depth++; ndr_print_ptr(ndr, "v", r->out.v); ndr->depth++; ndr_print_uint32(ndr, "v", *r->out.v); ndr->depth--; ndr->depth--; } ndr->depth--; } void ndr_print_echo_EchoData(struct ndr_print *ndr, const char *name, int flags, struct echo_EchoData *r) { ndr_print_struct(ndr, name, "echo_EchoData"); ndr->depth++; if (flags & NDR_IN) { ndr_print_struct(ndr, "in", "echo_EchoData"); ndr->depth++; ndr_print_uint32(ndr, "len", r->in.len); ndr_print_ptr(ndr, "in_data", r->in.in_data); ndr->depth++; ndr_print_array_uint8(ndr, "in_data", r->in.in_data, r->in.len); ndr->depth--; ndr->depth--; } if (flags & NDR_OUT) { ndr_print_struct(ndr, "out", "echo_EchoData"); ndr->depth++; ndr_print_ptr(ndr, "out_data", r->out.out_data); ndr->depth++; ndr_print_array_uint8(ndr, "out_data", r->out.out_data, r->in.len); ndr->depth--; ndr->depth--; } ndr->depth--; } void ndr_print_echo_SinkData(struct ndr_print *ndr, const char *name, int flags, struct echo_SinkData *r) { ndr_print_struct(ndr, name, "echo_SinkData"); ndr->depth++; if (flags & NDR_IN) { ndr_print_struct(ndr, "in", "echo_SinkData"); ndr->depth++; ndr_print_uint32(ndr, "len", r->in.len); ndr_print_ptr(ndr, "data", r->in.data); ndr->depth++; ndr_print_array_uint8(ndr, "data", r->in.data, r->in.len); ndr->depth--; ndr->depth--; } if (flags & NDR_OUT) { ndr_print_struct(ndr, "out", "echo_SinkData"); ndr->depth++; ndr->depth--; } ndr->depth--; } void ndr_print_echo_SourceData(struct ndr_print *ndr, const char *name, int flags, struct echo_SourceData *r) { ndr_print_struct(ndr, name, "echo_SourceData"); ndr->depth++; if (flags & NDR_IN) { ndr_print_struct(ndr, "in", "echo_SourceData"); ndr->depth++; ndr_print_uint32(ndr, "len", r->in.len); ndr->depth--; } if (flags & NDR_OUT) { ndr_print_struct(ndr, "out", "echo_SourceData"); ndr->depth++; ndr_print_ptr(ndr, "data", r->out.data); ndr->depth++; ndr_print_array_uint8(ndr, "data", r->out.data, r->in.len); ndr->depth--; ndr->depth--; } ndr->depth--; } void ndr_print_echo_ServerRole(struct ndr_print *ndr, const char *name, struct echo_ServerRole *r) { ndr_print_struct(ndr, name, "echo_ServerRole"); ndr->depth++; ndr_print_uint16(ndr, "role", r->role); ndr->depth--; } void ndr_print_echo_PolicyInformation(struct ndr_print *ndr, const char *name, uint16 level, union echo_PolicyInformation *r) { ndr_print_union(ndr, name, level, "echo_PolicyInformation"); switch (level) { case 6: ndr_print_echo_ServerRole(ndr, "role", &r->role); break; default: ndr_print_bad_level(ndr, name, level); } } void ndr_print_TestCall(struct ndr_print *ndr, const char *name, int flags, struct TestCall *r) { ndr_print_struct(ndr, name, "TestCall"); ndr->depth++; if (flags & NDR_IN) { ndr_print_struct(ndr, "in", "TestCall"); ndr->depth++; ndr_print_uint16(ndr, "level", r->in.level); ndr->depth--; } if (flags & NDR_OUT) { ndr_print_struct(ndr, "out", "TestCall"); ndr->depth++; ndr_print_ptr(ndr, "info", r->out.info); ndr->depth++; if (r->out.info) { ndr_print_echo_PolicyInformation(ndr, "info", r->in.level, r->out.info); } ndr->depth--; ndr->depth--; } ndr->depth--; }